Add sections (type, var, let, const, using) support for reorder pragma (#6326)

This commit is contained in:
BigEpsilon 2017-10-28 11:33:35 +02:00 • committed by Andreas Rumpf
commit e2af486434
10 changed files with 551 additions and 129 deletions

View 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 = ""