authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-02 15:58:13-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-02 15:58:13-07:00
log79adf55699a549841eba3eb07f1dbb19c4da9ed1
treebb6ddb73b7b31a53ee198a068719204fa285eb0f
parent7af59c76e40d185ed1a8962c2d5fd0f88680d5a7

fx segfault with colliding bogus top level functions


2 files changed, 14 insertions(+), 1 deletions(-)

src/analyze.cpp+6-1
...@@ -5038,7 +5038,12 @@ static void detect_top_level_decl_deps(CodeGen *g, ImportTableEntry *import, Ast...@@ -5038,7 +5038,12 @@ static void detect_top_level_decl_deps(CodeGen *g, ImportTableEntry *import, Ast
5038 decl_node->name = name;5038 decl_node->name = name;
5039 decl_node->import = import;5039 decl_node->import = import;
5040 if (decl_node->deps.size() > 0) {5040 if (decl_node->deps.size() > 0) {
5041 g->unresolved_top_level_decls.put(name, node);5041 if (g->unresolved_top_level_decls.maybe_get(name)) {
5042 node->data.fn_proto.skip = true;
5043 add_node_error(g, node, buf_sprintf("redefinition of '%s'", buf_ptr(name)));
5044 } else {
5045 g->unresolved_top_level_decls.put(name, node);
5046 }
5042 } else {5047 } else {
5043 resolve_top_level_decl(g, import, node);5048 resolve_top_level_decl(g, import, node);
5044 }5049 }
test/run_tests.cpp+8
...@@ -1964,6 +1964,14 @@ export fn c(x: i32) -> i32 {x + 2}...@@ -1964,6 +1964,14 @@ export fn c(x: i32) -> i32 {x + 2}
1964const x : f64 = 1.0;1964const x : f64 = 1.0;
1965const y : f32 = x;1965const y : f32 = x;
1966 )SOURCE", 1, ".tmp_source.zig:3:17: error: expected type 'f32', got 'f64'");1966 )SOURCE", 1, ".tmp_source.zig:3:17: error: expected type 'f32', got 'f64'");
1967
1968
1969 add_compile_fail_case("colliding invalid top level functions", R"SOURCE(
1970fn func() -> bogus {}
1971fn func() -> bogus {}
1972 )SOURCE", 2,
1973 ".tmp_source.zig:3:1: error: redefinition of 'func'",
1974 ".tmp_source.zig:2:14: error: use of undeclared identifier 'bogus'");
1967}1975}
19681976
1969//////////////////////////////////////////////////////////////////////////////1977//////////////////////////////////////////////////////////////////////////////