aboutsummaryrefslogtreecommitdiff
path: root/test/cases
AgeCommit message (Collapse)Author
2025-09-16test: pull tests in test/cases/llvm/ up to test/cases/Alex Rønne Petersen
There is nothing inherently LLVM-specific about any of these.
2025-09-16test: delete old stage1 compile_errors testsAlex Rønne Petersen
generic_function_returning_opaque_type.zig was salvaged as it's still worth having.
2025-09-16test: rename backend=stage2 to backend=selfhosted, and add backend=autoAlex Rønne Petersen
backend=auto (now the default if backend is omitted) means to let the compiler pick whatever backend it wants as the default. This is important for platforms where we don't yet have a self-hosted backend, such as loongarch64. Also purge a bunch of redundant target=native.
2025-09-15frontend: fix reference tracking through coerced function bodiesmlugg
This bug was manifesting for user as a nasty link error because they were calling their application's main entry point as a coerced function, which essentially broke reference tracking for the entire ZCU, causing exported symbols to silently not get exported. I've been a little unsure about how coerced functions should interact with the unit graph before, but the solution is actually really obvious now: they shouldn't! `Sema` is now responsible for unwrapping possibly-coerced functions *before* queuing analysis or marking unit references. This makes the reference graph optimal (there are no redundant edges representing coerced versions of the same function) and simplifies logic elsewhere at the expense of just a few lines in Sema.
2025-09-07add compile error test caseAndrew Kelley
2025-09-05add compile error test case for new errorAndrew Kelley
2025-08-15Zcu: don't tell linkers about exports if there are compile errorsmlugg
In the best case, this is redundant work, because we aren't actually going to emit a working binary this update. In the worst case, it causes bugs because the linker may not have *seen* the thing being exported due to the compile errors. Resolves: #24417
2025-08-15fix: print error set members in a consistent orderWill Lillis
Co-authored-by: Matthew Lugg <mlugg@mlugg.co.uk>
2025-08-13Merge pull request #24674 from Justus2308/undef-shift-bitwiseMatthew Lugg
Sema: Improve comptime arithmetic undef handling
2025-08-12add remaining undef value tests ; fix `@truncate` undef retval typeJustus Klausecker
2025-08-12add undef shift tests ; mirror `zirShl` logic for `@shlWithOverflow`Justus Klausecker
2025-08-12remove redundant test casesJustus Klausecker
2025-08-12address most commentsJustus Klausecker
2025-08-12make `>>` a compile error with any undef arg ; add a bunch of test casesJustus Klausecker
2025-08-12Sema: Improve comptime arithmetic undef handlingJustus Klausecker
This commit expands on the foundations laid by https://github.com/ziglang/zig/pull/23177 and moves even more `Sema`-only functionality from `Value` to `Sema.arith`. Specifically all shift and bitwise operations, `@truncate`, `@bitReverse` and `@byteSwap` have been moved and adapted to the new rules around `undefined`. Especially the comptime shift operations have been basically rewritten, fixing many open issues in the process. New rules applied to operators: * `<<`, `@shlExact`, `@shlWithOverflow`, `>>`, `@shrExact`: compile error if any operand is undef * `<<|`, `~`, `^`, `@truncate`, `@bitReverse`, `@byteSwap`: return undef if any operand is undef * `&`, `|`: Return undef if both operands are undef, turn undef into actual `0xAA` bytes otherwise Additionally this commit canonicalizes the representation of aggregates with all-undefined members in the `InternPool` by disallowing them and enforcing the usage of a single typed `undef` value instead. This reduces the amount of edge cases and fixes a bunch of bugs related to partially undefined vecs. List of operations directly affected by this patch: * `<<`, `<<|`, `@shlExact`, `@shlWithOverflow` * `>>`, `@shrExact` * `&`, `|`, `~`, `^` and their atomic rmw + reduce pendants * `@truncate`, `@bitReverse`, `@byteSwap`
2025-08-07address commentsJustus Klausecker
2025-08-07Add support for both '_' and 'else' prongs at the same time in switch statementsJustus Klausecker
If both are used, 'else' handles named members and '_' handles unnamed members. In this case the 'else' prong will be unrolled to an explicit case containing all remaining named values.
2025-08-07Permit explicit tags with '_' switch prongJustus Klausecker
Mainly affects ZIR representation of switch_block[_ref] and special prong (detection) logic for switch. Adds a new SpecialProng tag 'absorbing_under' that allows specifying additional explicit tags in a '_' prong which are respected when checking that every value is handled during semantic analysis but are not transformed into AIR and instead 'absorbed' by the '_' branch.
2025-08-03zig fmt: apply new cast builtin orderJustus Klausecker
2025-08-02disallow alignment on packed union fieldsDavid Rubin
2025-08-01remove usages of `.alignment = 0`David Rubin
2025-08-01Sema: compile error on reifying align(0) struct fieldsDavid Rubin
2025-07-31Sema: remove incorrect `requireRuntimeBlock` callsJackson Wambolt
Part of #22353 Resolves: #24273 Co-Authored-By: Matthew Lugg <mlugg@mlugg.co.uk>
2025-07-31Merge pull request #24632 from mlugg/lossy-int-to-float-coercionMatthew Lugg
Sema: compile error on lossy int to float coercion
2025-07-31Sema: add note suggesting dropping try on non error-unionsmikastiv
2025-07-31Sema: disallow slicing many-item pointer with different sentineldweiller
This change prevents adding or changing the sentinel in the type of a many-item pointer via the slicing syntax `ptr[a.. :S]`.
2025-07-31Sema: compile error on lossy int to float coercionmlugg
Resolves: #21586
2025-07-30Sema: check min/max operand typesJackson Wambolt
2025-07-30Merge pull request #24278 from gooncreeper/atomic-fixesMatthew Lugg
atomic fixes and clarification
2025-07-30Sema: disallow tags on non-auto unions when reifying (#23488)Krzysztof Wolicki
2025-07-30Sema: catch error sets in atomic operationsKendall Condon
also fix the struct test
2025-07-26aarch64: implement some safety checksJacob Young
Closes #24553
2025-07-19tests: remove more old async testsmlugg
The rejection of #6025 indicates that if stackless coroutines return to Zig, they will look quite different; see #23446 for the working draft proposal for their return (though it will definitely be tweaked before being accepted). Some of this test coverage was deleted in 40d11cc, but because stackless coroutines will take on a new form if re-introduced, I anticipate that essentially *none* of this coverage will be relevant. Of course, if it for some reason is, we can always grab it from the Git history.
2025-07-17test: Restore and fix deleted tests that relied on intern pool types (#24422)Felix Koppe
2025-07-16zig fmtAndrew Kelley
2025-07-11Remove numerous things deprecated during the 0.14 release cycleLinus Groh
Basically everything that has a direct replacement or no uses left. Notable omissions: - std.ArrayHashMap: Too much fallout, needs a separate cleanup. - std.debug.runtime_safety: Too much fallout. - std.heap.GeneralPurposeAllocator: Lots of references to it remain, not a simple find and replace as "debug allocator" is not equivalent to "general purpose allocator". - std.io.Reader: Is being reworked at the moment. - std.unicode.utf8Decode(): No replacement, needs a new API first. - Manifest backwards compat options: Removal would break test data used by TestFetchBuilder. - panic handler needs to be a namespace: Many tests still rely on it being a function, needs a separate cleanup.
2025-07-07fix test case expected float valueAndrew Kelley
it's better now
2025-07-07remove `usingnamespace` from the languageAndrew Kelley
closes #20663
2025-07-07remove `async` and `await` keywordsAndrew Kelley
Also remove `@frameSize`, closing #3654. While the other machinery might remain depending on #23446, it is settled that there will not be `async`/ `await` keywords in the language.
2025-06-29Sema: correct OPV for optional empty error setAndrew Kelley
prevents crashes in backends; improves codegen; provides more comptime-ness.
2025-06-23remove `spirv` cpu archAli Cheraghi
2025-06-17Merge pull request #24188 from mlugg/intfromfloat-safetyMatthew Lugg
Absorb std.math.big.rational logic into std.math.big.int; fix `@intFromFloat` safety check
2025-06-16rename spirv backend nameAli Cheraghi
`stage2_spirv64` -> `stage2_spirv`
2025-06-15compiler: fix `@intFromFloat` safety checkmlugg
This safety check was completely broken; it triggered unchecked illegal behavior *in order to implement the safety check*. You definitely can't do that! Instead, we must explicitly check the boundaries. This is a tiny bit fiddly, because we need to make sure we do floating-point rounding in the correct direction, and also handle the fact that the operation truncates so the boundary works differently for min vs max. Instead of implementing this safety check in Sema, there are now dedicated AIR instructions for safety-checked intfromfloat (two instructions; which one is used depends on the float mode). Currently, no backend directly implements them; instead, a `Legalize.Feature` is added which expands the safety check, and this feature is enabled for all backends we currently test, including the LLVM backend. The `u0` case is still handled in Sema, because Sema needs to check for that anyway due to the comptime-known result. The old safety check here was also completely broken and has therefore been rewritten. In that case, we just check for 'abs(input) < 1.0'. I've added a bunch of test coverage for the boundary cases of `@intFromFloat`, both for successes (in `test/behavior/cast.zig`) and failures (in `test/cases/safety/`). Resolves: #24161
2025-06-13Sema: add missing error and test for bool not on vector of intsAndrew Kelley
2025-06-07seriously don't put internpool indexes in test casesAndrew Kelley
2025-06-07don't put intern pool indexes in test casesAndrew Kelley
2025-06-07Merge pull request #24072 from jacobly0/x86_64-defaultAndrew Kelley
Compilation: enable the x86_64 backend by default for debug builds
2025-06-07cases: fix type namesmlugg
A different merge must have changed these numbers before this PR was merged, leading to CI failures.
2025-06-06x86_64: add support for pie executablesJacob Young