Commit 1fdf13a148

mlugg <mlugg@mlugg.co.uk>
2024-06-19 01:31:28
AstGen: error for redundant `@inComptime()`
1 parent 5f2bdaf
Changed files (3)
lib
std
test
behavior
cases
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]);
 
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());
 }
test/cases/compile_errors/redundant_in_comptime.zig
@@ -0,0 +1,7 @@
+comptime {
+    _ = @inComptime();
+}
+
+// error
+//
+// :2:9: error: redundant '@inComptime' in comptime scope