From 5626bb45d24cd4a57a4f6a1c0f41ec0feb276f7b Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 18 May 2022 14:46:04 -0700 Subject: [PATCH] Sema: fix comptime `@floatCast` downcast --- src/Sema.zig | 4 ++-- test/behavior/cast.zig | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Sema.zig b/src/Sema.zig index b28536fe48..feed4d0e8a 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -7236,8 +7236,8 @@ fn zirFloatCast(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A ), } - if (try sema.isComptimeKnown(block, operand_src, operand)) { - return sema.coerce(block, dest_ty, operand, operand_src); + if (try sema.resolveMaybeUndefVal(block, operand_src, operand)) |operand_val| { + return sema.addConstant(dest_ty, try operand_val.floatCast(sema.arena, dest_ty, target)); } if (dest_is_comptime_float) { return sema.fail(block, src, "unable to cast runtime value to 'comptime_float'", .{}); diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig index 6753b731f0..58b458ad1e 100644 --- a/test/behavior/cast.zig +++ b/test/behavior/cast.zig @@ -630,7 +630,9 @@ test "vector casts" { } test "@floatCast cast down" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO { var double: f64 = 0.001534;