diff options
author | Araq <rumpf_a@web.de> | 2014-04-06 17:26:20 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2014-04-06 17:26:20 +0200 |
commit | cf7e83ecc5be0a85d5e669c9c7d5b3753b075371 (patch) | |
tree | 0307cb3b55b7ad4cf05d8ec6cd5a239f682bf034 | |
parent | 034af8354d56a1c2d426b460465b2faf3ff9d29e (diff) | |
download | Nim-cf7e83ecc5be0a85d5e669c9c7d5b3753b075371.tar.gz |
fixes #913
-rw-r--r-- | compiler/nimrod.nimrod.cfg | 1 | ||||
-rw-r--r-- | compiler/sigmatch.nim | 2 | ||||
-rw-r--r-- | tests/typerel/tvarargsexpr.nim | 18 |
3 files changed, 21 insertions, 0 deletions
diff --git a/compiler/nimrod.nimrod.cfg b/compiler/nimrod.nimrod.cfg index cc27d9f36..2c6e6f249 100644 --- a/compiler/nimrod.nimrod.cfg +++ b/compiler/nimrod.nimrod.cfg @@ -20,3 +20,4 @@ import:testability define:useStdoutAsStdmsg cs:partial +#define:useNodeIds diff --git a/compiler/sigmatch.nim b/compiler/sigmatch.nim index b9fb0c957..b83c27d22 100644 --- a/compiler/sigmatch.nim +++ b/compiler/sigmatch.nim @@ -668,6 +668,8 @@ proc typeRel(c: var TCandidate, f, aOrig: PType, doBind = true): TTypeRelation = result = isNone else: discard of tyOpenArray, tyVarargs: + # varargs[expr] is special + if f.kind == tyVarargs and f.sons[0].kind == tyExpr: return case a.kind of tyOpenArray, tyVarargs: result = typeRel(c, base(f), base(a)) diff --git a/tests/typerel/tvarargsexpr.nim b/tests/typerel/tvarargsexpr.nim new file mode 100644 index 000000000..fcb49af61 --- /dev/null +++ b/tests/typerel/tvarargsexpr.nim @@ -0,0 +1,18 @@ +discard """ + output: '''success''' +""" + +#bug #913 + +import macros + +macro thirteen(args: varargs[expr]): expr = + result = newIntLitNode(13) + +doAssert(13==thirteen([1,2])) # works +doAssert(13==thirteen(1,2)) # works + +doAssert(13==thirteen(1,[2])) # does not work +doAssert(13==thirteen([1], 2)) # does not work + +echo "success" |