| ... | ... | @@ -3306,10 +3306,10 @@ void resolve_top_level_decl(CodeGen *g, Tld *tld, AstNode *source_node) { |
| 3306 | 3306 | } |
| 3307 | 3307 | |
| 3308 | 3308 | Tld *find_container_decl(CodeGen *g, ScopeDecls *decls_scope, Buf *name) { |
| 3309 | | // resolve all the use decls |
| 3309 | // resolve all the using_namespace decls |
| 3310 | 3310 | for (size_t i = 0; i < decls_scope->use_decls.length; i += 1) { |
| 3311 | 3311 | AstNode *use_decl_node = decls_scope->use_decls.at(i); |
| 3312 | | if (use_decl_node->data.use.resolution == TldResolutionUnresolved) { |
| 3312 | if (use_decl_node->data.using_namespace.resolution == TldResolutionUnresolved) { |
| 3313 | 3313 | preview_use_decl(g, use_decl_node, decls_scope); |
| 3314 | 3314 | resolve_use_decl(g, use_decl_node, decls_scope); |
| 3315 | 3315 | } |
| ... | ... | @@ -3753,17 +3753,17 @@ static void analyze_fn_body(CodeGen *g, ZigFn *fn_table_entry) { |
| 3753 | 3753 | } |
| 3754 | 3754 | |
| 3755 | 3755 | static void add_symbols_from_container(CodeGen *g, AstNode *src_use_node, AstNode *dst_use_node, ScopeDecls* decls_scope) { |
| 3756 | | if (src_use_node->data.use.resolution == TldResolutionUnresolved) { |
| 3756 | if (src_use_node->data.using_namespace.resolution == TldResolutionUnresolved) { |
| 3757 | 3757 | preview_use_decl(g, src_use_node, decls_scope); |
| 3758 | 3758 | } |
| 3759 | 3759 | |
| 3760 | | ConstExprValue *use_expr = src_use_node->data.use.using_namespace_value; |
| 3760 | ConstExprValue *use_expr = src_use_node->data.using_namespace.using_namespace_value; |
| 3761 | 3761 | if (type_is_invalid(use_expr->type)) { |
| 3762 | 3762 | decls_scope->any_imports_failed = true; |
| 3763 | 3763 | return; |
| 3764 | 3764 | } |
| 3765 | 3765 | |
| 3766 | | dst_use_node->data.use.resolution = TldResolutionOk; |
| 3766 | dst_use_node->data.using_namespace.resolution = TldResolutionOk; |
| 3767 | 3767 | |
| 3768 | 3768 | assert(use_expr->special != ConstValSpecialRuntime); |
| 3769 | 3769 | |
| ... | ... | @@ -3821,7 +3821,7 @@ static void add_symbols_from_container(CodeGen *g, AstNode *src_use_node, AstNod |
| 3821 | 3821 | |
| 3822 | 3822 | for (size_t i = 0; i < src_scope->use_decls.length; i += 1) { |
| 3823 | 3823 | AstNode *use_decl_node = src_scope->use_decls.at(i); |
| 3824 | | if (use_decl_node->data.use.visib_mod != VisibModPrivate) |
| 3824 | if (use_decl_node->data.using_namespace.visib_mod != VisibModPrivate) |
| 3825 | 3825 | add_symbols_from_container(g, use_decl_node, dst_use_node, decls_scope); |
| 3826 | 3826 | } |
| 3827 | 3827 | } |
| ... | ... | @@ -3829,8 +3829,8 @@ static void add_symbols_from_container(CodeGen *g, AstNode *src_use_node, AstNod |
| 3829 | 3829 | void resolve_use_decl(CodeGen *g, AstNode *node, ScopeDecls *decls_scope) { |
| 3830 | 3830 | assert(node->type == NodeTypeUse); |
| 3831 | 3831 | |
| 3832 | | if (node->data.use.resolution == TldResolutionOk || |
| 3833 | | node->data.use.resolution == TldResolutionInvalid) |
| 3832 | if (node->data.using_namespace.resolution == TldResolutionOk || |
| 3833 | node->data.using_namespace.resolution == TldResolutionInvalid) |
| 3834 | 3834 | { |
| 3835 | 3835 | return; |
| 3836 | 3836 | } |
| ... | ... | @@ -3840,20 +3840,20 @@ void resolve_use_decl(CodeGen *g, AstNode *node, ScopeDecls *decls_scope) { |
| 3840 | 3840 | void preview_use_decl(CodeGen *g, AstNode *node, ScopeDecls *decls_scope) { |
| 3841 | 3841 | assert(node->type == NodeTypeUse); |
| 3842 | 3842 | |
| 3843 | | if (node->data.use.resolution == TldResolutionOk || |
| 3844 | | node->data.use.resolution == TldResolutionInvalid) |
| 3843 | if (node->data.using_namespace.resolution == TldResolutionOk || |
| 3844 | node->data.using_namespace.resolution == TldResolutionInvalid) |
| 3845 | 3845 | { |
| 3846 | 3846 | return; |
| 3847 | 3847 | } |
| 3848 | 3848 | |
| 3849 | | node->data.use.resolution = TldResolutionResolving; |
| 3849 | node->data.using_namespace.resolution = TldResolutionResolving; |
| 3850 | 3850 | ConstExprValue *result = analyze_const_value(g, &decls_scope->base, |
| 3851 | | node->data.use.expr, g->builtin_types.entry_type, nullptr); |
| 3851 | node->data.using_namespace.expr, g->builtin_types.entry_type, nullptr); |
| 3852 | 3852 | |
| 3853 | 3853 | if (type_is_invalid(result->type)) |
| 3854 | 3854 | decls_scope->any_imports_failed = true; |
| 3855 | 3855 | |
| 3856 | | node->data.use.using_namespace_value = result; |
| 3856 | node->data.using_namespace.using_namespace_value = result; |
| 3857 | 3857 | } |
| 3858 | 3858 | |
| 3859 | 3859 | ZigType *add_source_file(CodeGen *g, ZigPackage *package, Buf *resolved_path, Buf *source_code, |
| ... | ... | @@ -3980,9 +3980,9 @@ void semantic_analyze(CodeGen *g) { |
| 3980 | 3980 | { |
| 3981 | 3981 | for (; g->use_queue_index < g->use_queue.length; g->use_queue_index += 1) { |
| 3982 | 3982 | AstNode *use_decl_node = g->use_queue.at(g->use_queue_index); |
| 3983 | | // Get the top-level scope where `use` is used |
| 3983 | // Get the top-level scope where `using_namespace` is used |
| 3984 | 3984 | ScopeDecls *decls_scope = get_container_scope(use_decl_node->owner); |
| 3985 | | if (use_decl_node->data.use.resolution == TldResolutionUnresolved) { |
| 3985 | if (use_decl_node->data.using_namespace.resolution == TldResolutionUnresolved) { |
| 3986 | 3986 | preview_use_decl(g, use_decl_node, decls_scope); |
| 3987 | 3987 | resolve_use_decl(g, use_decl_node, decls_scope); |
| 3988 | 3988 | } |