diff options
author | Dylan Modesitt <dylanmodesitt@gmail.com> | 2021-05-31 16:51:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-31 22:51:32 +0200 |
commit | 06d50bfd4cac6611c5fc775c8130cad87e4dcee1 (patch) | |
tree | 646cd0670f67dfbcbcc1db445dac5bb3f96a4e8e /tests/macros/tmacrogetimpl.nim | |
parent | 369a7d12467831295c12f5f51aa8c69ec3b3596a (diff) | |
download | Nim-06d50bfd4cac6611c5fc775c8130cad87e4dcee1.tar.gz |
Fixes #5034 illformed AST from getImpl with proc returning value (#17976)
* Fixes 5034 * address comments
Diffstat (limited to 'tests/macros/tmacrogetimpl.nim')
-rw-r--r-- | tests/macros/tmacrogetimpl.nim | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/macros/tmacrogetimpl.nim b/tests/macros/tmacrogetimpl.nim new file mode 100644 index 000000000..1d996ff29 --- /dev/null +++ b/tests/macros/tmacrogetimpl.nim @@ -0,0 +1,31 @@ +import macros + +# bug #5034 + +macro copyImpl(srsProc: typed, toSym: untyped) = + result = copyNimTree(getImplTransformed(srsProc)) + result[0] = ident $toSym.toStrLit() + +proc foo1(x: float, one: bool = true): float = + if one: + return 1'f + result = x + +proc bar1(what: string): string = + ## be a little more adversarial with `skResult` + proc buzz: string = + result = "lightyear" + if what == "buzz": + result = "buzz " & buzz() + else: + result = what + return result + +copyImpl(foo1, foo2) +doAssert foo1(1'f) == 1.0 +doAssert foo2(10.0, false) == 10.0 +doAssert foo2(10.0) == 1.0 + +copyImpl(bar1, bar2) +doAssert bar1("buzz") == "buzz lightyear" +doAssert bar1("macros") == "macros" |