From 9d3e906957d59dd31effa1fb72f28e6d23c1984a Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Mon, 11 May 2026 13:05:31 -0500 Subject: [PATCH] Push constructor IrFunction in class lowering. WIP. --- dmc-lib/src/ast/class.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/dmc-lib/src/ast/class.rs b/dmc-lib/src/ast/class.rs index 673ffa8..0aa14e6 100644 --- a/dmc-lib/src/ast/class.rs +++ b/dmc-lib/src/ast/class.rs @@ -17,9 +17,9 @@ use crate::error_codes::{FIELD_MULTIPLE_INIT, FIELD_UNINIT}; use crate::ir::ir_class::{IrClass, IrField}; use crate::ir::ir_function::IrFunction; use crate::source_range::SourceRange; -use crate::symbol::Symbol; use crate::symbol::class_symbol::ClassSymbol; use crate::symbol::constructor_symbol::ConstructorSymbol; +use crate::symbol::Symbol; use crate::symbol_table::SymbolTable; use crate::type_info::TypeInfo; use crate::types_table::TypesTable; @@ -544,8 +544,19 @@ impl Class { ) -> (IrClass, Vec) { let mut ir_functions = Vec::new(); + let self_class_symbol = nodes_to_symbols + .get(&self.node_id) + .unwrap() + .unwrap_class_symbol(); + if let Some(constructor) = &self.constructor { - // todo + ir_functions.push(constructor.lower_to_ir( + self_class_symbol, + &self.fields, + nodes_to_symbols, + symbols_to_types, + nodes_to_types, + )); } for function in &self.functions { @@ -557,11 +568,6 @@ impl Class { )); } - let self_class_symbol = nodes_to_symbols - .get(&self.node_id) - .unwrap() - .unwrap_class_symbol(); - let ir_class = IrClass::new( self_class_symbol.declared_name_owned(), fqn_parts_to_string(self_class_symbol.fqn_parts()).into(),