mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
544 lines
7.8 KiB
Nim
544 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])
|
|
|