fixes #25620 This pull request includes a fix to the type key generation logic in the compiler and updates to a test file to cover additional language features. The most important changes are summarized below: ### Compiler logic fix * In `compiler/typekeys.nim`, the `typeKey` procedure was updated to iterate over all elements in `t.sonsImpl` starting from index 0 instead of 1, ensuring that all type sons are considered during type key generation. ### Test suite improvements * The test file `tests/ic/tenum.nim` was renamed to `tests/ic/tmiscs.nim`, and its output expectations were updated to reflect the new test cases. * Added new test cases to `tests/ic/tmiscs.nim` to cover sink and move semantics, including the definition of a `BigObj` type and a `consume` procedure that demonstrates moving and consuming large objects. ```nim # Sink and move semantics type BigObj = object data: seq[int] proc consume(x: sink BigObj) = echo x.data.len var b = BigObj(data: @[1, 2, 3, 4, 5]) consume(move b) ``` gives ``` error: passing 'tySequence__qwqHTkRvwhrRyENtudHQ7g' (aka 'struct tySequence__qwqHTkRvwhrRyENtudHQ7g') to parameter of incompatible type 'tySequence__cTyVHeHOWk5jStsToosJ8Q' (aka 'struct tySequence__cTyVHeHOWk5jStsToosJ8Q') 84 | eqdestroy___sysma2dyk_u75((*dest_p0).data); ``` follows up https://github.com/nim-lang/Nim/pull/25614
This directory contains the test cases.
Each test must have a filename of the form: t*.nim
Note: Testament is only aware of tests under a directory (eg tests/foo/) and will ignore
top-level tests like tests/tbar.nim.
Specs
Each test can contain a spec in a discard """ ... """ block.
Check out the parseSpec procedure in the specs module for a full and reliable reference
action
Specifies what action this test should take.
Default: run
Options:
compile- compiles the module and fails the test if compilations fails.run- compiles and runs the module, fails the test if compilation or execution of test code fails.reject- compiles the module and fails the test if compilation succeeds.
There are certain spec keys that imply run, including output and
outputsub.
Categories
Each folder under this directory represents a test category, which can be
tested by running koch tests pcat <category> (or cat to avoid parallel
testing, which is slower).
The folder dll contains simple DLL tests.
The folder realtimeGC contains a test for validating that the realtime GC
can run properly without linking against the nimrtl.dll/so.