@@ -46,6 +46,7 @@ pub const DeclarationLowerer = struct {
4646 error_handler : ? * const @import ("error_handling.zig" ).ErrorHandler ,
4747 ora_dialect : * @import ("dialect.zig" ).OraDialect ,
4848 symbol_table : ? * @import ("lower.zig" ).SymbolTable = null ,
49+ builtin_registry : ? * const lib.semantics.builtins.BuiltinRegistry = null ,
4950
5051 pub fn init (ctx : c.MlirContext , type_mapper : * const TypeMapper , locations : LocationTracker , ora_dialect : * @import ("dialect.zig" ).OraDialect ) DeclarationLowerer {
5152 return .{
@@ -77,14 +78,15 @@ pub const DeclarationLowerer = struct {
7778 };
7879 }
7980
80- pub fn withErrorHandlerAndDialectAndSymbolTable (ctx : c.MlirContext , type_mapper : * const TypeMapper , locations : LocationTracker , error_handler : * const @import ("error_handling.zig" ).ErrorHandler , ora_dialect : * @import ("dialect.zig" ).OraDialect , symbol_table : * @import ("lower.zig" ).SymbolTable ) DeclarationLowerer {
81+ pub fn withErrorHandlerAndDialectAndSymbolTable (ctx : c.MlirContext , type_mapper : * const TypeMapper , locations : LocationTracker , error_handler : * const @import ("error_handling.zig" ).ErrorHandler , ora_dialect : * @import ("dialect.zig" ).OraDialect , symbol_table : * @import ("lower.zig" ).SymbolTable , builtin_registry : ? * const lib . semantics . builtins . BuiltinRegistry ) DeclarationLowerer {
8182 return .{
8283 .ctx = ctx ,
8384 .type_mapper = type_mapper ,
8485 .locations = locations ,
8586 .error_handler = error_handler ,
8687 .ora_dialect = ora_dialect ,
8788 .symbol_table = symbol_table ,
89+ .builtin_registry = builtin_registry ,
8890 };
8991 }
9092
@@ -784,7 +786,7 @@ pub const DeclarationLowerer = struct {
784786
785787 // Lower the constant value expression
786788 // Create a temporary expression lowerer to lower the constant value
787- const expr_lowerer = ExpressionLowerer .init (self .ctx , block , self .type_mapper , null , null , null , null , self .locations , self .ora_dialect );
789+ const expr_lowerer = ExpressionLowerer .init (self .ctx , block , self .type_mapper , null , null , null , null , self .builtin_registry , self . locations , self .ora_dialect );
788790 _ = expr_lowerer .lowerExpression (const_decl .value );
789791
790792 return c .mlirOperationCreate (& state );
@@ -917,15 +919,15 @@ pub const DeclarationLowerer = struct {
917919 fn lowerFunctionBody (self : * const DeclarationLowerer , func : * const lib.FunctionNode , block : c.MlirBlock , param_map : * const ParamMap , storage_map : ? * const StorageMap , local_var_map : ? * LocalVarMap ) LoweringError ! void {
918920 // Create a statement lowerer for this function
919921 const const_local_var_map = if (local_var_map ) | lvm | @as (* const LocalVarMap , lvm ) else null ;
920- const expr_lowerer = ExpressionLowerer .init (self .ctx , block , self .type_mapper , param_map , storage_map , const_local_var_map , self .symbol_table , self .locations , self .ora_dialect );
922+ const expr_lowerer = ExpressionLowerer .init (self .ctx , block , self .type_mapper , param_map , storage_map , const_local_var_map , self .symbol_table , self .builtin_registry , self . locations , self .ora_dialect );
921923
922924 // Get the function's return type
923925 const function_return_type = if (func .return_type_info ) | ret_info |
924926 self .type_mapper .toMlirType (ret_info )
925927 else
926928 null ;
927929
928- const stmt_lowerer = StatementLowerer .init (self .ctx , block , self .type_mapper , & expr_lowerer , param_map , storage_map , local_var_map , self .locations , self .symbol_table , std .heap .page_allocator , function_return_type , self .ora_dialect );
930+ const stmt_lowerer = StatementLowerer .init (self .ctx , block , self .type_mapper , & expr_lowerer , param_map , storage_map , local_var_map , self .locations , self .symbol_table , self . builtin_registry , std .heap .page_allocator , function_return_type , self .ora_dialect );
929931
930932 // Lower the function body
931933 try stmt_lowerer .lowerBlockBody (func .body , block );
@@ -934,7 +936,7 @@ pub const DeclarationLowerer = struct {
934936 /// Lower requires clauses as precondition assertions with enhanced verification metadata (Requirements 6.4)
935937 fn lowerRequiresClauses (self : * const DeclarationLowerer , requires_clauses : []* lib.ast.Expressions.ExprNode , block : c.MlirBlock , param_map : * const ParamMap , storage_map : ? * const StorageMap , local_var_map : ? * LocalVarMap ) LoweringError ! void {
936938 const const_local_var_map = if (local_var_map ) | lvm | @as (* const LocalVarMap , lvm ) else null ;
937- const expr_lowerer = ExpressionLowerer .init (self .ctx , block , self .type_mapper , param_map , storage_map , const_local_var_map , self .symbol_table , self .locations , self .ora_dialect );
939+ const expr_lowerer = ExpressionLowerer .init (self .ctx , block , self .type_mapper , param_map , storage_map , const_local_var_map , self .symbol_table , self .builtin_registry , self . locations , self .ora_dialect );
938940
939941 for (requires_clauses , 0.. ) | clause , i | {
940942 // Lower the requires expression
@@ -986,7 +988,7 @@ pub const DeclarationLowerer = struct {
986988 /// Lower ensures clauses as postcondition assertions with enhanced verification metadata (Requirements 6.5)
987989 fn lowerEnsuresClauses (self : * const DeclarationLowerer , ensures_clauses : []* lib.ast.Expressions.ExprNode , block : c.MlirBlock , param_map : * const ParamMap , storage_map : ? * const StorageMap , local_var_map : ? * LocalVarMap ) LoweringError ! void {
988990 const const_local_var_map = if (local_var_map ) | lvm | @as (* const LocalVarMap , lvm ) else null ;
989- const expr_lowerer = ExpressionLowerer .init (self .ctx , block , self .type_mapper , param_map , storage_map , const_local_var_map , self .symbol_table , self .locations , self .ora_dialect );
991+ const expr_lowerer = ExpressionLowerer .init (self .ctx , block , self .type_mapper , param_map , storage_map , const_local_var_map , self .symbol_table , self .builtin_registry , self . locations , self .ora_dialect );
990992
991993 for (ensures_clauses , 0.. ) | clause , i | {
992994 // Lower the ensures expression
0 commit comments