| author | |
| committer | |
| log | 79adf55699a549841eba3eb07f1dbb19c4da9ed1 |
| tree | bb6ddb73b7b31a53ee198a068719204fa285eb0f |
| parent | 7af59c76e40d185ed1a8962c2d5fd0f88680d5a7 |
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} |
| 1964 | const x : f64 = 1.0; | 1964 | const x : f64 = 1.0; |
| 1965 | const y : f32 = x; | 1965 | const 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( | ||
| 1970 | fn func() -> bogus {} | ||
| 1971 | fn 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 | } |
| 1968 | 1976 | ||
| 1969 | ////////////////////////////////////////////////////////////////////////////// | 1977 | ////////////////////////////////////////////////////////////////////////////// |