From c793c534b87395bd42c5c53c6ac76537026a5586 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 12 Jan 2017 18:10:05 -0500 Subject: [PATCH] fix use decl regression --- src/analyze.cpp | 8 ++++---- src/parseh.cpp | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/analyze.cpp b/src/analyze.cpp index 8f02185790..8887bb68e5 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -2453,8 +2453,8 @@ static void analyze_fn_body(CodeGen *g, FnTableEntry *fn_table_entry) { analyze_fn_ir(g, fn_table_entry, return_type_node); } -static void add_symbols_from_import(CodeGen *g, AstNode *dst_use_node) { - IrInstruction *use_target_value = dst_use_node->data.use.value; +static void add_symbols_from_import(CodeGen *g, AstNode *src_use_node, AstNode *dst_use_node) { + IrInstruction *use_target_value = src_use_node->data.use.value; if (use_target_value->value.type->id == TypeTableEntryIdInvalid) { dst_use_node->owner->any_imports_failed = true; return; @@ -2501,7 +2501,7 @@ static void add_symbols_from_import(CodeGen *g, AstNode *dst_use_node) { for (size_t i = 0; i < target_import->use_decls.length; i += 1) { AstNode *use_decl_node = target_import->use_decls.at(i); if (use_decl_node->data.use.visib_mod != VisibModPrivate) - add_symbols_from_import(g, dst_use_node); + add_symbols_from_import(g, use_decl_node, dst_use_node); } } @@ -2510,7 +2510,7 @@ void resolve_use_decl(CodeGen *g, AstNode *node) { if (node->data.use.resolution != TldResolutionUnresolved) return; - add_symbols_from_import(g, node); + add_symbols_from_import(g, node, node); } void preview_use_decl(CodeGen *g, AstNode *node) { diff --git a/src/parseh.cpp b/src/parseh.cpp index 15283e9597..7e04a78d36 100644 --- a/src/parseh.cpp +++ b/src/parseh.cpp @@ -132,6 +132,7 @@ static const char *decl_name(const Decl *decl) { static void parseh_init_tld(Context *c, Tld *tld, TldId id, Buf *name) { init_tld(tld, id, name, c->visib_mod, c->source_node, &c->import->decls_scope->base); tld->resolution = TldResolutionOk; + tld->import = c->import; } static Tld *create_inline_fn_tld(Context *c, Buf *fn_name, TldVar *tld_var) {