Fixes #5034 illformed AST from getImpl with proc returning value (#17976)

* Fixes 5034

* address comments
This commit is contained in:
Dylan Modesitt 2021-05-31 16:51:32 -04:00 • committed by GitHub
commit 06d50bfd4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 4 deletions

View file

@ -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"