Skip to content

Commit 675ca99

Browse files
authored
fixes #9674 [backport] (#13143)
1 parent 8b00586 commit 675ca99

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

compiler/jsgen.nim

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1890,6 +1890,15 @@ proc genReset(p: PProc, n: PNode) =
18901890
lineF(p, "$1 = genericReset($3, $2);$n", [a,
18911891
genTypeInfo(p, n[1].typ), tmp])
18921892

1893+
proc genMove(p: PProc; n: PNode; r: var TCompRes) =
1894+
var a: TCompRes
1895+
r.kind = resVal
1896+
r.res = p.getTemp()
1897+
gen(p, n[1], a)
1898+
lineF(p, "$1 = $2;$n", [r.rdLoc, a.rdLoc])
1899+
genReset(p, n)
1900+
#lineF(p, "$1 = $2;$n", [dest.rdLoc, src.rdLoc])
1901+
18931902
proc genMagic(p: PProc, n: PNode, r: var TCompRes) =
18941903
var
18951904
a: TCompRes
@@ -2014,7 +2023,7 @@ proc genMagic(p: PProc, n: PNode, r: var TCompRes) =
20142023
of mNewSeqOfCap: unaryExpr(p, n, r, "", "[]")
20152024
of mOf: genOf(p, n, r)
20162025
of mDefault: genDefault(p, n, r)
2017-
of mReset: genReset(p, n)
2026+
of mReset, mWasMoved: genReset(p, n)
20182027
of mEcho: genEcho(p, n, r)
20192028
of mNLen..mNError, mSlurp, mStaticExec:
20202029
localError(p.config, n.info, errXMustBeCompileTime % n[0].sym.name.s)
@@ -2037,6 +2046,8 @@ proc genMagic(p: PProc, n: PNode, r: var TCompRes) =
20372046
gen(p, n[3], z)
20382047
r.res = "($1.slice($2, $3+1))" % [x.rdLoc, y.rdLoc, z.rdLoc]
20392048
r.kind = resExpr
2049+
of mMove:
2050+
genMove(p, n, r)
20402051
else:
20412052
genCall(p, n, r)
20422053
#else internalError(p.config, e.info, 'genMagic: ' + magicToStr[op]);

tests/js/tcopying.nim

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ discard """
66
true false
77
100 300 100
88
1
9+
1
910
'''
1011
"""
1112

@@ -69,4 +70,11 @@ block:
6970

7071
var nums = [1, 2]
7172
foo(nums)
72-
echo nums[0]
73+
echo nums[0]
74+
75+
proc bug9674 =
76+
var b = @[1,2,3]
77+
var a = move(b)
78+
echo a[0]
79+
80+
bug9674()

0 commit comments

Comments
 (0)