Mark binding-pattern identifiers with their declaration kind so local destructuring assignments use the normal TDZ and const assignment path. This makes local const destructuring match the environment-backed path. Also teach GetById to expose primitive string virtual index properties before boxing, matching StringGetOwnProperty and GetByValue. Together these fix the SpiderMonkey for-in/of const declaration coverage and the lexical destructuring TDZ test.
31 lines
870 B
Text
31 lines
870 B
Text
$1857aec1 destructuring-let-compound-assign.js:5:1
|
|
Registers: 9
|
|
Blocks: 1
|
|
Constants:
|
|
[0] = Undefined
|
|
|
|
block0:
|
|
[ 0] GetGlobal dst:reg6, `f`
|
|
[ 10] NewObject dst:reg7
|
|
[ 20] NewObject dst:reg8
|
|
[ 30] Call dst:reg5, callee:reg6, this_value:Undefined, f, arguments:[reg7, reg8]
|
|
[ 58] End value:reg5
|
|
|
|
|
|
f$ffd4f57c destructuring-let-compound-assign.js:2:5
|
|
Registers: 8
|
|
Blocks: 1
|
|
Locals: a~0
|
|
Constants:
|
|
[0] = Int32(16)
|
|
[1] = Undefined
|
|
|
|
block0:
|
|
[ 0] ThrowIfNullish src:arg0
|
|
[ 8] GetById dst:reg5, base:arg0, `patchFlag`
|
|
[ 20] Mov3 dst1:a~0, src1:reg5, dst2:reg5, src2:a~0, dst3:reg6, src3:arg1
|
|
[ 40] GetById dst:reg7, base:reg6, `patchFlag` (e.patchFlag)
|
|
[ 58] BitwiseAnd dst:reg6, lhs:Int32(16), rhs:reg7
|
|
[ 68] BitwiseOr dst:reg7, lhs:reg5, rhs:reg6
|
|
[ 78] Mov dst:a~0, src:reg7
|
|
[ 88] End value:Undefined
|