mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-05 12:37:46 +00:00
fixes #24472 Excluding variables which are initialized in the nimvm branch so that they won't interfere the other branch
This commit is contained in:
@@ -212,6 +212,7 @@ proc varDecl(a: PEffects; n: PNode) {.inline.} =
|
||||
proc skipHiddenDeref(n: PNode): PNode {.inline.} =
|
||||
result = if n.kind == nkHiddenDeref: n[0] else: n
|
||||
|
||||
|
||||
proc initVar(a: PEffects, n: PNode; volatileCheck: bool) =
|
||||
let n = skipHiddenDeref(n)
|
||||
if n.kind != nkSym: return
|
||||
@@ -1302,7 +1303,9 @@ proc track(tracked: PEffects, n: PNode) =
|
||||
track(tracked, last)
|
||||
of nkCaseStmt: trackCase(tracked, n)
|
||||
of nkWhen: # This should be a "when nimvm" node.
|
||||
let oldState = tracked.init.len
|
||||
track(tracked, n[0][1])
|
||||
tracked.init.setLen(oldState)
|
||||
track(tracked, n[1][0])
|
||||
of nkIfStmt, nkIfExpr: trackIf(tracked, n)
|
||||
of nkBlockStmt, nkBlockExpr: trackBlock(tracked, n[1])
|
||||
|
||||
@@ -19,6 +19,7 @@ proc volatileLoad*[T](src: ptr T): T {.inline, noinit.} =
|
||||
when defined(js):
|
||||
result = src[]
|
||||
else:
|
||||
result = default(T)
|
||||
{.emit: [result, " = (*(", typeof(src[]), " volatile*)", src, ");"].}
|
||||
|
||||
proc volatileStore*[T](dest: ptr T, val: T) {.inline.} =
|
||||
|
||||
@@ -138,7 +138,7 @@ pkg "plotly", "nim c examples/all.nim"
|
||||
pkg "pnm"
|
||||
pkg "polypbren"
|
||||
pkg "presto"
|
||||
# pkg "prologue", "nimble tcompile"
|
||||
pkg "prologue", "nimble tcompile"
|
||||
pkg "protobuf", "nim c -o:protobuff -r src/protobuf.nim"
|
||||
pkg "rbtree"
|
||||
pkg "react", "nimble example"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
discard """
|
||||
targets: "cpp"
|
||||
output: "hello"
|
||||
cmd: "nim cpp --legacy:nostrictdefs --clearNimblePath --nimblePath:build/deps/pkgs2 $file"
|
||||
cmd: "nim cpp --clearNimblePath --nimblePath:build/deps/pkgs2 $file"
|
||||
"""
|
||||
|
||||
# bug #3299
|
||||
|
||||
@@ -83,3 +83,21 @@ proc foo2 =
|
||||
doAssert z == 3
|
||||
|
||||
foo2()
|
||||
|
||||
# bug #24472
|
||||
template bar1314(): bool =
|
||||
let hello = true
|
||||
hello
|
||||
|
||||
template foo1314*(val: bool): bool =
|
||||
when nimvm:
|
||||
val
|
||||
else:
|
||||
val
|
||||
|
||||
proc test() = # Doesn't fail when top level
|
||||
# Original code is calling `unlikely` which has a `nimvm` branch
|
||||
let s = foo1314(bar1314())
|
||||
doAssert s
|
||||
|
||||
test()
|
||||
|
||||
Reference in New Issue
Block a user