diff --git a/src/AstGen.zig b/src/AstGen.zig index 10761ec0cf..07f3c54cc3 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -8294,6 +8294,10 @@ fn builtinCall( }, .top => break, }; + if (found_already == null) { + const ident_name = try astgen.identifierTokenString(ident_token); + return astgen.failNode(params[0], "use of undeclared identifier '{s}'", .{ident_name}); + } }, .field_access => { const namespace_node = node_datas[params[0]].lhs; diff --git a/src/Sema.zig b/src/Sema.zig index 5c08102a27..89a8f74bf6 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -6412,7 +6412,7 @@ fn lookupIdentifier(sema: *Sema, block: *Block, src: LazySrcLoc, name: InternPoo } namespace = mod.namespacePtr(namespace).parent.unwrap() orelse break; } - unreachable; // AstGen detects use of undeclared identifier errors. + unreachable; // AstGen detects use of undeclared identifiers. } /// This looks up a member of a specific namespace. It is affected by `usingnamespace` but diff --git a/test/cases/compile_errors/@export_with_undeclared_identifier.zig b/test/cases/compile_errors/@export_with_undeclared_identifier.zig new file mode 100644 index 0000000000..01c3b4000e --- /dev/null +++ b/test/cases/compile_errors/@export_with_undeclared_identifier.zig @@ -0,0 +1,9 @@ +export fn a() void { + @export(bogus, .{ .name = "bogus_alias" }); +} + +// error +// backend=stage2 +// target=native +// +// :2:13: error: use of undeclared identifier 'bogus'