Andrew Kelley
b2e94de358
add compile error test for pointless discards
2022-09-13 10:01:17 -07:00
Andrew Kelley
ebd082d3f6
remove pointless discards in test cases
2022-09-13 02:04:20 -07:00
Veikka Tuominen
e323cf1264
stage2: change how defers are stored in Zir
...
Storing defers this way has the benefits that the defer doesn't get
analyzed multiple times in AstGen, it takes up less space, and it
makes Sema aware of defers allowing for 'unreachable else prong'
error on error sets in generic code.
The disadvantage is that it is a bit more complex and errdefers with
payloads now emit a placeholder instruction (but those are rare).
Sema.zig before:
Total ZIR bytes: 3.7794370651245117MiB
Instructions: 238996 (2.051319122314453MiB)
String Table Bytes: 89.2802734375KiB
Extra Data Items: 430144 (1.640869140625MiB)
Sema.zig after:
Total ZIR bytes: 3.3344192504882812MiB
Instructions: 211829 (1.8181428909301758MiB)
String Table Bytes: 89.2802734375KiB
Extra Data Items: 374611 (1.4290275573730469MiB)
2022-09-12 01:52:44 -04:00
Jacob Young
5b9c5191ab
type: print comptime on fn type params
...
This avoids the following confusing error message:
error: expected type 'fn(i32, i32) void', found 'fn(i32, i32) void'
2022-09-10 01:55:52 +03:00
Veikka Tuominen
99826a2ba8
Sema: fix UAF in zirClosureGet
...
Previously if a decl failed its capture scope would be deallocated and
set to undefined which would then lead to invalid dereference in
`zirClosureGet`. To avoid this set the capture scope to a special
failed state and fail the current decl with dependency failure if
the failed state is encountered in `zirClosureGet`.
Closes #12433
Closes #12530
Closes #12593
2022-09-08 00:37:11 +03:00
Veikka Tuominen
0fa80e66b7
Sema: correct types in @memset and @memcpy
...
Closes #12750
2022-09-08 00:37:11 +03:00
Veikka Tuominen
b83c037f9f
Sema: only ABI sized packed structs are extern compatible
2022-09-03 01:04:46 +03:00
Veikka Tuominen
f281f3d10e
Sema: improve behavior of comptime_int backed enums
2022-09-02 17:57:11 +03:00
Veikka Tuominen
a9cdacff95
Sema: add error for enum tag value overflow
...
Closes #12291
2022-09-02 17:57:11 +03:00
Veikka Tuominen
7a51e0befe
Sema: fix noalias coercion error message
...
Closes #11769
2022-09-02 17:57:11 +03:00
Veikka Tuominen
1c4c68e6ba
AstGen: use reachableExpr for try operand
...
Closes #12248
2022-09-02 17:57:10 +03:00
Veikka Tuominen
2cd3989cb3
Sema: add more validation to coerceVarArgParam
...
Closes #12706
2022-09-01 13:16:33 +03:00
Veikka Tuominen
d3b4b2edf1
Sema: shift of comptime int with runtime value
...
Closes #12290
2022-08-30 12:22:07 -07:00
Veikka Tuominen
01d19a8d3c
Sema: do not emit generic poison for non generic parameters
...
Closes #12679
2022-08-30 12:22:07 -07:00
Veikka Tuominen
67a44211f7
Sema: improve handling of always_tail call modifier
...
Closes #4301
Closes #5692
Closes #6281
Closes #10786
Closes #11149
Closes #11776
2022-08-30 12:22:07 -07:00
Veikka Tuominen
a4b52ccd9f
Sema: fix access of inactive union field when enum and union fields are in different order
...
Closes #12667
2022-08-29 13:45:37 -07:00
Veikka Tuominen
6aead18ab3
add error tests for now correctly behaving cases
...
Closes #6377
2022-08-28 15:41:21 +03:00
Veikka Tuominen
1401890ed5
Sema: add error for switch on slice
...
Closes #12651
2022-08-28 15:41:21 +03:00
Veikka Tuominen
fc213e2d61
AstGen: add error for named function type
...
Closes #12660
2022-08-28 15:41:21 +03:00
antlilja
ae8d26a6a0
Sema: add error for non-comptime param in comptime func
...
Adds error for taking a non comptime parameter in a function returning a
comptime-only type but not when that type is dependent on a parameter.
Co-authored-by: Veikka Tuominen <git@vexu.eu>
2022-08-27 11:17:48 +03:00
Veikka Tuominen
4405188cf7
Sema: ignore comptime params in partial func type check
...
This fixes a bug exposed by cd1833044a
where a function type would be converted to generic_poison even after
being instantiated due to containing comptime only types.
This could also be fixed by just checking `is_generic_instantiation`
but this way also provides better type names.
Closes #12625
2022-08-25 16:29:23 +03:00
Andrew Kelley
7a881435ed
Merge pull request #12623 from Vexu/stage2-fixes
...
Stage2 fixes
2022-08-24 15:59:46 -04:00
Andrew Kelley
2a96209c40
Merge pull request #12574 from Vexu/remove-bit-op-type-param
...
stage2+stage1: remove type parameter from bit builtins
2022-08-24 15:57:44 -04:00
Veikka Tuominen
69a3c4e279
Sema: correctly reset inst_map for analyzeInlineCallArg
...
Closes #12622
2022-08-24 21:31:02 +03:00
Veikka Tuominen
1d0b729f28
Sema: fix crash on slice of non-array type
...
Closes #12621
2022-08-24 21:31:02 +03:00
Veikka Tuominen
cd1833044a
Sema: do not construct nested partial function types
...
Closes #12616
2022-08-24 21:31:02 +03:00
Veikka Tuominen
5404dcdfd8
Sema: fix fieldCallBind on tuples and anon structs
...
Closes #12573
2022-08-22 14:31:58 +03:00
Veikka Tuominen
62ff8871ed
stage2+stage1: remove type parameter from bit builtins
...
Closes #12529
Closes #12511
Closes #6835
2022-08-22 11:19:20 +03:00
Veikka Tuominen
b55a5007fa
Sema: fix parameter of type 'T' must be comptime error
...
Closes #12519
Closes #12505
2022-08-22 11:16:36 +03:00
Veikka Tuominen
e8102d8738
Sema: add note about function call being comptime because of comptime only return type
2022-08-21 12:24:48 +03:00
zooster
4055e6055b
AstGen: disallow leading zeroes in int literals and int types
...
This makes `0123` and `u0123` etc. illegal.
I'm now confident that this is a good change because
I actually caught two C header translation mistakes in `haiku.zig` with this.
Clearly, `0123` being octal in C (TIL) can cause confusion, and we make this easier to read by
requiring `0o` as the prefix and now also disallowing leading zeroes in integers.
For consistency and because it looks weird, we disallow it for integer types too (e.g. `u0123`).
Fixes #11963
Fixes #12417
2022-08-18 19:54:51 +03:00
Veikka Tuominen
b038dba06b
Merge pull request #12462 from Vexu/stage2-noreturn
...
Stage2: improve behavior of noreturn
2022-08-18 17:18:57 +03:00
Andrew Kelley
2cccd14491
fix typo in compile error message
2022-08-17 14:09:42 -07:00
Veikka Tuominen
59b6483d63
add test
2022-08-17 14:09:42 -07:00
Veikka Tuominen
233049503a
Sema: allow empty enums and unions
2022-08-17 23:03:04 +03:00
Veikka Tuominen
c3d5428cba
Sema: properly handle noreturn fields in unions
2022-08-17 22:07:48 +03:00
Veikka Tuominen
b0a55e1b3b
Sema: make noreturn error union behave correctly
2022-08-17 20:10:18 +03:00
Veikka Tuominen
db0f372da8
Sema: make optional noreturn behave correctly
2022-08-17 20:10:18 +03:00
Veikka Tuominen
9d4561ef00
AstGen: detect declarations shadowing locals
...
Closes #9355
2022-08-16 20:35:03 +03:00
LeRoyce Pearson
cb901e578c
stage2: add compile errors for comptime @shrExact and @divExact failures
2022-08-15 11:28:42 +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
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
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
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
Veikka Tuominen
c76b5c1a31
stage2: correct node offset of nested declarations
2022-08-09 11:59:10 +03:00
Veikka Tuominen
d769fd0102
stage2: pass anon name strategy to reify
2022-08-08 18:28:39 -07:00
Andrew Kelley
11c715cd5a
remove brittle test case
...
see #12358
2022-08-07 16:07:21 -07:00