* see whether it breaks

* fix #16884

* correct

* fix #14574
This commit is contained in:
flywind
2021-02-01 06:31:04 -06:00
committed by GitHub
parent a2855b66ae
commit de4f2604c2
3 changed files with 32 additions and 4 deletions

View File

@@ -1077,10 +1077,10 @@ proc genAsgnAux(p: PProc, x, y: PNode, noCopyNeeded: bool) =
# supports proc getF(): var T
if x.kind in {nkHiddenDeref, nkDerefExpr} and x[0].kind in nkCallKinds:
lineF(p, "nimCopy($1, $2, $3);$n",
[a.res, b.res, genTypeInfo(p, y.typ)])
[a.res, b.res, genTypeInfo(p, x.typ)])
else:
lineF(p, "$1 = nimCopy($1, $2, $3);$n",
[a.res, b.res, genTypeInfo(p, y.typ)])
[a.res, b.res, genTypeInfo(p, x.typ)])
of etyBaseIndex:
if a.typ != etyBaseIndex or b.typ != etyBaseIndex:
if y.kind == nkCall:

29
tests/js/t16822.nim Normal file
View File

@@ -0,0 +1,29 @@
block: # bug #16822
var scores: seq[(set[char], int)] = @{{'/'} : 10}
var x1: set[char]
for item in items(scores):
x1 = item[0]
doAssert x1 == {'/'}
var x2: set[char]
for (chars, value) in items(scores):
x2 = chars
doAssert x2 == {'/'}
block: # bug #14574
proc fn(): auto =
let a = @[("foo", (12, 13))]
for (k,v) in a:
return (k,v)
doAssert fn() == ("foo", (12, 13))
block: # bug #14574
iterator fn[T](a:T): lent T = yield a
let a = (10, (11,))
proc bar(): auto =
for (x,y) in fn(a):
return (x,y)
doAssert bar() == (10, (11,))

View File

@@ -42,8 +42,7 @@ template fn() =
block:
testRoundtrip({"z": "Z", "y": "Y"}.toOrderedTable): """{"z":"Z","y":"Y"}"""
when not defined(js): # pending https://github.com/nim-lang/Nim/issues/14574
testRoundtrip({"z": (f1: 'f'), }.toTable): """{"z":{"f1":102}}"""
testRoundtrip({"z": (f1: 'f'), }.toTable): """{"z":{"f1":102}}"""
block:
testRoundtrip({"name": "John", "city": "Monaco"}.newStringTable): """{"mode":"modeCaseSensitive","table":{"city":"Monaco","name":"John"}}"""