summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--compiler/semexprs.nim7
-rw-r--r--tests/tuples/tconver_tuple.nim4
2 files changed, 6 insertions, 5 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim
index 3208403d4..96c80c64e 100644
--- a/compiler/semexprs.nim
+++ b/compiler/semexprs.nim
@@ -198,11 +198,8 @@ proc semConv(c: PContext, n: PNode): PNode =
       # separate proc from fitNode?
       if op.kind == nkSym and op.sym.isGenericRoutine:
         result.sons[1] = fitNode(c, result.typ, result.sons[1])
-      elif op.kind == nkPar and targetType.kind == tyTuple and
-                op.sons.len > 0 and op.sons[0].kind == nkExprColonExpr:
-        # Tuple conversion: set field types in case any are tyEmpty (eg. `@[]`)
-        for i in 0..<op.sons.len:
-          op.sons[i][1].typ = targetType.sons[i]
+      elif op.kind == nkPar and targetType.kind == tyTuple:
+        op = fitNode(c, targetType, op)
     of convNotNeedeed:
       message(n.info, hintConvFromXtoItselfNotNeeded, result.typ.typeToString)
     of convNotLegal:
diff --git a/tests/tuples/tconver_tuple.nim b/tests/tuples/tconver_tuple.nim
index b37be968a..306da77fe 100644
--- a/tests/tuples/tconver_tuple.nim
+++ b/tests/tuples/tconver_tuple.nim
@@ -17,3 +17,7 @@ var bar = (
   strings: @[],
   ints: @[],
 ).MyTuple
+
+var fooUnnamed = MyTuple((7, @[], @[]))
+var n = 7
+var fooSym = MyTuple((num: n, strings: @[], ints: @[]))