authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-01-12 18:10:05-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-01-12 18:10:05-05:00
logc793c534b87395bd42c5c53c6ac76537026a5586
tree8a72904a127a3ceb40be4174e62353e6d4f2524a
parent18f248b94d1c936328058a6d67afe0003f022c5c

fix use decl regression


2 files changed, 5 insertions(+), 4 deletions(-)

src/analyze.cpp+4-4
...@@ -2453,8 +2453,8 @@ static void analyze_fn_body(CodeGen *g, FnTableEntry *fn_table_entry) {...@@ -2453,8 +2453,8 @@ static void analyze_fn_body(CodeGen *g, FnTableEntry *fn_table_entry) {
2453 analyze_fn_ir(g, fn_table_entry, return_type_node);2453 analyze_fn_ir(g, fn_table_entry, return_type_node);
2454}2454}
24552455
2456static void add_symbols_from_import(CodeGen *g, AstNode *dst_use_node) {2456static void add_symbols_from_import(CodeGen *g, AstNode *src_use_node, AstNode *dst_use_node) {
2457 IrInstruction *use_target_value = dst_use_node->data.use.value;2457 IrInstruction *use_target_value = src_use_node->data.use.value;
2458 if (use_target_value->value.type->id == TypeTableEntryIdInvalid) {2458 if (use_target_value->value.type->id == TypeTableEntryIdInvalid) {
2459 dst_use_node->owner->any_imports_failed = true;2459 dst_use_node->owner->any_imports_failed = true;
2460 return;2460 return;
...@@ -2501,7 +2501,7 @@ static void add_symbols_from_import(CodeGen *g, AstNode *dst_use_node) {...@@ -2501,7 +2501,7 @@ static void add_symbols_from_import(CodeGen *g, AstNode *dst_use_node) {
2501 for (size_t i = 0; i < target_import->use_decls.length; i += 1) {2501 for (size_t i = 0; i < target_import->use_decls.length; i += 1) {
2502 AstNode *use_decl_node = target_import->use_decls.at(i);2502 AstNode *use_decl_node = target_import->use_decls.at(i);
2503 if (use_decl_node->data.use.visib_mod != VisibModPrivate)2503 if (use_decl_node->data.use.visib_mod != VisibModPrivate)
2504 add_symbols_from_import(g, dst_use_node);2504 add_symbols_from_import(g, use_decl_node, dst_use_node);
2505 }2505 }
2506}2506}
25072507
...@@ -2510,7 +2510,7 @@ void resolve_use_decl(CodeGen *g, AstNode *node) {...@@ -2510,7 +2510,7 @@ void resolve_use_decl(CodeGen *g, AstNode *node) {
25102510
2511 if (node->data.use.resolution != TldResolutionUnresolved)2511 if (node->data.use.resolution != TldResolutionUnresolved)
2512 return;2512 return;
2513 add_symbols_from_import(g, node);2513 add_symbols_from_import(g, node, node);
2514}2514}
25152515
2516void preview_use_decl(CodeGen *g, AstNode *node) {2516void preview_use_decl(CodeGen *g, AstNode *node) {
src/parseh.cpp+1
...@@ -132,6 +132,7 @@ static const char *decl_name(const Decl *decl) {...@@ -132,6 +132,7 @@ static const char *decl_name(const Decl *decl) {
132static void parseh_init_tld(Context *c, Tld *tld, TldId id, Buf *name) {132static void parseh_init_tld(Context *c, Tld *tld, TldId id, Buf *name) {
133 init_tld(tld, id, name, c->visib_mod, c->source_node, &c->import->decls_scope->base);133 init_tld(tld, id, name, c->visib_mod, c->source_node, &c->import->decls_scope->base);
134 tld->resolution = TldResolutionOk;134 tld->resolution = TldResolutionOk;
135 tld->import = c->import;
135}136}
136137
137static Tld *create_inline_fn_tld(Context *c, Buf *fn_name, TldVar *tld_var) {138static Tld *create_inline_fn_tld(Context *c, Buf *fn_name, TldVar *tld_var) {