diff --git a/Codegen.jai b/Codegen.jai index 1956ecb..ba178ea 100644 --- a/Codegen.jai +++ b/Codegen.jai @@ -277,10 +277,12 @@ emit_node :: (state : *Codegen_State, node : *AST_Node, indentation : int) { case .Variable; { indent(*state.builder, indentation); + type_var := h2tv(state.type_variables, node.type_variable); + print("type: %\n", type_var.typename); is_properties := node.name == "properties"; if !is_properties { - print_to_builder(*state.builder, "%", node.name); + print_to_builder(*state.builder, "%", node.name); } if node.children.count > 0 { diff --git a/Semantic_Analysis.jai b/Semantic_Analysis.jai index 2a5e31c..2fe5ca3 100644 --- a/Semantic_Analysis.jai +++ b/Semantic_Analysis.jai @@ -920,7 +920,7 @@ declare_properties :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Va name := ifx node.name.count == 0 then "properties" else node.name; type_var := declare_struct(checker, node, name); var := h2tv(checker, type_var); - var.typename = name; + var.typename = "properties"; var.buffer_index = 0; return type_var; } @@ -1204,7 +1204,11 @@ create_variable :: (checker : *Semantic_Checker, node : *AST_Node, field_parent field_access_on_primitive_type(checker, node, find_result.type_variable); return 0; } else { - struct_symbol := find_symbol(checker, variable.typename, checker.current_scope); + lookup_name : string; + if variable.typename == "properties" { + lookup_name = variable.name; + } + struct_symbol := find_symbol(checker, lookup_name, checker.current_scope); type_variable := h2tv(checker, struct_symbol.type_variable); previous_scope := use_scope(checker, type_variable.scope);