mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
543 lines
7.8 KiB
Nim
543 lines
7.8 KiB
Nim
discard """
|
|
nimout: '''
|
|
StmtList
|
|
Ident "foo010"
|
|
Call
|
|
Ident "foo020"
|
|
Call
|
|
Ident "foo030"
|
|
Ident "x"
|
|
Command
|
|
Ident "foo040"
|
|
Ident "x"
|
|
Call
|
|
Ident "foo050"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
Ident "foo060"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
Ident "foo070"
|
|
StrLit "test"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
Ident "foo080"
|
|
StrLit "test"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Command
|
|
Ident "foo090"
|
|
StrLit "test"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Command
|
|
Ident "foo100"
|
|
Call
|
|
StrLit "test"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Command
|
|
Ident "foo101"
|
|
Call
|
|
IntLit 10
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Command
|
|
Ident "foo110"
|
|
IntLit 1
|
|
Par
|
|
Infix
|
|
Ident "+"
|
|
IntLit 2
|
|
IntLit 3
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Command
|
|
Ident "foo120"
|
|
IntLit 1
|
|
Call
|
|
Par
|
|
Infix
|
|
Ident "+"
|
|
IntLit 2
|
|
IntLit 3
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
Ident "foo130"
|
|
Do
|
|
Empty
|
|
Empty
|
|
Empty
|
|
FormalParams
|
|
Empty
|
|
IdentDefs
|
|
Ident "x"
|
|
Empty
|
|
Empty
|
|
Empty
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
Ident "foo140"
|
|
Do
|
|
Empty
|
|
Empty
|
|
Empty
|
|
FormalParams
|
|
Empty
|
|
IdentDefs
|
|
Ident "x"
|
|
Ident "int"
|
|
Empty
|
|
Empty
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
Ident "foo150"
|
|
Do
|
|
Empty
|
|
Empty
|
|
Empty
|
|
FormalParams
|
|
Ident "int"
|
|
IdentDefs
|
|
Ident "x"
|
|
Ident "int"
|
|
Empty
|
|
Empty
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Command
|
|
Ident "foo160"
|
|
Call
|
|
Ident "x"
|
|
Do
|
|
Empty
|
|
Empty
|
|
Empty
|
|
FormalParams
|
|
Empty
|
|
IdentDefs
|
|
Ident "y"
|
|
Empty
|
|
Empty
|
|
Empty
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
Ident "foo170"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Else
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
Ident "foo180"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Else
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Command
|
|
Ident "foo190"
|
|
Call
|
|
Ident "x"
|
|
Do
|
|
Empty
|
|
Empty
|
|
Empty
|
|
FormalParams
|
|
Empty
|
|
IdentDefs
|
|
Ident "y"
|
|
Empty
|
|
Empty
|
|
Empty
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Do
|
|
Empty
|
|
Empty
|
|
Empty
|
|
FormalParams
|
|
Ident "int"
|
|
IdentDefs
|
|
Ident "z"
|
|
Empty
|
|
Empty
|
|
Empty
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Do
|
|
Empty
|
|
Empty
|
|
Empty
|
|
FormalParams
|
|
Ident "int"
|
|
IdentDefs
|
|
Ident "w"
|
|
Ident "int"
|
|
Empty
|
|
Empty
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Else
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
Ident "foo200"
|
|
Ident "x"
|
|
Call
|
|
Ident "bar"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Else
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
VarSection
|
|
IdentDefs
|
|
Ident "a"
|
|
Empty
|
|
Ident "foo210"
|
|
VarSection
|
|
IdentDefs
|
|
Ident "a"
|
|
Empty
|
|
Call
|
|
Ident "foo220"
|
|
VarSection
|
|
IdentDefs
|
|
Ident "a"
|
|
Empty
|
|
Call
|
|
Ident "foo230"
|
|
Ident "x"
|
|
VarSection
|
|
IdentDefs
|
|
Ident "a"
|
|
Empty
|
|
Command
|
|
Ident "foo240"
|
|
Ident "x"
|
|
VarSection
|
|
IdentDefs
|
|
Ident "a"
|
|
Empty
|
|
Call
|
|
Ident "foo250"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
VarSection
|
|
IdentDefs
|
|
Ident "a"
|
|
Empty
|
|
Call
|
|
Ident "foo260"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
VarSection
|
|
IdentDefs
|
|
Ident "a"
|
|
Empty
|
|
Call
|
|
Ident "foo270"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Else
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
VarSection
|
|
IdentDefs
|
|
Ident "a"
|
|
Empty
|
|
Command
|
|
Ident "foo280"
|
|
Call
|
|
Ident "x"
|
|
Do
|
|
Empty
|
|
Empty
|
|
Empty
|
|
FormalParams
|
|
Empty
|
|
IdentDefs
|
|
Ident "y"
|
|
Empty
|
|
Empty
|
|
Empty
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Else
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Asgn
|
|
Ident "a"
|
|
Ident "foo290"
|
|
Asgn
|
|
Ident "a"
|
|
Call
|
|
Ident "foo300"
|
|
Asgn
|
|
Ident "a"
|
|
Call
|
|
Ident "foo310"
|
|
Ident "x"
|
|
Asgn
|
|
Ident "a"
|
|
Command
|
|
Ident "foo320"
|
|
Ident "x"
|
|
Asgn
|
|
Ident "a"
|
|
Call
|
|
Ident "foo330"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Asgn
|
|
Ident "a"
|
|
Call
|
|
Ident "foo340"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Asgn
|
|
Ident "a"
|
|
Call
|
|
Ident "foo350"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Else
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Asgn
|
|
Ident "a"
|
|
Command
|
|
Ident "foo360"
|
|
Call
|
|
DotExpr
|
|
Ident "x"
|
|
Ident "bar"
|
|
Do
|
|
Empty
|
|
Empty
|
|
Empty
|
|
FormalParams
|
|
Empty
|
|
IdentDefs
|
|
Ident "y"
|
|
Empty
|
|
Empty
|
|
Empty
|
|
Empty
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Else
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Command
|
|
DotExpr
|
|
Ident "foo370"
|
|
Ident "add"
|
|
Call
|
|
Ident "quote"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
Call
|
|
DotExpr
|
|
Ident "foo380"
|
|
Ident "add"
|
|
BracketExpr
|
|
Call
|
|
Ident "quote"
|
|
StmtList
|
|
DiscardStmt
|
|
Empty
|
|
IntLit 0
|
|
'''
|
|
"""
|
|
|
|
import macros
|
|
|
|
dumpTree:
|
|
# simple calls
|
|
foo010
|
|
foo020()
|
|
foo030(x)
|
|
foo040 x
|
|
|
|
foo050:
|
|
discard
|
|
|
|
foo060 do:
|
|
discard
|
|
|
|
foo070("test"):
|
|
discard
|
|
|
|
foo080("test") do:
|
|
discard
|
|
|
|
foo090 "test":
|
|
discard
|
|
|
|
foo100 "test" do:
|
|
discard
|
|
|
|
foo101 10 do:
|
|
discard
|
|
|
|
# more complicated calls
|
|
foo110 1, (2+3):
|
|
discard
|
|
|
|
foo120 1, (2+3) do:
|
|
discard
|
|
|
|
foo130 do (x):
|
|
discard
|
|
|
|
foo140 do (x: int):
|
|
discard
|
|
|
|
foo150 do (x: int) -> int:
|
|
discard
|
|
|
|
foo160 x do (y):
|
|
discard
|
|
|
|
# extra blocks
|
|
foo170:
|
|
discard
|
|
else:
|
|
discard
|
|
|
|
foo180 do:
|
|
discard
|
|
do:
|
|
discard
|
|
else:
|
|
discard
|
|
|
|
foo190 x do (y):
|
|
discard
|
|
do (z) -> int:
|
|
discard
|
|
do (w: int) -> int:
|
|
discard
|
|
do:
|
|
discard
|
|
else:
|
|
discard
|
|
|
|
# call with blocks as a param
|
|
foo200(x, bar do:
|
|
discard
|
|
else:
|
|
discard
|
|
)
|
|
|
|
# introduce a variable
|
|
var a = foo210
|
|
var a = foo220()
|
|
var a = foo230(x)
|
|
var a = foo240 x
|
|
|
|
var a = foo250:
|
|
discard
|
|
|
|
var a = foo260 do:
|
|
discard
|
|
|
|
var a = foo270 do:
|
|
discard
|
|
else:
|
|
discard
|
|
|
|
var a = foo280 x do (y):
|
|
discard
|
|
else:
|
|
discard
|
|
|
|
# assignments
|
|
a = foo290
|
|
a = foo300()
|
|
a = foo310(x)
|
|
a = foo320 x
|
|
|
|
a = foo330:
|
|
discard
|
|
|
|
a = foo340 do:
|
|
discard
|
|
|
|
a = foo350 do:
|
|
discard
|
|
else:
|
|
discard
|
|
|
|
a = foo360 x.bar do (y):
|
|
discard
|
|
else:
|
|
discard
|
|
|
|
foo370.add quote do:
|
|
discard
|
|
|
|
# some edge cases
|
|
foo380.add((quote do:
|
|
discard
|
|
)[0])
|