Martin Hafskjold Thoresen
07f64a2e13
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
2022-08-17 14:09:09 -07:00
Jakub Konka
070282a96e
libstd: fix off-by-one error in def of ProcSym in pdb
...
Make sure `ProcSym` includes a single element byte-array which delimits
the start of the symbol's name as part of its definition. This makes
the code more elegant in that accessing the name is equivalent to taking
the address of this one element array.
2022-08-17 16:36:02 -04:00
Andrew Kelley
c764640e92
Sema: fix generics with struct literal coerced to tagged union
...
The `Value.eql` function has to test for value equality *as-if* the lhs
value parameter is coerced into the type of the rhs. For tagged unions,
there was a problematic case when the lhs was an anonymous struct,
because in such case the value is empty_struct_value and the type
contains all the value information. But the only type available in the
function was the rhs type.
So the fix involved making `Value.eqlAdvanced` also accept the lhs type,
and then enhancing the logic to handle the case of the `.anon_struct` tag.
closes #12418
Tests run locally:
* test-behavior
* test-cases
2022-08-17 13:02:57 -07:00
Veikka Tuominen
9d4561ef00
AstGen: detect declarations shadowing locals
...
Closes #9355
2022-08-16 20:35:03 +03:00
Veikka Tuominen
c17793b487
Sema: ignore current declaration in ambiguous reference error
...
Closes #12429
2022-08-16 16:37:27 +03:00
Veikka Tuominen
40eac90280
Merge pull request #12416 from Vexu/stage2-safety
...
Stage2 error set safety improvements
2022-08-15 11:32:26 +03:00
LeRoyce Pearson
cb901e578c
stage2: add compile errors for comptime @shrExact and @divExact failures
2022-08-15 11:28:42 +03:00
Cody Tapscott
7e07f3d4f9
stage2 astgen: Use rl semantics for @Type
...
Resolves #12430 .
2022-08-13 09:22:25 +03:00
martinhath
92568a0097
Sema: add error for signed integer division
...
stage1 error reads
error: division with 'i32' and 'comptime_int': signed integers must use @divTrunc, @divFloor, or @divExact
Fixes : #12339
2022-08-12 11:45:11 +03:00
Veikka Tuominen
09f273136c
stage2: check for zero in @intToError safety
2022-08-12 11:41:09 +03:00
Andrew Kelley
5e42b0821a
disable failing stack traces tests on windows
...
See tracking issue #12422
2022-08-11 19:19:23 -07:00
Andrew Kelley
486626beb7
disable failing link tests on windows
...
See tracking issue #12421
2022-08-11 17:53:15 -07:00
Andrew Kelley
23a227a073
disable failing standalone test: issue_11595
...
See tracking issue #12419
2022-08-11 17:53:12 -07:00
Andrew Kelley
dba758da18
disable failing C backend behavior test on Windows
...
See tracking issue #12415
2022-08-11 12:56:46 -07:00
Veikka Tuominen
74673b7f69
stage2 llvm: implement more C ABI
2022-08-10 20:52:36 -04:00
Andrew Kelley
4d7f5a1917
stage2: fix crash with comptime vector reduce
2022-08-10 16:45:29 -07:00
Andrew Kelley
3c4e9b5983
disable failing behavior test
...
See #12360
2022-08-10 16:43:47 -07:00
Andrew Kelley
173952f4b8
disable failing behavior test
...
see tracking issue #12396
2022-08-10 16:13:59 -07:00
Andrew Kelley
e0178890ba
Merge pull request #12379 from ifreund/packed-struct-explicit-backing-int
...
stage2: Implement explicit backing integers for packed structs
2022-08-10 19:13:29 -04:00
InKryption
e218b7ea0c
stage2: add compile error for invalid null/undefined pointer cast
2022-08-10 16:39:46 -04:00
LeRoyce Pearson
0e118ed0ac
stage2: add compile error for shlExact overflow
...
- moves a stage1 test case and makes it target `llvm` backend instead
of `stage1` backend
2022-08-10 16:14:30 -04:00
Veikka Tuominen
40447b25e8
Sema: fix expansion of repeated value
...
Closes #12386
2022-08-10 15:18:09 -04:00
Isaac Freund
0d32b73078
stage2: Implement explicit backing integers for packed structs
...
Now the backing integer of a packed struct type may be explicitly
specified with e.g. `packed struct(u32) { ... }`.
2022-08-10 19:54:45 +02:00
Isaac Freund
bb1c3e8b7e
stage2: Handle lazy values for the % operator
2022-08-10 14:48:27 +02:00
Veikka Tuominen
b757a96d5c
Sema: add declared here note to function call errors
2022-08-09 23:37:26 +03:00
Veikka Tuominen
0fd90749d1
stage2: generate call arguments in separate blocks
2022-08-09 16:19:55 +03:00
Andrew Kelley
85a3f9b054
Merge pull request #12383 from ziglang/stage2-stack-traces
...
several improvements to error return tracing in the self-hosted compiler
2022-08-09 02:11:58 -07:00
Veikka Tuominen
c76b5c1a31
stage2: correct node offset of nested declarations
2022-08-09 11:59:10 +03:00
Andrew Kelley
feb90f6ed4
AstGen: emit debug stmt for try
...
This improves the following test case:
```zig
pub fn main() !void {
try foo();
}
fn foo() !void {
return error.Bad;
}
```
The error return trace now points to the `try` token instead of pointing
to the foo() function call, matching stage1.
Closes #12308 .
2022-08-08 21:12:04 -07:00
Veikka Tuominen
d769fd0102
stage2: pass anon name strategy to reify
2022-08-08 18:28:39 -07:00
Andrew Kelley
ec7f713147
delete failing RISC-V test
...
this backend needs to get further along before it deserves test
coverage.
2022-08-07 16:07:25 -07:00
Andrew Kelley
11c715cd5a
remove brittle test case
...
see #12358
2022-08-07 16:07:21 -07:00
Meghan Denny
0879cbeed2
remove 'builtin.stage2_arch', Sema is smart enough now
2022-08-07 16:07:08 -07:00
Andrew Kelley
b3d463c9e6
Merge pull request #12337 from Vexu/stage2-safety
...
Stage2: implement remaining runtime safety checks
2022-08-06 14:59:10 -07:00
Anton Lilja
86d9c3de2b
Sema: fix infinite recursion in explainWhyTypeIsComptime
...
Co-authored-by: Veikka Tuominen <git@vexu.eu>
2022-08-06 14:17:09 +03:00
Andrew Kelley
5c9826630d
Sema: elide safety of modulus and remainder division sometimes
...
Piggybacking on 40f8f0134f5da9baaefd0fdab529d5585fa46199, remainder
division, modulus, and `%` syntax no longer emit safety checks for a
comptime-known denominator.
2022-08-05 21:13:18 -07:00
Veikka Tuominen
f46d7304b1
stage2: add runtime safety for invalid enum values
2022-08-05 22:13:58 +03:00
Veikka Tuominen
19d5ffc710
Sema: add safety check for non-power-of-two shift amounts
2022-08-05 22:13:58 +03:00
Veikka Tuominen
9116e26c1f
Sema: add null check for implicit casts
2022-08-05 22:13:58 +03:00
Veikka Tuominen
5605f6e0e3
Sema: account for sentinel in bounds check
2022-08-05 22:13:57 +03:00
Veikka Tuominen
6aa438f065
Sema: add null pointer slice safety check when len is comptime known
2022-08-05 22:13:57 +03:00
Veikka Tuominen
eec2978fac
Sema: better safety check on switch on corrupt value
2022-08-05 22:13:57 +03:00
Meredith Oleander
fd3415ad5e
translate-c: fix alignment in pointer casts
2022-08-05 15:38:48 +03:00
Loris Cro
259f407160
init-exe template: align cli tests to new template
2022-08-05 00:42:53 +02:00
Veikka Tuominen
4ab60dc18b
Sema: add error for dependency loops
2022-08-03 17:10:39 +03:00
Veikka Tuominen
b79929b2ea
AstGen: better source location for if/while condition unwrapping
2022-08-03 16:45:33 +03:00
Veikka Tuominen
d1d24b426d
AstGen: check loop bodies and else branches for unused result
2022-08-03 16:45:33 +03:00
Veikka Tuominen
aa78ebaf95
Sema: improve circular dependency errors
2022-08-03 16:45:33 +03:00
Veikka Tuominen
02112f8836
AstGen: add error for break/continue out of defer expression
2022-08-03 16:45:33 +03:00
Veikka Tuominen
6547c3887e
Sema: add error for closure capture at runtime
2022-08-03 16:45:33 +03:00