Files
Nim/tests/stdlib/tclosures.nim
ringabout 779bc8474b fixes #4299 #12492 #10849; lambda lifting for JS backend (#23484)
fixes #4299 
fixes #12492 
fixes #10849

It binds `function` with `env`: `function.bind(:env)` to ease codegen
for now
2024-04-11 09:14:56 +02:00

48 lines
657 B
Nim

discard """
targets: "c js"
"""
import std/assertions
block: # bug #4299
proc scopeProc() =
proc normalProc() =
discard
proc genericProc[T]() =
normalProc()
genericProc[string]()
scopeProc()
block: # bug #12492
proc foo() =
var i = 0
proc bar() =
inc i
bar()
doAssert i == 1
foo()
static:
foo()
block: # bug #10849
type
Generic[T] = ref object
getState: proc(): T
proc newGeneric[T](): Generic[T] =
var state: T
proc getState[T](): T =
state
Generic[T](getState: getState)
let g = newGeneric[int]()
let state = g.getState()
doAssert state == 0