This commit is contained in:
Andreas Rumpf
2017-02-23 19:47:09 +01:00
parent 92c2a51bf7
commit 22789a0bfc
4 changed files with 35 additions and 1 deletions

View File

@@ -174,7 +174,11 @@ proc semGenericStmt(c: PContext, n: PNode,
# XXX for example: ``result.add`` -- ``add`` needs to be looked up here...
var dummy: bool
result = fuzzyLookup(c, n, flags, ctx, dummy)
of nkEmpty, nkSym..nkNilLit:
of nkSym:
let a = n.sym
let b = getGenSym(c, a)
if b != a: n.sym = b
of nkEmpty, succ(nkSym)..nkNilLit:
# see tests/compile/tgensymgeneric.nim:
# We need to open the gensym'ed symbol again so that the instantiation
# creates a fresh copy; but this is wrong the very first reason for gensym

View File

@@ -742,6 +742,8 @@ proc `$`*(node: NimNode): string {.compileTime.} =
result = $node.symbol
of nnkOpenSymChoice, nnkClosedSymChoice:
result = $node[0]
of nnkAccQuoted:
result = $node[0]
else:
badNodeKind node.kind, "$"

View File

@@ -0,0 +1,14 @@
template makeDomElement(x: untyped, name: string = nil) =
const tag {.gensym.} = if name == nil: astToStr(x) else: name
proc x*(p: int|float) =
echo tag, p
proc x*(p: string|cstring) =
echo tag, p
#proc wrappedUp[T](x: T) =
# mixin foo, bar
makeDomElement(foo, "foo")
makeDomElement(bar)

View File

@@ -0,0 +1,14 @@
discard """
output: '''foo55
foo8.0
fooaha
bar7'''
"""
# bug #5419
import mgensym_generic_cross_module
foo(55)
foo 8.0
foo "aha"
bar 7