diff --git a/compiler/semgnrc.nim b/compiler/semgnrc.nim index 2751aa1e14..dde799ab34 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 eea5b597d6..41b4aa5ef4 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