cairo_lang_semantic/items/
implization.rs

1use cairo_lang_defs::ids::{ImplDefId, TraitTypeId};
2use cairo_lang_diagnostics::Maybe;
3
4use crate::TypeId;
5use crate::db::SemanticGroup;
6
7/// Query implementation of [crate::db::SemanticGroup::trait_type_implized_by_context].
8pub fn trait_type_implized_by_context(
9    db: &dyn SemanticGroup,
10    trait_type_id: TraitTypeId,
11    impl_def_id: ImplDefId,
12) -> Maybe<TypeId> {
13    let impl_type_def_id = db.impl_type_by_trait_type(impl_def_id, trait_type_id)?;
14
15    db.impl_type_def_resolved_type(impl_type_def_id)
16}
17
18/// Cycle handling for [crate::db::SemanticGroup::trait_type_implized_by_context].
19pub fn trait_type_implized_by_context_cycle(
20    db: &dyn SemanticGroup,
21    _cycle: &salsa::Cycle,
22    trait_type_id: &TraitTypeId,
23    impl_def_id: &ImplDefId,
24) -> Maybe<TypeId> {
25    // Forwarding cycle handling to `priv_impl_type_semantic_data` handler.
26    trait_type_implized_by_context(db, *trait_type_id, *impl_def_id)
27}