Mark system.newStringUninit sideeffect-free (#24813)

- Allows using with `--experimental:strictFuncs`
- `{.cast(noSideEffect).}:` inside the proc was required to mutate
`s.len`, same as used in `newSeqImpl`.
- Removed now unnecessary `noSideEffect` casts in `system.nim`
-
Closes #24811

Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
(cherry picked from commit ecdcffed4b)
This commit is contained in:
Zoom
2025-03-28 18:06:22 +04:00
committed by narimiran
parent 2c7577745b
commit 1d0e1679a8
3 changed files with 14 additions and 15 deletions

View File

@@ -2356,8 +2356,7 @@ func multiReplace*(s: openArray[char]; replacements: varargs[(set[char], char)])
# Sanitize a filename with Windows-incompatible characters
const file = "a/file:with?invalid*chars.txt"
doAssert file.multiReplace(WinSanitationRules) == "a-file-with_invalid_chars.txt"
{.cast(noSideEffect).}:
result = newStringUninit(s.len)
result = newStringUninit(s.len)
for i in 0..<s.len:
var nextChar = s[i]
for subs, by in replacements.items: