fixes yet another gensym regression (#12145)

This commit is contained in:
Andreas Rumpf
2019-09-06 00:45:00 +02:00
committed by GitHub
parent 0882a09986
commit 488f3ed085
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:
result = symChoice(c, n, s, scOpen, isField)
of skGenericParam:
if isField: result = n
if isField and sfGenSym in s.flags: result = n
else: result = newSymNodeTypeDesc(s, n.info)
of skParam:
result = n
of skType:
if isField: result = n
if isField and sfGenSym in s.flags: result = n
else: result = newSymNodeTypeDesc(s, n.info)
else:
if isField: result = n
if isField and sfGenSym in s.flags: result = n
else: result = newSymNode(s, n.info)
proc semRoutineInTemplName(c: var TemplCtx, n: PNode): PNode =

View File

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

View File

@@ -7,4 +7,18 @@ template templ*(): int =
bind 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
Hello, World!
(e: 42)
hey
'''
"""
@@ -235,3 +236,12 @@ var
x = X.fails(42)
echo x
import mtempl5
proc foo(): auto =
trap "foo":
echo "hey"
discard foo()