Fix evaluation order with object spread (#11412)

* Fix object spread runtime semantics

* limit this deoptimization

* optimize empty objects

* declare variables
This commit is contained in:
Zen
2020-04-24 05:59:35 +08:00
committed by GitHub
parent 5f299bab18
commit af669297ef
12 changed files with 144 additions and 1 deletions

View File

@@ -0,0 +1,16 @@
var k = { a: 1, b: 2 };
var o = { a: 3, ...k, b: k.a++ };
var pureA = {};
var pureB = {};
var pureC = {};
var pureD = {};
var pureE = {};
function impureFunc() {
console.log('hello')
}
var output = { ...pureA, get foo() {}, get bar() {}, ...pureB, ...pureC, ...impureFunc(), ...pureD, pureD }
var simpleOutput = { ...pureA, test: '1', ...pureB, }