diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-07-16 14:13:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-16 14:13:20 +0200 |
commit | 622ab7089c31eae3ff107dc7d1da4aa5b179356e (patch) | |
tree | 54f3e610b866dbd4b888104d6bbbe770f1bb90b2 | |
parent | 8698de1742d577efa9dddc854d5cfb3f7b9fd1ff (diff) | |
parent | 915185dd11b6b4cdabf20cd3e9985b8044e2d3e2 (diff) | |
download | Nim-622ab7089c31eae3ff107dc7d1da4aa5b179356e.tar.gz |
Merge pull request #4488 from mbaulch/fix4346improved
Use target field types in tuple conversions.
-rw-r--r-- | compiler/semexprs.nim | 2 | ||||
-rw-r--r-- | tests/tuples/tconver_tuple.nim | 23 |
2 files changed, 25 insertions, 0 deletions
diff --git a/compiler/semexprs.nim b/compiler/semexprs.nim index 0f6422887..fc2d9debc 100644 --- a/compiler/semexprs.nim +++ b/compiler/semexprs.nim @@ -198,6 +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: + 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 new file mode 100644 index 000000000..306da77fe --- /dev/null +++ b/tests/tuples/tconver_tuple.nim @@ -0,0 +1,23 @@ +# Bug 4479 + +type + MyTuple = tuple + num: int + strings: seq[string] + ints: seq[int] + +var foo = MyTuple(( + num: 7, + strings: @[], + ints: @[], +)) + +var bar = ( + num: 7, + strings: @[], + ints: @[], +).MyTuple + +var fooUnnamed = MyTuple((7, @[], @[])) +var n = 7 +var fooSym = MyTuple((num: n, strings: @[], ints: @[])) |