mirror of
https://github.com/ziglang/zig.git
synced 2025-12-18 12:13:20 +00:00
fx segfault with colliding bogus top level functions
This commit is contained in:
parent
7af59c76e4
commit
79adf55699
@ -5038,7 +5038,12 @@ static void detect_top_level_decl_deps(CodeGen *g, ImportTableEntry *import, Ast
|
|||||||
decl_node->name = name;
|
decl_node->name = name;
|
||||||
decl_node->import = import;
|
decl_node->import = import;
|
||||||
if (decl_node->deps.size() > 0) {
|
if (decl_node->deps.size() > 0) {
|
||||||
|
if (g->unresolved_top_level_decls.maybe_get(name)) {
|
||||||
|
node->data.fn_proto.skip = true;
|
||||||
|
add_node_error(g, node, buf_sprintf("redefinition of '%s'", buf_ptr(name)));
|
||||||
|
} else {
|
||||||
g->unresolved_top_level_decls.put(name, node);
|
g->unresolved_top_level_decls.put(name, node);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
resolve_top_level_decl(g, import, node);
|
resolve_top_level_decl(g, import, node);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1964,6 +1964,14 @@ export fn c(x: i32) -> i32 {x + 2}
|
|||||||
const x : f64 = 1.0;
|
const x : f64 = 1.0;
|
||||||
const y : f32 = x;
|
const y : f32 = x;
|
||||||
)SOURCE", 1, ".tmp_source.zig:3:17: error: expected type 'f32', got 'f64'");
|
)SOURCE", 1, ".tmp_source.zig:3:17: error: expected type 'f32', got 'f64'");
|
||||||
|
|
||||||
|
|
||||||
|
add_compile_fail_case("colliding invalid top level functions", R"SOURCE(
|
||||||
|
fn func() -> bogus {}
|
||||||
|
fn func() -> bogus {}
|
||||||
|
)SOURCE", 2,
|
||||||
|
".tmp_source.zig:3:1: error: redefinition of 'func'",
|
||||||
|
".tmp_source.zig:2:14: error: use of undeclared identifier 'bogus'");
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user