fixes #25735 This pull request updates how string-to-C-string conversions are handled when the `nimsso` configuration flag is enabled, and adds a new system test to validate the behavior. The main changes focus on switching from using `addrLoc` to `byRefLoc` for argument preparation, which likely improves correctness or compatibility with the `nimsso` mode. **Code generation improvements for `nimsso` mode:** * In both `compiler/ccgcalls.nim` (`genArgStringToCString`) and `compiler/ccgexprs.nim` (`convStrToCStr`), replaced the use of `addrLoc` with `byRefLoc` when preparing arguments for string-to-C-string conversions under the `nimsso` configuration flag. This change ensures that references are handled appropriately according to the requirements of `nimsso`. [[1]](diffhunk://#diff-42181cc6f4202af843e7835ea514df2efe85e4faae3bc797a39a0c422547b558L373-R373) [[2]](diffhunk://#diff-4509107d295d7d32b1887c8993cd0f56113ae60f36113e7d8778646dabd92ebcL2739-R2739) **Testing:** * Added a new system test `tests/system/tnimsso.nim` that runs with the `-d:nimsso` flag on both C and C++ targets, checking that string-to-C-string conversion works as expected in `nimsso` mode.
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.