mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-21 06:45:27 +00:00
enable experimental:strictDefs (#24225)
This commit is contained in:
@@ -140,4 +140,5 @@ proc addFloat*(result: var string; x: float | float32) {.inline.} =
|
||||
when defined(nimPreviewSlimSystem):
|
||||
func `$`*(x: float | float32): string =
|
||||
## Outplace version of `addFloat`.
|
||||
result = ""
|
||||
result.addFloat(x)
|
||||
|
||||
@@ -186,7 +186,7 @@ proc discKeyMatch[T](obj: T, json: JsonNode, key: static string): bool =
|
||||
if not json.hasKey key:
|
||||
return true
|
||||
let field = accessField(obj, key)
|
||||
var jsonVal: typeof(field)
|
||||
var jsonVal: typeof(field) = default(typeof(field))
|
||||
fromJson(jsonVal, json[key])
|
||||
if jsonVal != field:
|
||||
return false
|
||||
@@ -293,6 +293,7 @@ proc fromJson*[T](a: var T, b: JsonNode, opt = Joptions()) =
|
||||
|
||||
proc jsonTo*(b: JsonNode, T: typedesc, opt = Joptions()): T =
|
||||
## reverse of `toJson`
|
||||
result = default(T)
|
||||
fromJson(result, b, opt)
|
||||
|
||||
proc toJson*[T](a: T, opt = initToJsonOptions()): JsonNode =
|
||||
|
||||
@@ -462,7 +462,7 @@ proc union*[A](s1, s2: PackedSet[A]): PackedSet[A] =
|
||||
c = union(a, b)
|
||||
assert c.len == 5
|
||||
assert c == [1, 2, 3, 4, 5].toPackedSet
|
||||
|
||||
result = default(PackedSet[A])
|
||||
result.assign(s1)
|
||||
incl(result, s2)
|
||||
|
||||
@@ -509,7 +509,7 @@ proc symmetricDifference*[A](s1, s2: PackedSet[A]): PackedSet[A] =
|
||||
c = symmetricDifference(a, b)
|
||||
assert c.len == 4
|
||||
assert c == [1, 2, 4, 5].toPackedSet
|
||||
|
||||
result = default(PackedSet[A])
|
||||
result.assign(s1)
|
||||
for item in s2.items:
|
||||
if containsOrIncl(result, item):
|
||||
|
||||
@@ -63,7 +63,7 @@ proc threadFunc(obj: ptr seq[int]) {.thread.} =
|
||||
proc threadHandler() =
|
||||
var thr: array[0..4, Thread[ptr seq[int]]]
|
||||
var s = newSeq[int]()
|
||||
|
||||
|
||||
for i in 0..high(thr):
|
||||
createThread(thr[i], threadFunc, s.addr)
|
||||
joinThreads(thr)
|
||||
@@ -137,6 +137,7 @@ when defined(zephyr):
|
||||
{.push stack_trace:off.}
|
||||
when defined(windows):
|
||||
proc threadProcWrapper[TArg](closure: pointer): int32 {.stdcall.} =
|
||||
result = 0'i32
|
||||
nimThreadProcWrapperBody(closure)
|
||||
# implicitly return 0
|
||||
elif defined(genode):
|
||||
@@ -144,6 +145,7 @@ elif defined(genode):
|
||||
nimThreadProcWrapperBody(closure)
|
||||
else:
|
||||
proc threadProcWrapper[TArg](closure: pointer): pointer {.noconv.} =
|
||||
result = nil
|
||||
nimThreadProcWrapperBody(closure)
|
||||
{.pop.}
|
||||
|
||||
@@ -164,7 +166,7 @@ when hostOS == "windows":
|
||||
|
||||
proc joinThreads*[TArg](t: varargs[Thread[TArg]]) =
|
||||
## Waits for every thread in `t` to finish.
|
||||
var a: array[MAXIMUM_WAIT_OBJECTS, SysThread]
|
||||
var a: array[MAXIMUM_WAIT_OBJECTS, SysThread] = default(array[MAXIMUM_WAIT_OBJECTS, SysThread])
|
||||
var k = 0
|
||||
while k < len(t):
|
||||
var count = min(len(t) - k, MAXIMUM_WAIT_OBJECTS)
|
||||
@@ -220,7 +222,7 @@ when hostOS == "windows":
|
||||
when TArg isnot void: t.data = param
|
||||
t.dataFn = tp
|
||||
when hasSharedHeap: t.core.stackSize = ThreadStackSize
|
||||
var dummyThreadId: int32
|
||||
var dummyThreadId: int32 = 0'i32
|
||||
t.sys = createThread(nil, ThreadStackSize, threadProcWrapper[TArg],
|
||||
addr(t), 0'i32, dummyThreadId)
|
||||
if t.sys <= 0:
|
||||
|
||||
@@ -58,7 +58,7 @@ proc finalize(n: NimNode, lhs: NimNode, level: int): NimNode =
|
||||
if level == 0:
|
||||
result = quote: `lhs` = `n`
|
||||
else:
|
||||
result = quote: (let `lhs` = `n`)
|
||||
result = quote: (var `lhs` = `n`)
|
||||
|
||||
proc process(n: NimNode, lhs: NimNode, label: NimNode, level: int): NimNode =
|
||||
var n = n.copyNimTree
|
||||
@@ -77,7 +77,7 @@ proc process(n: NimNode, lhs: NimNode, label: NimNode, level: int): NimNode =
|
||||
let check = it[1]
|
||||
let okSet = check[1]
|
||||
let kind1 = check[2]
|
||||
let tmp = genSym(nskLet, "tmpCase")
|
||||
let tmp = genSym(nskVar, "tmpCase")
|
||||
let body = process(objRef, tmp, label, level + 1)
|
||||
let tmp3 = nnkDerefExpr.newTree(tmp)
|
||||
it[0][0] = tmp3
|
||||
@@ -91,7 +91,7 @@ proc process(n: NimNode, lhs: NimNode, label: NimNode, level: int): NimNode =
|
||||
`assgn`
|
||||
break
|
||||
elif it.kind in {nnkHiddenDeref, nnkDerefExpr}:
|
||||
let tmp = genSym(nskLet, "tmp")
|
||||
let tmp = genSym(nskVar, "tmp")
|
||||
let body = process(it[0], tmp, label, level + 1)
|
||||
it[0] = tmp
|
||||
let assgn = finalize(n, lhs, level)
|
||||
@@ -116,7 +116,7 @@ macro `?.`*(a: typed): auto =
|
||||
let label = genSym(nskLabel, "label")
|
||||
let body = process(a, lhs, label, 0)
|
||||
result = quote do:
|
||||
var `lhs`: type(`a`)
|
||||
var `lhs`: type(`a`) = default(type(`a`))
|
||||
block `label`:
|
||||
`body`
|
||||
`lhs`
|
||||
@@ -148,9 +148,9 @@ macro `??.`*(a: typed): Option =
|
||||
let label = genSym(nskLabel, "label")
|
||||
let body = process(a, lhs2, label, 0)
|
||||
result = quote do:
|
||||
var `lhs`: Option[type(`a`)]
|
||||
var `lhs`: Option[type(`a`)] = default(Option[type(`a`)])
|
||||
block `label`:
|
||||
var `lhs2`: type(`a`)
|
||||
var `lhs2`: type(`a`) = default(type(`a`))
|
||||
`body`
|
||||
`lhs` = option(`lhs2`)
|
||||
`lhs`
|
||||
|
||||
Reference in New Issue
Block a user