mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-20 22:35:24 +00:00
fixes #4299 fixes #12492 fixes #10849 It binds `function` with `env`: `function.bind(:env)` to ease codegen for now
This commit is contained in:
47
tests/stdlib/tclosures.nim
Normal file
47
tests/stdlib/tclosures.nim
Normal file
@@ -0,0 +1,47 @@
|
||||
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
|
||||
Reference in New Issue
Block a user