diff options
| author | Martin Hafskjold Thoresen <git@mht.wtf> | 2022-08-10 23:32:02 +0200 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-08-17 14:09:09 -0700 |
| commit | 07f64a2e13ab80acffba7f7bdd5d7c58df7893c0 (patch) | |
| tree | e35bf8eea3846afca0a3d42f1436b1759f39c60a /src/stage1/codegen.cpp | |
| parent | 070282a96ec23fb41041843d5753608ec5090f8b (diff) | |
| download | zig-07f64a2e13ab80acffba7f7bdd5d7c58df7893c0.tar.gz zig-07f64a2e13ab80acffba7f7bdd5d7c58df7893c0.zip | |
Sema: error on ambiguous coercion of comptime float and ints
The following, from the documentation as of the time of writing, illustrates
the problem:
```zig
// Compile time coercion of float to int
test "implicit cast to comptime_int" {
var f: f32 = 54.0 / 5;
_ = f;
}
```
It is not clear how to unify the types of 54.0 and 5 to perform the
division. We can either
- cast 54.0 to comptime_int resulting in @as(comptime_int, 10), which is
casted to @as(f32, 10), or
- cast 5 to comptime_float resulting in @as(comptime_float, 10.8), which
is casted to @as(f32, 10.8)
Since the two resulting values are different, a compiler error is appropriate.
If we know that casting to either type will result in the same value we
don't need to error. For instance, 10.0 / 2 is okay, as is 10 / 2.0.
Fixes: #12364
Diffstat (limited to 'src/stage1/codegen.cpp')
0 files changed, 0 insertions, 0 deletions
