| ... | @@ -95,7 +95,7 @@ static AstNode *first_executing_node(AstNode *node) { | ... | @@ -95,7 +95,7 @@ static AstNode *first_executing_node(AstNode *node) { |
| 95 | case NodeTypeBreak: | 95 | case NodeTypeBreak: |
| 96 | case NodeTypeContinue: | 96 | case NodeTypeContinue: |
| 97 | case NodeTypeAsmExpr: | 97 | case NodeTypeAsmExpr: |
| 98 | case NodeTypeStructDecl: | 98 | case NodeTypeContainerDecl: |
| 99 | case NodeTypeStructField: | 99 | case NodeTypeStructField: |
| 100 | case NodeTypeStructValueField: | 100 | case NodeTypeStructValueField: |
| 101 | case NodeTypeWhileExpr: | 101 | case NodeTypeWhileExpr: |
| ... | @@ -1505,7 +1505,7 @@ static void preview_generic_fn_proto(CodeGen *g, ImportTableEntry *import, AstNo | ... | @@ -1505,7 +1505,7 @@ static void preview_generic_fn_proto(CodeGen *g, ImportTableEntry *import, AstNo |
| 1505 | } | 1505 | } |
| 1506 | | 1506 | |
| 1507 | node->data.fn_proto.generic_fn_type = get_generic_fn_type(g, node); | 1507 | node->data.fn_proto.generic_fn_type = get_generic_fn_type(g, node); |
| 1508 | } else if (node->type == NodeTypeStructDecl) { | 1508 | } else if (node->type == NodeTypeContainerDecl) { |
| 1509 | if (node->data.struct_decl.generic_params_is_var_args) { | 1509 | if (node->data.struct_decl.generic_params_is_var_args) { |
| 1510 | add_node_error(g, node, buf_sprintf("generic parameters cannot be var args")); | 1510 | add_node_error(g, node, buf_sprintf("generic parameters cannot be var args")); |
| 1511 | node->data.struct_decl.skip = true; | 1511 | node->data.struct_decl.skip = true; |
| ... | @@ -1589,7 +1589,7 @@ static void preview_fn_proto(CodeGen *g, ImportTableEntry *import, AstNode *prot | ... | @@ -1589,7 +1589,7 @@ static void preview_fn_proto(CodeGen *g, ImportTableEntry *import, AstNode *prot |
| 1589 | } | 1589 | } |
| 1590 | | 1590 | |
| 1591 | static void scan_struct_decl(CodeGen *g, ImportTableEntry *import, BlockContext *context, AstNode *node) { | 1591 | static void scan_struct_decl(CodeGen *g, ImportTableEntry *import, BlockContext *context, AstNode *node) { |
| 1592 | assert(node->type == NodeTypeStructDecl); | 1592 | assert(node->type == NodeTypeContainerDecl); |
| 1593 | | 1593 | |
| 1594 | if (node->data.struct_decl.type_entry) { | 1594 | if (node->data.struct_decl.type_entry) { |
| 1595 | // already scanned; we can ignore. This can happen from importing from an .h file. | 1595 | // already scanned; we can ignore. This can happen from importing from an .h file. |
| ... | @@ -1666,7 +1666,7 @@ static void resolve_top_level_decl(CodeGen *g, AstNode *node, bool pointer_only) | ... | @@ -1666,7 +1666,7 @@ static void resolve_top_level_decl(CodeGen *g, AstNode *node, bool pointer_only) |
| 1666 | if (tld->resolution != TldResolutionUnresolved) { | 1666 | if (tld->resolution != TldResolutionUnresolved) { |
| 1667 | return; | 1667 | return; |
| 1668 | } | 1668 | } |
| 1669 | if (pointer_only && node->type == NodeTypeStructDecl) { | 1669 | if (pointer_only && node->type == NodeTypeContainerDecl) { |
| 1670 | return; | 1670 | return; |
| 1671 | } | 1671 | } |
| 1672 | | 1672 | |
| ... | @@ -1685,7 +1685,7 @@ static void resolve_top_level_decl(CodeGen *g, AstNode *node, bool pointer_only) | ... | @@ -1685,7 +1685,7 @@ static void resolve_top_level_decl(CodeGen *g, AstNode *node, bool pointer_only) |
| 1685 | case NodeTypeFnProto: | 1685 | case NodeTypeFnProto: |
| 1686 | preview_fn_proto(g, import, node); | 1686 | preview_fn_proto(g, import, node); |
| 1687 | break; | 1687 | break; |
| 1688 | case NodeTypeStructDecl: | 1688 | case NodeTypeContainerDecl: |
| 1689 | resolve_struct_decl(g, import, node); | 1689 | resolve_struct_decl(g, import, node); |
| 1690 | break; | 1690 | break; |
| 1691 | case NodeTypeVariableDeclaration: | 1691 | case NodeTypeVariableDeclaration: |
| ... | @@ -3013,7 +3013,7 @@ static TypeTableEntry *analyze_decl_ref(CodeGen *g, AstNode *source_node, AstNod | ... | @@ -3013,7 +3013,7 @@ static TypeTableEntry *analyze_decl_ref(CodeGen *g, AstNode *source_node, AstNod |
| 3013 | assert(fn_entry->type_entry); | 3013 | assert(fn_entry->type_entry); |
| 3014 | return resolve_expr_const_val_as_fn(g, source_node, fn_entry, depends_on_compile_var); | 3014 | return resolve_expr_const_val_as_fn(g, source_node, fn_entry, depends_on_compile_var); |
| 3015 | } | 3015 | } |
| 3016 | } else if (decl_node->type == NodeTypeStructDecl) { | 3016 | } else if (decl_node->type == NodeTypeContainerDecl) { |
| 3017 | if (decl_node->data.struct_decl.generic_params.length > 0) { | 3017 | if (decl_node->data.struct_decl.generic_params.length > 0) { |
| 3018 | TypeTableEntry *type_entry = decl_node->data.struct_decl.generic_fn_type; | 3018 | TypeTableEntry *type_entry = decl_node->data.struct_decl.generic_fn_type; |
| 3019 | assert(type_entry); | 3019 | assert(type_entry); |
| ... | @@ -5355,7 +5355,7 @@ static TypeTableEntry *analyze_generic_fn_call(CodeGen *g, ImportTableEntry *imp | ... | @@ -5355,7 +5355,7 @@ static TypeTableEntry *analyze_generic_fn_call(CodeGen *g, ImportTableEntry *imp |
| 5355 | ZigList<AstNode *> *generic_params; | 5355 | ZigList<AstNode *> *generic_params; |
| 5356 | if (decl_node->type == NodeTypeFnProto) { | 5356 | if (decl_node->type == NodeTypeFnProto) { |
| 5357 | generic_params = &decl_node->data.fn_proto.generic_params; | 5357 | generic_params = &decl_node->data.fn_proto.generic_params; |
| 5358 | } else if (decl_node->type == NodeTypeStructDecl) { | 5358 | } else if (decl_node->type == NodeTypeContainerDecl) { |
| 5359 | generic_params = &decl_node->data.struct_decl.generic_params; | 5359 | generic_params = &decl_node->data.struct_decl.generic_params; |
| 5360 | } else { | 5360 | } else { |
| 5361 | zig_unreachable(); | 5361 | zig_unreachable(); |
| ... | @@ -5423,7 +5423,7 @@ static TypeTableEntry *analyze_generic_fn_call(CodeGen *g, ImportTableEntry *imp | ... | @@ -5423,7 +5423,7 @@ static TypeTableEntry *analyze_generic_fn_call(CodeGen *g, ImportTableEntry *imp |
| 5423 | if (impl_decl_node->type == NodeTypeFnProto) { | 5423 | if (impl_decl_node->type == NodeTypeFnProto) { |
| 5424 | FnTableEntry *fn_table_entry = impl_decl_node->data.fn_proto.fn_table_entry; | 5424 | FnTableEntry *fn_table_entry = impl_decl_node->data.fn_proto.fn_table_entry; |
| 5425 | return resolve_expr_const_val_as_fn(g, node, fn_table_entry, false); | 5425 | return resolve_expr_const_val_as_fn(g, node, fn_table_entry, false); |
| 5426 | } else if (impl_decl_node->type == NodeTypeStructDecl) { | 5426 | } else if (impl_decl_node->type == NodeTypeContainerDecl) { |
| 5427 | TypeTableEntry *type_entry = impl_decl_node->data.struct_decl.type_entry; | 5427 | TypeTableEntry *type_entry = impl_decl_node->data.struct_decl.type_entry; |
| 5428 | return resolve_expr_const_val_as_type(g, node, type_entry, false); | 5428 | return resolve_expr_const_val_as_type(g, node, type_entry, false); |
| 5429 | } else { | 5429 | } else { |
| ... | @@ -5440,7 +5440,7 @@ static TypeTableEntry *analyze_generic_fn_call(CodeGen *g, ImportTableEntry *imp | ... | @@ -5440,7 +5440,7 @@ static TypeTableEntry *analyze_generic_fn_call(CodeGen *g, ImportTableEntry *imp |
| 5440 | g->generic_table.put(generic_fn_type_id, impl_decl_node); | 5440 | g->generic_table.put(generic_fn_type_id, impl_decl_node); |
| 5441 | FnTableEntry *fn_table_entry = impl_decl_node->data.fn_proto.fn_table_entry; | 5441 | FnTableEntry *fn_table_entry = impl_decl_node->data.fn_proto.fn_table_entry; |
| 5442 | return resolve_expr_const_val_as_fn(g, node, fn_table_entry, false); | 5442 | return resolve_expr_const_val_as_fn(g, node, fn_table_entry, false); |
| 5443 | } else if (decl_node->type == NodeTypeStructDecl) { | 5443 | } else if (decl_node->type == NodeTypeContainerDecl) { |
| 5444 | AstNode *impl_decl_node = ast_clone_subtree(decl_node, &g->next_node_index); | 5444 | AstNode *impl_decl_node = ast_clone_subtree(decl_node, &g->next_node_index); |
| 5445 | g->generic_table.put(generic_fn_type_id, impl_decl_node); | 5445 | g->generic_table.put(generic_fn_type_id, impl_decl_node); |
| 5446 | scan_struct_decl(g, import, child_context, impl_decl_node); | 5446 | scan_struct_decl(g, import, child_context, impl_decl_node); |
| ... | @@ -6291,7 +6291,7 @@ static TypeTableEntry *analyze_expression_pointer_only(CodeGen *g, ImportTableEn | ... | @@ -6291,7 +6291,7 @@ static TypeTableEntry *analyze_expression_pointer_only(CodeGen *g, ImportTableEn |
| 6291 | case NodeTypeFnDef: | 6291 | case NodeTypeFnDef: |
| 6292 | case NodeTypeUse: | 6292 | case NodeTypeUse: |
| 6293 | case NodeTypeLabel: | 6293 | case NodeTypeLabel: |
| 6294 | case NodeTypeStructDecl: | 6294 | case NodeTypeContainerDecl: |
| 6295 | case NodeTypeStructField: | 6295 | case NodeTypeStructField: |
| 6296 | case NodeTypeStructValueField: | 6296 | case NodeTypeStructValueField: |
| 6297 | case NodeTypeErrorValueDecl: | 6297 | case NodeTypeErrorValueDecl: |
| ... | @@ -6408,7 +6408,7 @@ static void add_top_level_decl(CodeGen *g, ImportTableEntry *import, BlockContex | ... | @@ -6408,7 +6408,7 @@ static void add_top_level_decl(CodeGen *g, ImportTableEntry *import, BlockContex |
| 6408 | | 6408 | |
| 6409 | bool want_as_export = (g->check_unused || g->is_test_build || tld->visib_mod == VisibModExport); | 6409 | bool want_as_export = (g->check_unused || g->is_test_build || tld->visib_mod == VisibModExport); |
| 6410 | bool is_generic = (node->type == NodeTypeFnProto && node->data.fn_proto.generic_params.length > 0) || | 6410 | bool is_generic = (node->type == NodeTypeFnProto && node->data.fn_proto.generic_params.length > 0) || |
| 6411 | (node->type == NodeTypeStructDecl && node->data.struct_decl.generic_params.length > 0); | 6411 | (node->type == NodeTypeContainerDecl && node->data.struct_decl.generic_params.length > 0); |
| 6412 | if (!is_generic && want_as_export) { | 6412 | if (!is_generic && want_as_export) { |
| 6413 | g->export_queue.append(node); | 6413 | g->export_queue.append(node); |
| 6414 | } | 6414 | } |
| ... | @@ -6433,7 +6433,7 @@ static void scan_decls(CodeGen *g, ImportTableEntry *import, BlockContext *conte | ... | @@ -6433,7 +6433,7 @@ static void scan_decls(CodeGen *g, ImportTableEntry *import, BlockContext *conte |
| 6433 | scan_decls(g, import, context, child); | 6433 | scan_decls(g, import, context, child); |
| 6434 | } | 6434 | } |
| 6435 | break; | 6435 | break; |
| 6436 | case NodeTypeStructDecl: | 6436 | case NodeTypeContainerDecl: |
| 6437 | { | 6437 | { |
| 6438 | Buf *name = &node->data.struct_decl.name; | 6438 | Buf *name = &node->data.struct_decl.name; |
| 6439 | add_top_level_decl(g, import, context, node, name); | 6439 | add_top_level_decl(g, import, context, node, name); |
| ... | @@ -6782,7 +6782,7 @@ Expr *get_resolved_expr(AstNode *node) { | ... | @@ -6782,7 +6782,7 @@ Expr *get_resolved_expr(AstNode *node) { |
| 6782 | case NodeTypeParamDecl: | 6782 | case NodeTypeParamDecl: |
| 6783 | case NodeTypeDirective: | 6783 | case NodeTypeDirective: |
| 6784 | case NodeTypeUse: | 6784 | case NodeTypeUse: |
| 6785 | case NodeTypeStructDecl: | 6785 | case NodeTypeContainerDecl: |
| 6786 | case NodeTypeStructField: | 6786 | case NodeTypeStructField: |
| 6787 | case NodeTypeStructValueField: | 6787 | case NodeTypeStructValueField: |
| 6788 | case NodeTypeErrorValueDecl: | 6788 | case NodeTypeErrorValueDecl: |
| ... | @@ -6800,7 +6800,7 @@ static TopLevelDecl *get_as_top_level_decl(AstNode *node) { | ... | @@ -6800,7 +6800,7 @@ static TopLevelDecl *get_as_top_level_decl(AstNode *node) { |
| 6800 | return &node->data.fn_proto.top_level_decl; | 6800 | return &node->data.fn_proto.top_level_decl; |
| 6801 | case NodeTypeFnDef: | 6801 | case NodeTypeFnDef: |
| 6802 | return &node->data.fn_def.fn_proto->data.fn_proto.top_level_decl; | 6802 | return &node->data.fn_def.fn_proto->data.fn_proto.top_level_decl; |
| 6803 | case NodeTypeStructDecl: | 6803 | case NodeTypeContainerDecl: |
| 6804 | return &node->data.struct_decl.top_level_decl; | 6804 | return &node->data.struct_decl.top_level_decl; |
| 6805 | case NodeTypeErrorValueDecl: | 6805 | case NodeTypeErrorValueDecl: |
| 6806 | return &node->data.error_value_decl.top_level_decl; | 6806 | return &node->data.error_value_decl.top_level_decl; |