diff --git a/lib/std/zig/AstGen.zig b/lib/std/zig/AstGen.zig index f02dcaa2db..03b9fa51b7 100644 --- a/lib/std/zig/AstGen.zig +++ b/lib/std/zig/AstGen.zig @@ -9310,7 +9310,6 @@ fn builtinCall( .frame => return rvalue(gz, ri, try gz.addNodeExtended(.frame, node), node), .frame_address => return rvalue(gz, ri, try gz.addNodeExtended(.frame_address, node), node), .breakpoint => return rvalue(gz, ri, try gz.addNodeExtended(.breakpoint, node), node), - .in_comptime => return rvalue(gz, ri, try gz.addNodeExtended(.in_comptime, node), node), .type_info => return simpleUnOpType(gz, scope, ri, node, params[0], .type_info), .size_of => return simpleUnOpType(gz, scope, ri, node, params[0], .size_of), @@ -9353,6 +9352,12 @@ fn builtinCall( .truncate => return typeCast(gz, scope, ri, node, params[0], .truncate, builtin_name), // zig fmt: on + .in_comptime => if (gz.is_comptime) { + return astgen.failNode(node, "redundant '@inComptime' in comptime scope", .{}); + } else { + return rvalue(gz, ri, try gz.addNodeExtended(.in_comptime, node), node); + }, + .Type => { const operand = try expr(gz, scope, .{ .rl = .{ .coerced_ty = .type_info_type } }, params[0]); diff --git a/test/behavior/eval.zig b/test/behavior/eval.zig index c62e116a5f..4147338b9c 100644 --- a/test/behavior/eval.zig +++ b/test/behavior/eval.zig @@ -1711,7 +1711,6 @@ test "@inComptime" { } }; try expectEqual(false, @inComptime()); - try expectEqual(true, comptime @inComptime()); try expectEqual(false, S.inComptime()); try expectEqual(true, comptime S.inComptime()); } diff --git a/test/cases/compile_errors/redundant_in_comptime.zig b/test/cases/compile_errors/redundant_in_comptime.zig new file mode 100644 index 0000000000..dd5c5e976a --- /dev/null +++ b/test/cases/compile_errors/redundant_in_comptime.zig @@ -0,0 +1,7 @@ +comptime { + _ = @inComptime(); +} + +// error +// +// :2:9: error: redundant '@inComptime' in comptime scope