cairo_lang_sierra_generator/
lib.rs1use db::{SierraGenGroup, SierraGeneratorTypeLongId};
5
6mod ap_change;
7mod ap_tracking;
8mod block_generator;
9pub mod canonical_id_replacer;
10pub mod db;
11pub mod executables;
12mod expr_generator_context;
13mod extra_sierra_info;
14mod function_generator;
15#[cfg(any(feature = "testing", test))]
16pub mod function_generator_test_utils;
17mod id_allocator;
18mod lifetime;
19mod local_variables;
20mod next_statement_index_fetch;
21pub mod pre_sierra;
22pub mod program_generator;
23pub mod replace_ids;
24mod resolve_labels;
25mod specialization_context;
26pub mod statements_code_locations;
27pub mod statements_functions;
28pub mod statements_locations;
29mod store_variables;
30#[cfg(any(feature = "testing", test))]
31pub mod test_utils;
32mod types;
33mod utils;
34
35impl<'a>
36 cairo_lang_utils::LookupIntern<
37 'a,
38 dyn SierraGenGroup + 'a,
39 cairo_lang_sierra::program::ConcreteLibfuncLongId,
40 > for cairo_lang_sierra::ids::ConcreteLibfuncId
41{
42 fn lookup_intern(
43 &self,
44 db: &(impl cairo_lang_utils::Upcast<dyn SierraGenGroup + 'a> + ?Sized),
45 ) -> cairo_lang_sierra::program::ConcreteLibfuncLongId {
46 SierraGenGroup::lookup_intern_concrete_lib_func(db.upcast(), self.clone())
47 }
48}
49
50impl<'a>
51 cairo_lang_utils::LookupIntern<
52 'a,
53 dyn SierraGenGroup + 'a,
54 cairo_lang_lowering::ids::FunctionId,
55 > for cairo_lang_sierra::ids::FunctionId
56{
57 fn lookup_intern(
58 &self,
59 db: &(impl cairo_lang_utils::Upcast<dyn SierraGenGroup + 'a> + ?Sized),
60 ) -> cairo_lang_lowering::ids::FunctionId {
61 SierraGenGroup::lookup_intern_sierra_function(db.upcast(), self.clone())
62 }
63}
64
65impl<'a> cairo_lang_utils::LookupIntern<'a, dyn SierraGenGroup + 'a, SierraGeneratorTypeLongId>
66 for cairo_lang_sierra::ids::ConcreteTypeId
67{
68 fn lookup_intern(
69 &self,
70 db: &(impl cairo_lang_utils::Upcast<dyn SierraGenGroup + 'a> + ?Sized),
71 ) -> SierraGeneratorTypeLongId {
72 SierraGenGroup::lookup_intern_concrete_type(db.upcast(), self.clone())
73 }
74}
75
76impl<'a>
77 cairo_lang_utils::Intern<'a, dyn SierraGenGroup + 'a, cairo_lang_sierra::ids::ConcreteLibfuncId>
78 for cairo_lang_sierra::program::ConcreteLibfuncLongId
79{
80 fn intern(
81 self,
82 db: &(impl cairo_lang_utils::Upcast<dyn SierraGenGroup + 'a> + ?Sized),
83 ) -> cairo_lang_sierra::ids::ConcreteLibfuncId {
84 SierraGenGroup::intern_concrete_lib_func(db.upcast(), self)
85 }
86}
87
88impl<'a> cairo_lang_utils::Intern<'a, dyn SierraGenGroup + 'a, cairo_lang_sierra::ids::FunctionId>
89 for cairo_lang_lowering::ids::FunctionId
90{
91 fn intern(
92 self,
93 db: &(impl cairo_lang_utils::Upcast<dyn SierraGenGroup + 'a> + ?Sized),
94 ) -> cairo_lang_sierra::ids::FunctionId {
95 SierraGenGroup::intern_sierra_function(db.upcast(), self)
96 }
97}
98
99impl<'a>
100 cairo_lang_utils::Intern<'a, dyn SierraGenGroup + 'a, cairo_lang_sierra::ids::ConcreteTypeId>
101 for SierraGeneratorTypeLongId
102{
103 fn intern(
104 self,
105 db: &(impl cairo_lang_utils::Upcast<dyn SierraGenGroup + 'a> + ?Sized),
106 ) -> cairo_lang_sierra::ids::ConcreteTypeId {
107 SierraGenGroup::intern_concrete_type(db.upcast(), self)
108 }
109}