summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorZahary Karadjov <zahary@gmail.com>2012-09-29 17:37:55 +0300
committerZahary Karadjov <zahary@gmail.com>2012-10-03 01:59:49 +0300
commit698785ef5e560d533c6aec6b1f0e9125fb7afe2a (patch)
tree4e73a4c862fde97900e18933d1a69a625b8a1840
parent7e44015491d4002be3c80cb7d6797e4c63651fbe (diff)
downloadNim-698785ef5e560d533c6aec6b1f0e9125fb7afe2a.tar.gz
bugfix: allow tuple constructors in generic code
-rwxr-xr-xcompiler/semgnrc.nim3
-rw-r--r--tests/run/trettypeinference.nim4
2 files changed, 7 insertions, 0 deletions
diff --git a/compiler/semgnrc.nim b/compiler/semgnrc.nim
index 2751aa1e1..dde799ab3 100755
--- a/compiler/semgnrc.nim
+++ b/compiler/semgnrc.nim
@@ -306,6 +306,9 @@ proc semGenericStmt(c: PContext, n: PNode,
     n.sons[bodyPos] = semGenericStmtScope(c, body, flags, toBind)
     closeScope(c.tab)
   of nkPragma, nkPragmaExpr: nil
+  of nkExprColonExpr:
+    checkMinSonsLen(n, 2)
+    result.sons[1] = semGenericStmt(c, n.sons[1], flags, toBind)
   else: 
     for i in countup(0, sonsLen(n) - 1): 
       result.sons[i] = semGenericStmt(c, n.sons[i], flags, toBind)
diff --git a/tests/run/trettypeinference.nim b/tests/run/trettypeinference.nim
index eea5b597d..41b4aa5ef 100644
--- a/tests/run/trettypeinference.nim
+++ b/tests/run/trettypeinference.nim
@@ -6,12 +6,16 @@ discard """
 import typetraits
 
 proc plus(a, b): auto = a + b
+proc makePair(a, b): auto = (first: a, second: b)
 
 proc `+`(a, b: string): seq[string] = @[a, b]
 
 var i = plus(10, 20)
 var s = plus("A", "B")
 
+var p = makePair("key", 100)
+static: assert p[0].type is string
+
 echo i.type.name
 echo s.type.name