You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
import cps
type C = ref object of RootObj
fn*: proc(c: C): C {.nimcall.}
proc add1(val: var int): C {.cpsMagic.} =
inc val
proc f(): C {.cps.} =
var a: int
cps add1(a)
block:
cps add1(a)
break
cps add1(a)
doAssert a == 2
=== .cps. on t ===
type
env_16985002 = ref object {.cpsLift.}of C
a: int
proc after_16985016(locals_16985029: C): C =
proc after_16985023(locals_16985026: C): C =
proc after_16985023(locals_16985026: C): C =
## installing locals for env env
var a: int = env_16985002(locals_16985026).a
## simple break statement
return env_16985002(fn: brake_16985017, a: a).C
return add1(env_16985002(fn: nil, a: a).C, a)
## post-cps call; time to bail
## split at: after - no body left
return nil
proc tail_16985027(locals_16985028: C): C =
proc brake_16985017(locals_16985018: C): C =
proc brake_16985017(locals_16985018: C): C =
## installing locals for env env
var a: int = env_16985002(locals_16985018).a
doAssert a == 2
proc tail_16985027(locals_16985028: C): C =
## installing locals for env env
var a: int = env_16985002(locals_16985028).a
## split at: brake
## new tail call: brake_16985017
return env_16985002(fn: brake_16985017, a: a).C
## creating a new proc: brake_16985017
proc after_16985016(locals_16985029: C): C =
## installing locals for env env
var a: int = env_16985002(locals_16985029).a
block:
return add1(env_16985002(fn: after_16985023, a: a).C, a)
## post-cps call; time to bail
## split at: after
## new tail call: after_16985023
return env_16985002(fn: after_16985023, a: a).C
## creating a new proc: after_16985023
## add tail call for block-break proc
## new tail call: tail_16985027
return env_16985002(fn: tail_16985027, a: a).C
## creating a new proc: tail_16985027
proc t(): C =
var a: int
return add1(env_16985002(fn: after_16985016, a: a).C, a)
## post-cps call; time to bail
## split at: after
## new tail call: after_16985016
return env_16985002(fn: after_16985016, a: a).C
## creating a new proc: after_16985016
/home/ico/sandbox/prjs/cps/tests/tzevv.nim(32, 7) template/generic instantiation of `suite` from here
/home/ico/sandbox/prjs/cps/tests/tzevv.nim(138, 8) template/generic instantiation of `test` from here
/home/ico/sandbox/prjs/cps/tests/tzevv.nim(139, 5) template/generic instantiation of `runCps` from here
/home/ico/sandbox/prjs/cps/tests/tzevv.nim(23, 17) template/generic instantiation of `cps` from here
/home/ico/sandbox/prjs/cps/cps.nim(368, 21) Error: expression 'brake_16985017' has no type (or is ambiguous)
The text was updated successfully, but these errors were encountered:
Related to #10?
The text was updated successfully, but these errors were encountered: