efront 4.0.6 → 4.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -982,7 +982,7 @@ var unforof = function (o, getnewname, used) {
|
|
|
982
982
|
splice(o, o.length, 0, { type: STAMP, text: ',' });
|
|
983
983
|
}
|
|
984
984
|
if (useSimpleLoop) splice(o, o.length, 0, ...scanner2(`${iname}=0,${gname}=${oname}["length"];${iname}<${gname}&&(${createString([p])}=${oname}[${iname}],true);${iname}++`));
|
|
985
|
-
else rootenvs.Symbol = true, splice(o, o.length, 0, ...scanner2(`${gname}=${hasawait ? `${oname}[Symbol["asyncIterator"]]||${oname}[Symbol["iterator"]]` : `${oname}[Symbol["iterator"]]||${oname}[Symbol["asyncIterator"]]`}||Array["prototype"][Symbol["iterator"]],${gname}=${gname}["call"](${oname}),${iname}=${hasawait ? "await " : ''}${gname}["next"]();!${iname}["done"]&&(${createString([p])}=${iname}["value"],true);${iname}=${gname}["next"]()`));
|
|
985
|
+
else rootenvs.Symbol = true, splice(o, o.length, 0, ...scanner2(`${gname}=${hasawait ? `${oname}[Symbol["asyncIterator"]]||${oname}[Symbol["iterator"]]` : `${oname}[Symbol["iterator"]]||${oname}[Symbol["asyncIterator"]]`}||Array["prototype"][Symbol["iterator"]],${gname}=${gname}["call"](${oname}),${iname}=${hasawait ? "await " : ''}${gname}["next"]();!${iname}["done"]&&(${createString([p])}=${iname}["value"],true);${iname}=${hasawait ? 'await ' : ''}${gname}["next"]()`));
|
|
986
986
|
relink(o);
|
|
987
987
|
};
|
|
988
988
|
var unarrow = function (body, i, killobj, letname_) {
|
|
@@ -188,7 +188,7 @@ assert(downLevel(`function (a,...,c){}`), `function (a, c) { c = arguments["leng
|
|
|
188
188
|
assert(downLevel(`(...a) => k`), `var slice_ = Array["prototype"]["slice"];\r\nfunction () { var a = slice_["call"](arguments, 0); return k }`)
|
|
189
189
|
assert(downLevel(`for await(o of os) noSymbol`), `return async_(
|
|
190
190
|
function () {
|
|
191
|
-
|
|
191
|
+
_2 = Symbol["asyncIterator"]; _2 = os[_2]; if (_2) return [1, 0]; _2 = Symbol["iterator"]; _2 = os[_2]; if (_2) return [1, 0]; _2 = Symbol["iterator"]; _2 = Array["prototype"][_2]
|
|
192
192
|
},
|
|
193
193
|
function () {
|
|
194
194
|
_0 = _2; _2 = _0["call"](os); _0 = _2; _2 = _0["next"](); return [_2, 1]
|
|
@@ -197,15 +197,18 @@ function (_1) {
|
|
|
197
197
|
_2 = _1; _ = _2; return [1, 0]
|
|
198
198
|
},
|
|
199
199
|
function () {
|
|
200
|
-
_2 = !_["done"]; if (!_2) return [1, 0];
|
|
200
|
+
_2 = !_["done"]; if (!_2) return [1, 0]; o = _["value"]; _2 = (true)
|
|
201
201
|
},
|
|
202
202
|
function () {
|
|
203
|
-
if (!_2) return [
|
|
203
|
+
if (!_2) return [2, 0]; noSymbol; _2 = _0["next"](); return [_2, 1]
|
|
204
|
+
},
|
|
205
|
+
function (_1) {
|
|
206
|
+
_2 = _1; _ = _2; return [-2, 0]
|
|
204
207
|
})
|
|
205
|
-
var _, _0, _2
|
|
208
|
+
var _, _0, _2`)
|
|
206
209
|
assert(downLevel(`for await(var [o,s] of os) noSymbol`), `return async_(
|
|
207
210
|
function () {
|
|
208
|
-
o; s;
|
|
211
|
+
o; s; _3 = Symbol["asyncIterator"]; _3 = os[_3]; if (_3) return [1, 0]; _3 = Symbol["iterator"]; _3 = os[_3]; if (_3) return [1, 0]; _3 = Symbol["iterator"]; _3 = Array["prototype"][_3]
|
|
209
212
|
},
|
|
210
213
|
function () {
|
|
211
214
|
_0 = _3; _3 = _0["call"](os); _0 = _3; _3 = _0["next"](); return [_3, 1]
|
|
@@ -214,12 +217,15 @@ function (_2) {
|
|
|
214
217
|
_3 = _2; _ = _3; return [1, 0]
|
|
215
218
|
},
|
|
216
219
|
function () {
|
|
217
|
-
_3 = !_["done"]; if (!_3) return [1, 0];
|
|
220
|
+
_3 = !_["done"]; if (!_3) return [1, 0]; _1 = _["value"]; o = _1[0]; s = _1[1]; _3 = (true)
|
|
218
221
|
},
|
|
219
222
|
function () {
|
|
220
|
-
if (!_3) return [
|
|
223
|
+
if (!_3) return [2, 0]; noSymbol; _3 = _0["next"](); return [_3, 1]
|
|
224
|
+
},
|
|
225
|
+
function (_2) {
|
|
226
|
+
_3 = _2; _ = _3; return [-2, 0]
|
|
221
227
|
})
|
|
222
|
-
var o, s, _, _0, _1, _3
|
|
228
|
+
var o, s, _, _0, _1, _3`)
|
|
223
229
|
assert(downLevel(`for(o of os) noSymbol`), `for (_ = 0, _0 = os["length"]; _ < _0 && (o = os[_], true); _++) noSymbol\r\nvar _, _0`)
|
|
224
230
|
assert(downLevel(`for(var o of os) Symbol`), `for (var o, _0 = os[Symbol["iterator"]] || os[Symbol["asyncIterator"]] || Array["prototype"][Symbol["iterator"]], _0 = _0["call"](os), _ = _0["next"](); !_["done"] && (o = _["value"], true); _ = _0["next"]()) Symbol\r\nvar _, _0`)
|
|
225
231
|
assert(downLevel(`for(var o of os) Symbol`), `for (var o, _0 = os[Symbol["iterator"]] || os[Symbol["asyncIterator"]] || Array["prototype"][Symbol["iterator"]], _0 = _0["call"](os), _ = _0["next"](); !_["done"] && (o = _["value"], true); _ = _0["next"]()) Symbol\r\nvar _, _0`)
|
|
@@ -245,7 +251,7 @@ function () {
|
|
|
245
251
|
_; _0 = 0; _3 = a["length"]; _1 = _3; return [1, 0]
|
|
246
252
|
},
|
|
247
253
|
function () {
|
|
248
|
-
_3 = _0 < _1; if (!_3) return [1, 0];
|
|
254
|
+
_3 = _0 < _1; if (!_3) return [1, 0]; _ = a[_0]; _3 = (true)
|
|
249
255
|
},
|
|
250
256
|
function () {
|
|
251
257
|
if (!_3) return [2, 0]; return [_, 3]
|
|
@@ -253,22 +259,22 @@ if (!_3) return [2, 0]; return [_, 3]
|
|
|
253
259
|
function () {
|
|
254
260
|
_3 = _0++; return [-2, 0]
|
|
255
261
|
})
|
|
256
|
-
var _, _0, _1, _3
|
|
262
|
+
var _, _0, _1, _3 }`)
|
|
257
263
|
assert(downLevel(`async function(){}`), `function () { return async_() }`)
|
|
258
264
|
assert(downLevel(`async function(){for(var a of b){Symbol}}`), `function () { return async_(
|
|
259
265
|
function () {
|
|
260
|
-
a;
|
|
266
|
+
a; _2 = Symbol["iterator"]; _2 = b[_2]; if (_2) return [1, 0]; _2 = Symbol["asyncIterator"]; _2 = b[_2]; if (_2) return [1, 0]; _2 = Symbol["iterator"]; _2 = Array["prototype"][_2]
|
|
261
267
|
},
|
|
262
268
|
function () {
|
|
263
269
|
_0 = _2; _2 = _0["call"](b); _0 = _2; _2 = _0["next"](); _ = _2; return [1, 0]
|
|
264
270
|
},
|
|
265
271
|
function () {
|
|
266
|
-
_2 = !_["done"]; if (!_2) return [1, 0];
|
|
272
|
+
_2 = !_["done"]; if (!_2) return [1, 0]; a = _["value"]; _2 = (true)
|
|
267
273
|
},
|
|
268
274
|
function () {
|
|
269
275
|
if (!_2) return [1, 0]; Symbol; _2 = _0["next"](); _ = _2; return [-1, 0]
|
|
270
276
|
})
|
|
271
|
-
var a, _, _0, _2
|
|
277
|
+
var a, _, _0, _2 }`)
|
|
272
278
|
assert(downLevel(`a={async a(){var b =c;return 1}}`), `a = (_ = {},
|
|
273
279
|
_.a = function () { return async_(\r\nfunction () {\r\nb = c; return [1, 2]\r\n})\r\nvar b }, _)\r\nvar _`)
|
|
274
280
|
assert(downLevel(`async function(){return 1}`), `function () { return async_(\r\nfunction () {\r\nreturn [1, 2]\r\n}) }`)
|
package/coms/compile/unstruct.js
CHANGED
|
@@ -466,6 +466,19 @@ var _invoke = function (t, getname) {
|
|
|
466
466
|
var _nameindex = nameindex;
|
|
467
467
|
remove_end_comma(o);
|
|
468
468
|
var iseval = isEvalScope(o);
|
|
469
|
+
var constStart = 0;
|
|
470
|
+
if (!iseval) {
|
|
471
|
+
for (var cy = 0; cy < o.length; cy++) {
|
|
472
|
+
while (cy < o.length && o[cy].type & (SPACE | COMMENT)) cy++;
|
|
473
|
+
var ay = cy;
|
|
474
|
+
cy = skipAssignment(o, cy);
|
|
475
|
+
var m = o[ay];
|
|
476
|
+
if (cy === ay + 1 && (m.type === EXPRESS && !/[\.\[]/.test(m.text) || m.type === VALUE || m.type === QUOTED && !m.length)) {
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
constStart = cy + 1;
|
|
480
|
+
}
|
|
481
|
+
}
|
|
469
482
|
for (var cy = 0; cy < o.length; cy++) {
|
|
470
483
|
var by = cy;
|
|
471
484
|
while (cy < o.length && o[cy].type & (SPACE | COMMENT)) cy++;
|
|
@@ -474,16 +487,17 @@ var _invoke = function (t, getname) {
|
|
|
474
487
|
var ey = cy;
|
|
475
488
|
if (ay === ey || ay >= o.length) continue;
|
|
476
489
|
var m = o.slice(ay, ey);
|
|
477
|
-
if (m.length === 1 && (m[0].type === EXPRESS && !/[\.\[]/.test(m[0].text) || m[0].type === VALUE || m[0].type === QUOTED && !m[0].length)) {
|
|
490
|
+
if (m.length === 1 && (m[0].type === EXPRESS && !/[\.\[]/.test(m[0].text) && ay >= constStart || m[0].type === VALUE || m[0].type === QUOTED && !m[0].length)) {
|
|
478
491
|
continue;
|
|
479
492
|
}
|
|
480
|
-
var q = toqueue(m, getdeepname, true);
|
|
481
|
-
var qe = q[q.length - 1];
|
|
482
493
|
if (!iseval || m[m.length - 1] === o.last) {
|
|
494
|
+
var q = toqueue(m, getdeepname, 1);
|
|
495
|
+
var qe = q[q.length - 1];
|
|
483
496
|
splice(o, by, ey - by, { text: qe.name, type: EXPRESS });
|
|
484
497
|
cy = by + 1;
|
|
485
498
|
}
|
|
486
499
|
else {
|
|
500
|
+
var q = toqueue(m, getdeepname, false);
|
|
487
501
|
while (cy < o.length && o[cy].type & (SPACE | COMMENT)) cy++;
|
|
488
502
|
var c = o[cy];
|
|
489
503
|
if (c && c.type & STAMP && /^[,;]$/.test(c.text)) cy++;
|
|
@@ -618,6 +632,12 @@ var ternary = function (body, getname, ret) {
|
|
|
618
632
|
if (!ret && equcount === 1 && canbeOnce(bd)) {
|
|
619
633
|
res = [bd];
|
|
620
634
|
}
|
|
635
|
+
else if (ret === 1 && !equcount && canbeOnce(bd)) {
|
|
636
|
+
var name = getname(0);
|
|
637
|
+
var r = [{ type: EXPRESS, text: name }, { type: STAMP, text: '=' }, ...bd]
|
|
638
|
+
r.name = name;
|
|
639
|
+
res = [r];
|
|
640
|
+
}
|
|
621
641
|
else {
|
|
622
642
|
res = _express(bd, getname, equalsend > skip || ret);
|
|
623
643
|
}
|
|
@@ -57,7 +57,7 @@ test("if(await a) await b", "_ = a; return [_, 1];\r\n if (!@) return [2, 0]; _
|
|
|
57
57
|
test("for(a in b)", "for (a in b)", true);
|
|
58
58
|
test("for(var a in b) a.push()", "for (var a in b) a.push()", true);
|
|
59
59
|
test("for(;;)", "return [0, 0]", true);
|
|
60
|
-
test("for(a = os[Symbol.iterator] || os[Symbol.asyncIterator] || Array.prototype[Symbol.iterator], a = a.call(os), b = a.next(); !b.done && (o = b.value, true); b = a.next())", "_ = Symbol.iterator; _ = os[_]; if (_) return [1, 0]; _ = Symbol.asyncIterator; _ = os[_]; if (_) return [1, 0]; _ = Symbol.iterator; _ = Array.prototype[_];\r\n a = _; _ = a.call(os); a = _; _ = a.next(); b = _; return [1, 0];\r\n _ = !b.done; if (!_) return [1, 0];
|
|
60
|
+
test("for(a = os[Symbol.iterator] || os[Symbol.asyncIterator] || Array.prototype[Symbol.iterator], a = a.call(os), b = a.next(); !b.done && (o = b.value, true); b = a.next())", "_ = Symbol.iterator; _ = os[_]; if (_) return [1, 0]; _ = Symbol.asyncIterator; _ = os[_]; if (_) return [1, 0]; _ = Symbol.iterator; _ = Array.prototype[_];\r\n a = _; _ = a.call(os); a = _; _ = a.next(); b = _; return [1, 0];\r\n _ = !b.done; if (!_) return [1, 0]; o = b.value; _ = (true);\r\n if (!_) return [1, 0]; _ = a.next(); b = _; return [-1, 0]", true);
|
|
61
61
|
test("for(a=0;a<1;a++)if(a==0)continue\r\n else a=1", `a = 0; return [1, 0];\r\n _ = a < 1; if (!_) return [3, 0]; _ = a == 0; if (_) return [2, 0]; return [1, 0];\r\n a = 1; return [1, 0];\r\n _ = a++; return [-2, 0]`, true);
|
|
62
62
|
test("for(a=0;a<1;a++)if(a==0){continue} else {a=1}", `a = 0; return [1, 0];\r\n _ = a < 1; if (!_) return [3, 0]; _ = a == 0; if (!_) return [1, 0]; return [2, 0];\r\n a = 1; return [1, 0];\r\n _ = a++; return [-2, 0]`, true);
|
|
63
63
|
test("for(a=0;a<1;a++){if(a==0){a=2;continue} else if(b) {a=1;continue} c=3}", `a = 0; return [1, 0];\r\n _ = a < 1; if (!_) return [4, 0]; _ = a == 0; if (!_) return [1, 0]; a = 2; return [3, 0];\r\n if (!b) return [1, 0]; a = 1; return [2, 0];\r\n c = 3; return [1, 0];\r\n _ = a++; return [-3, 0]`, true);
|
|
@@ -93,4 +93,5 @@ test(`a=a+b*c+c*d`, `_ = b * c, _ = a + _, _0 = c * d, _ = _ + _0; a = _`, true)
|
|
|
93
93
|
test(`cc.name += "<f test></f>"`, `_ = cc.name + "<f test></f>"; cc.name = _`, true);
|
|
94
94
|
test("yield a", 'return [a, 3]', true);
|
|
95
95
|
test("throw a", 'throw a', true);
|
|
96
|
-
test("debugger", 'debugger', true);
|
|
96
|
+
test("debugger", 'debugger', true);
|
|
97
|
+
test("a(b,b+=1)", '_ = b; _0 = b + 1; b = _0; a(_, _0)', true);
|