diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2020-08-18 12:45:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-18 12:45:22 +0200 |
commit | ddff13f01b4704dbe22d8b6c86a606675a1700b0 (patch) | |
tree | 38666ff6bb0ce64d01e7dcb173c28991a87f4f20 /lib/pure | |
parent | e194cb41a4502d3d8b5e4426fbd72e8d80513c3b (diff) | |
download | Nim-ddff13f01b4704dbe22d8b6c86a606675a1700b0.tar.gz |
better strict funcs, WIP (#15199)
* better strict funcs, WIP * progress
Diffstat (limited to 'lib/pure')
-rw-r--r-- | lib/pure/mimetypes.nim | 3 | ||||
-rw-r--r-- | lib/pure/strtabs.nim | 13 |
2 files changed, 10 insertions, 6 deletions
diff --git a/lib/pure/mimetypes.nim b/lib/pure/mimetypes.nim index 3bbd0d243..206783929 100644 --- a/lib/pure/mimetypes.nim +++ b/lib/pure/mimetypes.nim @@ -1914,7 +1914,8 @@ func register*(mimedb: var MimeDB, ext: string, mimetype: string) = ## ``mimetype`` and ``ext`` are lowercased before registering on ``mimedb``. assert ext.strip.len > 0, "ext argument can not be empty string" assert mimetype.strip.len > 0, "mimetype argument can not be empty string" - mimedb.mimes[ext.toLowerAscii()] = mimetype.toLowerAscii() + {.noSideEffect.}: + mimedb.mimes[ext.toLowerAscii()] = mimetype.toLowerAscii() runnableExamples: static: diff --git a/lib/pure/strtabs.nim b/lib/pure/strtabs.nim index 676e8eb1d..4c2dd1451 100644 --- a/lib/pure/strtabs.nim +++ b/lib/pure/strtabs.nim @@ -252,7 +252,7 @@ proc `[]=`*(t: StringTableRef, key, val: string) {. inc(t.counter) proc newStringTable*(mode: StringTableMode): owned(StringTableRef) {. - rtlFunc, extern: "nst$1".} = + rtlFunc, extern: "nst$1", noSideEffect.} = ## Creates a new empty string table. ## ## See also: @@ -265,7 +265,7 @@ proc newStringTable*(mode: StringTableMode): owned(StringTableRef) {. proc newStringTable*(keyValuePairs: varargs[string], mode: StringTableMode): owned(StringTableRef) {. - rtlFunc, extern: "nst$1WithPairs".} = + rtlFunc, extern: "nst$1WithPairs", noSideEffect.} = ## Creates a new string table with given `key, value` string pairs. ## ## `StringTableMode` must be specified. @@ -276,12 +276,13 @@ proc newStringTable*(keyValuePairs: varargs[string], result = newStringTable(mode) var i = 0 while i < high(keyValuePairs): - result[keyValuePairs[i]] = keyValuePairs[i + 1] + {.noSideEffect.}: + result[keyValuePairs[i]] = keyValuePairs[i + 1] inc(i, 2) proc newStringTable*(keyValuePairs: varargs[tuple[key, val: string]], mode: StringTableMode = modeCaseSensitive): owned(StringTableRef) {. - rtlFunc, extern: "nst$1WithTableConstr".} = + rtlFunc, extern: "nst$1WithTableConstr", noSideEffect.} = ## Creates a new string table with given `(key, value)` tuple pairs. ## ## The default mode is case sensitive. @@ -291,7 +292,9 @@ proc newStringTable*(keyValuePairs: varargs[tuple[key, val: string]], mytab2 = newStringTable([("key3", "val3"), ("key4", "val4")]) result = newStringTable(mode) - for key, val in items(keyValuePairs): result[key] = val + for key, val in items(keyValuePairs): + {.noSideEffect.}: + result[key] = val proc raiseFormatException(s: string) = raise newException(ValueError, "format string: key not found: " & s) |