fixes yet another gensym regression (#12145)

This commit is contained in:
Andreas Rumpf 2019-09-06 00:45:00 +02:00 • committed by GitHub
commit 488f3ed085
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 10 deletions

View file

@ -251,15 +251,15 @@ proc semTemplSymbol(c: PContext, n: PNode, s: PSym; isField: bool): PNode =
of OverloadableSyms: of OverloadableSyms:
result = symChoice(c, n, s, scOpen, isField) result = symChoice(c, n, s, scOpen, isField)
of skGenericParam: of skGenericParam:
if isField: result = n if isField and sfGenSym in s.flags: result = n
else: result = newSymNodeTypeDesc(s, n.info) else: result = newSymNodeTypeDesc(s, n.info)
of skParam: of skParam:
result = n result = n
of skType: of skType:
if isField: result = n if isField and sfGenSym in s.flags: result = n
else: result = newSymNodeTypeDesc(s, n.info) else: result = newSymNodeTypeDesc(s, n.info)
else: else:
if isField: result = n if isField and sfGenSym in s.flags: result = n
else: result = newSymNode(s, n.info) else: result = newSymNode(s, n.info)
proc semRoutineInTemplName(c: var TemplCtx, n: PNode): PNode = proc semRoutineInTemplName(c: var TemplCtx, n: PNode): PNode =

View file

@ -40,15 +40,15 @@ doAssert y.x == "abc"
import macros import macros
static: static:
let sym1 = genSym() let sym1 = genSym()
let sym2 = genSym() let sym2 = genSym()
let sym3 = sym1 let sym3 = sym1
let nimsym = sym1.symbol let nimsym = sym1.symbol
doAssert sym1 == sym1 doAssert sym1 == sym1
doAssert sym2 != sym3 doAssert sym2 != sym3
doAssert sym2.symbol != sym3.symbol doAssert sym2.symbol != sym3.symbol
doAssert sym3 == sym1 doAssert sym3 == sym1
doAssert sym1.symbol == sym1.symbol doAssert sym1.symbol == sym1.symbol
doAssert nimsym == nimsym doAssert nimsym == nimsym
echo "true" echo "true"

View file

@ -7,4 +7,18 @@ template templ*(): int =
bind gx, gy bind gx, gy
gx + gy gx + gy
import json
const
codeField = "foobar"
messageField = "more"
template trap*(path: string, body: untyped): untyped =
#bind codeField, messageField
try:
body
except:
let msg = getCurrentExceptionMsg()
#debug "Error occurred within RPC ", path = path, errorMessage = msg
result = %*{codeField: "SERVER_ERROR", messageField: msg}

View file

@ -7,6 +7,7 @@ a
hi hi
Hello, World! Hello, World!
(e: 42) (e: 42)
hey
''' '''
""" """
@ -235,3 +236,12 @@ var
x = X.fails(42) x = X.fails(42)
echo x echo x
import mtempl5
proc foo(): auto =
trap "foo":
echo "hey"
discard foo()