lang: Port TestAstFunc1 to txtar format
This commit is contained in:
61
lang/interpret_test/TestAstFunc1/changing-func.txtar
Normal file
61
lang/interpret_test/TestAstFunc1/changing-func.txtar
Normal file
@@ -0,0 +1,61 @@
|
||||
-- main.mcl --
|
||||
# this can return changing functions, and could be optimized, too
|
||||
func funcgen($b) {
|
||||
if $b {
|
||||
func() {
|
||||
"hello"
|
||||
}
|
||||
} else {
|
||||
func() {
|
||||
"world"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$fn1 = funcgen(true)
|
||||
$fn2 = funcgen(false)
|
||||
|
||||
$out1 = $fn1()
|
||||
$out2 = $fn2()
|
||||
|
||||
test $out1 {}
|
||||
test $out2 {}
|
||||
-- OUTPUT --
|
||||
Edge: bool(false) -> call:funcgen(bool(false)) # b
|
||||
Edge: bool(false) -> var(b) # var:b
|
||||
Edge: bool(true) -> call:funcgen(bool(true)) # b
|
||||
Edge: bool(true) -> var(b) # var:b
|
||||
Edge: call:fn1() -> var(out1) # var:out1
|
||||
Edge: call:fn2() -> var(out2) # var:out2
|
||||
Edge: call:funcgen(bool(false)) -> call:fn2() # call:fn2
|
||||
Edge: call:funcgen(bool(true)) -> call:fn1() # call:fn1
|
||||
Edge: func() { str("hello") } -> if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } # a
|
||||
Edge: func() { str("hello") } -> if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } # a
|
||||
Edge: func() { str("world") } -> if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } # b
|
||||
Edge: func() { str("world") } -> if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } # b
|
||||
Edge: func(b) { if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } } -> call:funcgen(bool(false)) # call:funcgen
|
||||
Edge: func(b) { if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } } -> call:funcgen(bool(true)) # call:funcgen
|
||||
Edge: if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } -> func(b) { if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } } # body
|
||||
Edge: if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } -> func(b) { if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } } # body
|
||||
Edge: str("hello") -> func() { str("hello") } # body
|
||||
Edge: str("world") -> func() { str("world") } # body
|
||||
Edge: var(b) -> if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } # c
|
||||
Edge: var(b) -> if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } # c
|
||||
Vertex: bool(false)
|
||||
Vertex: bool(true)
|
||||
Vertex: call:fn1()
|
||||
Vertex: call:fn2()
|
||||
Vertex: call:funcgen(bool(false))
|
||||
Vertex: call:funcgen(bool(true))
|
||||
Vertex: func() { str("hello") }
|
||||
Vertex: func() { str("world") }
|
||||
Vertex: func(b) { if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } }
|
||||
Vertex: func(b) { if( var(b) ) { func() { str("hello") } } else { func() { str("world") } } }
|
||||
Vertex: if( var(b) ) { func() { str("hello") } } else { func() { str("world") } }
|
||||
Vertex: if( var(b) ) { func() { str("hello") } } else { func() { str("world") } }
|
||||
Vertex: str("hello")
|
||||
Vertex: str("world")
|
||||
Vertex: var(b)
|
||||
Vertex: var(b)
|
||||
Vertex: var(out1)
|
||||
Vertex: var(out2)
|
||||
Reference in New Issue
Block a user