Add sections (type, var, let, const, using) support for reorder pragma (#6326)
This commit is contained in:
parent
e135135469
commit
e2af486434
10 changed files with 551 additions and 129 deletions
75
tests/pragmas/treorder.nim
Normal file
75
tests/pragmas/treorder.nim
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
discard """
|
||||
output:'''0
|
||||
1
|
||||
2
|
||||
3'''
|
||||
"""
|
||||
|
||||
import macros
|
||||
{.reorder: on .}
|
||||
|
||||
echo foo(-1)
|
||||
echo callWithFoo(0)
|
||||
echo(CA+CD)
|
||||
echo useTypes(TA(x:TB(x:1)), 2)
|
||||
second(0)
|
||||
|
||||
template callWithFoo(arg: untyped): untyped =
|
||||
foo(arg)
|
||||
|
||||
proc first(i: int): void
|
||||
|
||||
proc second(i: int): void =
|
||||
make(first)
|
||||
first(i)
|
||||
|
||||
proc useTypes(a: TA, d: TD): int =
|
||||
result = a.x.x+d
|
||||
|
||||
type
|
||||
TDoubleCyclic = ref object
|
||||
x: TCyclicA
|
||||
y: TCyclicB
|
||||
|
||||
type
|
||||
TCyclicA = ref object
|
||||
x: TDoubleCyclic
|
||||
|
||||
type
|
||||
TCyclicB = ref object
|
||||
x: TDoubleCyclic
|
||||
|
||||
const
|
||||
CA = 1
|
||||
CB = CC
|
||||
|
||||
type
|
||||
TA = object
|
||||
x: TB
|
||||
TC = type(CC)
|
||||
TD = type(CA)
|
||||
|
||||
const
|
||||
CC = 1
|
||||
CD = CB
|
||||
|
||||
type
|
||||
TB = object
|
||||
x: TC
|
||||
|
||||
proc foo(x: int): int =
|
||||
result = bar(x)
|
||||
|
||||
proc bar(x: int): int =
|
||||
result = x+1
|
||||
|
||||
macro make(arg: untyped): untyped =
|
||||
ss &= arg.repr
|
||||
ss &= " "
|
||||
discard
|
||||
|
||||
proc first(i: int): void =
|
||||
make(second)
|
||||
|
||||
static:
|
||||
var ss: string = ""
|
||||
Loading…
Add table
Add a link
Reference in a new issue