Commit 648d34d8ea

Veikka Tuominen <git@vexu.eu>
2022-10-27 12:40:20
Sema: coerce zero-bit generic args are coerced properly
Closes #13307
1 parent b937a04
Changed files (2)
src/Sema.zig
@@ -6738,6 +6738,8 @@ fn analyzeGenericCallArg(
         try sema.queueFullTypeResolution(param_ty);
         runtime_args[runtime_i.*] = casted_arg;
         runtime_i.* += 1;
+    } else if (try sema.typeHasOnePossibleValue(block, arg_src, comptime_arg.ty)) |_| {
+        _ = try sema.coerce(block, comptime_arg.ty, uncasted_arg, arg_src);
     }
 }
 
test/cases/compile_errors/zero-bit_generic_args_are_coerced_to_param_type.zig
@@ -0,0 +1,10 @@
+fn bar(a: anytype, _: @TypeOf(a)) void {}
+pub export fn entry() void {
+    bar(@as(u0, 0), "fooo");
+}
+
+// error
+// backend=stage2
+// target=native
+//
+// :3:21: error: expected type 'u0', found '*const [4:0]u8'