efront 3.38.2 → 4.0.0
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.
- package/coms/basic_/readme.md +1 -1
- package/coms/compile/downLevel.js +45 -51
- package/coms/compile/downLevel_test.js +66 -62
- package/coms/compile/unstruct.js +45 -4
- package/coms/compile/unstruct_test.js +1 -1
- package/coms/reptile/colored_console.js +2 -2
- package/docs//347/211/210/346/234/254/350/257/264/346/230/216.md +2 -0
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/readme.md +1 -1
package/coms/basic_/readme.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# efront 兼容性说明
|
|
2
2
|
* `coms/basic_`目录的代码均为非标准实现,如果你要兼容低版本的运行环境,尽量避免使用高级的功能
|
|
3
|
-
*
|
|
3
|
+
* 3.x及以前版本的`efront`进行代码降级时用到了`typescript`,所以下文有些问题的描述会误伤`typescript`,不用觉得奇怪。
|
|
4
4
|
* 已知在转换成低版本代码后与高级版本有区别的语法如下:
|
|
5
5
|
1. ```javascript
|
|
6
6
|
class ... extends Array {...}
|
|
@@ -24,7 +24,7 @@ var killdec = function (queue, i, getobjname, _var = 'var', killobj) {
|
|
|
24
24
|
var dp = 0;
|
|
25
25
|
if (typeof k === 'number' && k < 0) {
|
|
26
26
|
dp = 1;
|
|
27
|
-
k = `${tmpname}
|
|
27
|
+
k = `${tmpname}["length"]>${doged - k - 1}?${tmpname}[${tmpname}["length"] - ${-k}]:undefined`;
|
|
28
28
|
} else {
|
|
29
29
|
k = tmpname + k;
|
|
30
30
|
}
|
|
@@ -123,12 +123,12 @@ var killdec = function (queue, i, getobjname, _var = 'var', killobj) {
|
|
|
123
123
|
map[a] = a;
|
|
124
124
|
});
|
|
125
125
|
d.attributes.forEach(dec);
|
|
126
|
-
write(name, `rest_(${tmpname},[${Object.keys(map)}])`, false);
|
|
126
|
+
write(name, `rest_(${tmpname},[${Object.keys(map)}])`, false), rootenvs.rest_ = true;
|
|
127
127
|
}
|
|
128
128
|
else {
|
|
129
129
|
doged = at + 1;
|
|
130
130
|
head.forEach(dec);
|
|
131
|
-
write(name, `
|
|
131
|
+
write(name, `slice_["call"](${tmpname},${at}${a > at ? `,${at - a}` : ''})`, rest.length > 0), rootenvs.slice_ = true;
|
|
132
132
|
doged = at + 1;
|
|
133
133
|
total = rest.length;
|
|
134
134
|
rest.forEach(dec);
|
|
@@ -245,7 +245,7 @@ var killmap = function (body, i, _getobjname, killobj) {
|
|
|
245
245
|
s = m, p = m.prev;
|
|
246
246
|
if (m.type === EXPRESS) break;
|
|
247
247
|
while (m && (m.type === STRAP || m.type === STAMP)) m = m.next;
|
|
248
|
-
if (!m || m.
|
|
248
|
+
if (!m || m.type & (PROPERTY | QUOTED | EXPRESS) && /^\[/.test(m.text) || m.isprop && (m.type === SCOPED || m.short || m.next && m.next.type === SCOPED)) {
|
|
249
249
|
break;
|
|
250
250
|
}
|
|
251
251
|
m = m.next;
|
|
@@ -425,10 +425,12 @@ var setprop = function (prop, k, d, q) {
|
|
|
425
425
|
else pe = null;
|
|
426
426
|
}
|
|
427
427
|
if (!d[prop.name]) {
|
|
428
|
-
let tmp = scanner2(`\r\nObject
|
|
428
|
+
let tmp = scanner2(`\r\nObject["defineProperty"](${k},${prop.name},{})`);
|
|
429
429
|
insert1(q, null, ...tmp);
|
|
430
430
|
if (pe) insert1(q, null, pe);
|
|
431
|
-
|
|
431
|
+
tmp = tmp[tmp.length - 1];
|
|
432
|
+
tmp = tmp[tmp.length - 1];
|
|
433
|
+
d[prop.name] = tmp;
|
|
432
434
|
}
|
|
433
435
|
if (d[prop.name].length) insert1(d[prop.name], null, { type: STAMP, text: ',' });
|
|
434
436
|
insert1(d[prop.name], null, { type: PROPERTY, text: prop.get ? "get" : "set" });
|
|
@@ -489,7 +491,7 @@ var killcls = function (body, i, getname_) {
|
|
|
489
491
|
while (m) {
|
|
490
492
|
var [prop, m] = getprop(o, m);
|
|
491
493
|
if (!prop.value.length) prop.value = scanner2('undefined;');
|
|
492
|
-
var k = prop.static ? clz.name : `${clz.name}
|
|
494
|
+
var k = prop.static ? clz.name : `${clz.name}["prototype"]`;
|
|
493
495
|
var d = prop.static ? static_ : define_;
|
|
494
496
|
if (prop.get || prop.set || prop.static) {
|
|
495
497
|
setprop(prop, k, d, defines);
|
|
@@ -518,16 +520,16 @@ var killcls = function (body, i, getname_) {
|
|
|
518
520
|
if (cs.used.this) rename(cs.used, 'this', newt);
|
|
519
521
|
var inited = false;
|
|
520
522
|
assign.forEach(o => {
|
|
521
|
-
if (o.type === EXPRESS) o.text = o.text.replace(/^this
|
|
523
|
+
if (o.type === EXPRESS) o.text = o.text.replace(/^this([\[\.]|$)/g, newt + "$1");
|
|
522
524
|
});
|
|
523
525
|
if (cs.used.super) {
|
|
524
526
|
cs.used.super.forEach(o => {
|
|
525
527
|
if (o.text !== 'super') return;
|
|
526
528
|
var n = o.next;
|
|
527
529
|
if (!n || n.type !== SCOPED || n.entry !== "(") return;
|
|
528
|
-
o.text = base + '
|
|
530
|
+
o.text = base + '["call"]';
|
|
529
531
|
if (!inited) {
|
|
530
|
-
insert1(o.queue, o, ...assign);
|
|
532
|
+
insert1(o.queue, skipAssignment(o), ...assign);
|
|
531
533
|
}
|
|
532
534
|
inited = true;
|
|
533
535
|
insert1(o.queue, o, ...scanner2(`var ${newt}=`));
|
|
@@ -539,11 +541,11 @@ var killcls = function (body, i, getname_) {
|
|
|
539
541
|
if (scoped.used.super) {
|
|
540
542
|
scoped.used.super.forEach(o => {
|
|
541
543
|
if (!/^super(\.|\[|$)/.test(o.text)) return;
|
|
542
|
-
o.text = `${base}
|
|
543
|
-
insert1(o.queue, o.next, ...scanner2('
|
|
544
|
+
o.text = `${base}["prototype"]` + o.text.replace(/^super/, '');
|
|
545
|
+
insert1(o.queue, o.next, ...scanner2('["bind"](this)'));
|
|
544
546
|
})
|
|
545
547
|
}
|
|
546
|
-
if (!inited) constructor[1].unshift(...scanner2(`\r\nvar ${newt}=${base}
|
|
548
|
+
if (!inited) constructor[1].unshift(...scanner2(`\r\nvar ${newt}=${base}["apply"](this,arguments)||this;\r\n`), ...assign);
|
|
547
549
|
}
|
|
548
550
|
else {
|
|
549
551
|
constructor[1].unshift(...assign);
|
|
@@ -582,7 +584,7 @@ var indexof = function (list, o, i) {
|
|
|
582
584
|
return i;
|
|
583
585
|
};
|
|
584
586
|
// 数组或参数展开
|
|
585
|
-
var killspr = function (body, i, _getobjname,
|
|
587
|
+
var killspr = function (body, i, _getobjname, killobj) {
|
|
586
588
|
var o = body[i];
|
|
587
589
|
var m = o.first;
|
|
588
590
|
if (!m) return i + 1;
|
|
@@ -592,12 +594,12 @@ var killspr = function (body, i, _getobjname, setsolid, killobj) {
|
|
|
592
594
|
var s = m;
|
|
593
595
|
s.text = s.text.replace(/^\.\.\./, '');
|
|
594
596
|
m = skipAssignment(m);
|
|
595
|
-
var q = scanner2(`
|
|
597
|
+
var q = scanner2(`slice_["call"]()`);
|
|
598
|
+
rootenvs.slice_ = true;
|
|
596
599
|
var v = splice2(o, s, m);
|
|
597
600
|
if (m) splice2(o, m, m = m.next);
|
|
598
601
|
killobj(v);
|
|
599
|
-
insert1(q[1], null, ...v);
|
|
600
|
-
setsolid(q, q[0]);
|
|
602
|
+
insert1(q[q.length - 1], null, ...v);
|
|
601
603
|
return q;
|
|
602
604
|
};
|
|
603
605
|
var killnext = function (m) {
|
|
@@ -613,11 +615,12 @@ var killspr = function (body, i, _getobjname, setsolid, killobj) {
|
|
|
613
615
|
index++;
|
|
614
616
|
}
|
|
615
617
|
if (!m) return i + 1;
|
|
616
|
-
var c = scanner2('
|
|
618
|
+
var c = scanner2('["concat"]()');
|
|
617
619
|
var next = o.next;
|
|
618
620
|
if (o.entry === '(') {
|
|
619
621
|
var r = snapExpressHead(o);
|
|
620
622
|
var rt = r.type === EXPRESS && r.text.replace(/^\.\.\./, '');
|
|
623
|
+
var p = o.prev;
|
|
621
624
|
if (r === o);
|
|
622
625
|
else if (
|
|
623
626
|
r === o.prev && r.type === EXPRESS && !/\.[\s\S]*\./.test(rt) && !/\[[^\]]*\]\[[^\]]*\]/.test(rt)) {
|
|
@@ -625,8 +628,12 @@ var killspr = function (body, i, _getobjname, setsolid, killobj) {
|
|
|
625
628
|
var n = /\.|\[/.test(rt) ? rt.replace(/\.[^\.]*|\[[^\]]*\]$/, '') : "null";
|
|
626
629
|
splice(o, 0, 0, ...scanner2(n + ","));
|
|
627
630
|
}
|
|
631
|
+
else if (p && r === p.prev && p.type === SCOPED && p.entry === "[" && !/[\.\[]/.test(rt)) {
|
|
632
|
+
splice(o, 0, 0, ...scanner2(rt + ","));
|
|
633
|
+
p = r;
|
|
634
|
+
}
|
|
628
635
|
else {
|
|
629
|
-
var
|
|
636
|
+
var n = null, hasdot = false;
|
|
630
637
|
var pt = p.type === EXPRESS && p.text.replace(/^\.\.\./, '');
|
|
631
638
|
if (p.type === EXPRESS && (n = /^(?:[\s\S]*[^\.])?(\.[^\.]*|\[[^\]]*\])$/.exec(pt))) {
|
|
632
639
|
hasdot = p.text.length !== pt.length;
|
|
@@ -652,7 +659,7 @@ var killspr = function (body, i, _getobjname, setsolid, killobj) {
|
|
|
652
659
|
if (cx >= 0) splice(h1, cx, 1);
|
|
653
660
|
}
|
|
654
661
|
}
|
|
655
|
-
splice(body, i++, 0, ...scanner2('
|
|
662
|
+
splice(body, i++, 0, ...scanner2('["apply"]'));
|
|
656
663
|
var m1 = skipAssignment(m);
|
|
657
664
|
if (index > 0 || m1 && m1.next) {
|
|
658
665
|
var h = splice(o, 2, o.length);
|
|
@@ -696,7 +703,7 @@ var killspr = function (body, i, _getobjname, setsolid, killobj) {
|
|
|
696
703
|
return indexof(body, next, i);
|
|
697
704
|
};
|
|
698
705
|
|
|
699
|
-
var killobj = function (body, getobjname, getletname, getname_, letname_,
|
|
706
|
+
var killobj = function (body, getobjname, getletname, getname_, letname_, deep = 0) {
|
|
700
707
|
var i = 0;
|
|
701
708
|
var _getdeep = function () {
|
|
702
709
|
deep++;
|
|
@@ -712,7 +719,7 @@ var killobj = function (body, getobjname, getletname, getname_, letname_, setsol
|
|
|
712
719
|
return getobjname(deep + i);
|
|
713
720
|
};
|
|
714
721
|
var deepkill = function (o) {
|
|
715
|
-
killobj(o, getobjname, getletname, getname_, letname_,
|
|
722
|
+
killobj(o, getobjname, getletname, getname_, letname_, deep);
|
|
716
723
|
if (o.await_) body.await_ = true;
|
|
717
724
|
};
|
|
718
725
|
while (i < body.length) {
|
|
@@ -798,7 +805,7 @@ var killobj = function (body, getobjname, getletname, getname_, letname_, setsol
|
|
|
798
805
|
i = killdec(body, i, _getdeepname, '', deepkill);
|
|
799
806
|
}
|
|
800
807
|
else {
|
|
801
|
-
i = killspr(body, i, _getobjname,
|
|
808
|
+
i = killspr(body, i, _getobjname, deepkill);
|
|
802
809
|
}
|
|
803
810
|
continue;
|
|
804
811
|
}
|
|
@@ -808,11 +815,11 @@ var killobj = function (body, getobjname, getletname, getname_, letname_, setsol
|
|
|
808
815
|
var p = o.prev;
|
|
809
816
|
if (p.transive || /^(if|else|while|with|switch)$/.test(p.text)) deepkill(o);
|
|
810
817
|
}
|
|
811
|
-
else if (!o.prev || o.prev.type
|
|
818
|
+
else if (!o.prev || o.prev.type & (STAMP | STRAP)) {
|
|
812
819
|
deepkill(o);
|
|
813
820
|
}
|
|
814
821
|
else {
|
|
815
|
-
i = killspr(body, i, _getobjname,
|
|
822
|
+
i = killspr(body, i, _getobjname, deepkill);
|
|
816
823
|
continue;
|
|
817
824
|
}
|
|
818
825
|
}
|
|
@@ -971,8 +978,8 @@ var unforof = function (o, getnewname, used) {
|
|
|
971
978
|
o.push(...mo);
|
|
972
979
|
o.push({ type: STAMP, text: ',' });
|
|
973
980
|
}
|
|
974
|
-
if (useSimpleLoop) o.push(...scanner2(`${iname}=0,${gname}=${oname}
|
|
975
|
-
else rootenvs.Symbol = true, o.push(...scanner2(`${gname}=${hasawait ? `${oname}[Symbol
|
|
981
|
+
if (useSimpleLoop) o.push(...scanner2(`${iname}=0,${gname}=${oname}["length"];${iname}<${gname}&&(${createString([p])}=${oname}[${iname}],true);${iname}++`));
|
|
982
|
+
else rootenvs.Symbol = true, o.push(...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"]()`));
|
|
976
983
|
relink(o);
|
|
977
984
|
};
|
|
978
985
|
var unarrow = function (body, i, killobj, letname_) {
|
|
@@ -993,7 +1000,7 @@ var unarrow = function (body, i, killobj, letname_) {
|
|
|
993
1000
|
if (n.type !== SCOPED || n.entry !== "{") {
|
|
994
1001
|
var nni = skipAssignment(body, ni);
|
|
995
1002
|
b = scanner2('{}')[0];
|
|
996
|
-
b
|
|
1003
|
+
splice(b, 0, 0, { type: STRAP, transive: true, text: "return" }, ...splice(body, ni, nni - ni, b));
|
|
997
1004
|
killarg(h, b, letname_);
|
|
998
1005
|
killobj(b);
|
|
999
1006
|
ni = nni;
|
|
@@ -1056,10 +1063,10 @@ var killarg = function (head, body, _getname, setarg = true) {
|
|
|
1056
1063
|
argcodes.unshift.apply(argcodes, anames.map((a, i) => {
|
|
1057
1064
|
if (a === cname) cname = '';
|
|
1058
1065
|
var n = anames.length - i;
|
|
1059
|
-
return `${a}=arguments
|
|
1066
|
+
return `${a}=arguments["length"]>${collect + n - 1}?arguments[arguments["length"] - ${n}]:undefined`;
|
|
1060
1067
|
}));
|
|
1061
1068
|
|
|
1062
|
-
if (cname) argcodes.unshift(`var ${cname}=
|
|
1069
|
+
if (cname) argcodes.unshift(`var ${cname}=slice_["call"](arguments,${collect}${index > collect ? `,${collect - index}` : ""})`), rootenvs.slice_ = true;
|
|
1063
1070
|
}
|
|
1064
1071
|
if (argcodes.length && setarg) {
|
|
1065
1072
|
if (!body) {
|
|
@@ -1315,25 +1322,6 @@ var down = function (scoped) {
|
|
|
1315
1322
|
scoped.body.unshift.apply(scoped.body, codelist);
|
|
1316
1323
|
};
|
|
1317
1324
|
|
|
1318
|
-
var solidmap = {};
|
|
1319
|
-
var setsolid = function (q, o) {
|
|
1320
|
-
var k = o.text;
|
|
1321
|
-
if (!/\.[\s\S]+\./.test(k)) return;
|
|
1322
|
-
var c = k.replace(/^[\s\S]*?(\.[^\.]*$)/, '$1');
|
|
1323
|
-
k = k.replace(/^([\s\S]*?)\.[^\.]*$/, '$1');
|
|
1324
|
-
if (!solidmap[k]) {
|
|
1325
|
-
solidmap[k] = [q, o];
|
|
1326
|
-
return;
|
|
1327
|
-
}
|
|
1328
|
-
if (typeof solidmap[k] !== 'string') {
|
|
1329
|
-
var n = k.replace(/^[\s\S]*?([^\.]*)$/, "$1");
|
|
1330
|
-
n = _getname(n + "_");
|
|
1331
|
-
var [q, b] = solidmap[k];
|
|
1332
|
-
b.text = `(${n} = ${k})${c}`;
|
|
1333
|
-
solidmap[k] = n;
|
|
1334
|
-
}
|
|
1335
|
-
o.text = solidmap[k] + c;
|
|
1336
|
-
};
|
|
1337
1325
|
var markcodes = [];
|
|
1338
1326
|
if (scoped.isfunc && scoped.used.this && (funcMark || scoped.insett)) {
|
|
1339
1327
|
let tn = _getname("this_");
|
|
@@ -1349,9 +1337,9 @@ var down = function (scoped) {
|
|
|
1349
1337
|
}
|
|
1350
1338
|
var fordeep = 0;
|
|
1351
1339
|
var _killobj = function (_getlocal, o) {
|
|
1352
|
-
return killobj(o, gettmpname, getletname, _getlocal, _letname
|
|
1340
|
+
return killobj(o, gettmpname, getletname, _getlocal, _letname);
|
|
1353
1341
|
};
|
|
1354
|
-
var kill = function (scoped, _,
|
|
1342
|
+
var kill = function (scoped, _, parentScope) {
|
|
1355
1343
|
if (scoped.isfunc) return down(scoped);
|
|
1356
1344
|
killlet(scoped);
|
|
1357
1345
|
var saveddeep = fordeep;
|
|
@@ -1380,6 +1368,7 @@ var down = function (scoped) {
|
|
|
1380
1368
|
fordeep = saveddeep;
|
|
1381
1369
|
};
|
|
1382
1370
|
if (scoped.isfunc) {
|
|
1371
|
+
if (!scoped.body && scoped.head) scoped.body = scoped.head.next;
|
|
1383
1372
|
if (scoped.head) var [argsmap, argcodes] = killarg(scoped.head, scoped.body, _letname, false);
|
|
1384
1373
|
else argcodes = [];
|
|
1385
1374
|
if ((markcodes.length || argcodes.length) && !funcMark) precode(markcodes.concat(argcodes).join(";") + ";");
|
|
@@ -1412,6 +1401,7 @@ var down = function (scoped) {
|
|
|
1412
1401
|
scoped.yield = false;
|
|
1413
1402
|
}
|
|
1414
1403
|
var vars1 = Object.keys(vars).filter(k => !(k in scoped.vars));
|
|
1404
|
+
scoped.vars = vars;
|
|
1415
1405
|
if (argsmap) vars1 = vars1.filter(k => !(k in argsmap));
|
|
1416
1406
|
if (vars1.length && scoped.body) scoped.body.push(...scanner2(`\r\nvar ${vars1}`));
|
|
1417
1407
|
if (scoped.body) relink(scoped.body);
|
|
@@ -1433,6 +1423,10 @@ var downcode = downLevel.code = function (code) {
|
|
|
1433
1423
|
rootHyper = rootenvs.Symbol || code.yield || code.async;
|
|
1434
1424
|
down(code.scoped);
|
|
1435
1425
|
code.keepcolor = false;
|
|
1426
|
+
if (rootenvs.slice_) {
|
|
1427
|
+
delete rootenvs.slice_;
|
|
1428
|
+
if (!code.vars.slice_) splice(code.scoped.body, 0, 0, ...scanner2('var slice_ = Array["prototype"]["slice"];\r\n'));
|
|
1429
|
+
}
|
|
1436
1430
|
rootenvs = null;
|
|
1437
1431
|
return code;
|
|
1438
1432
|
};
|
|
@@ -2,7 +2,7 @@ var downLevel = require("./downLevel");
|
|
|
2
2
|
var _asert = assert, i = 10;
|
|
3
3
|
assert = function (a, b) {
|
|
4
4
|
var d = 1;
|
|
5
|
-
b = b.split(/(?<!\r)\n/), d = b
|
|
5
|
+
b = b.split(/(?<!\r)\n/), d = b["length"], b = b["join"]("\r\n");
|
|
6
6
|
_asert(a, b, i);
|
|
7
7
|
i += d;
|
|
8
8
|
}
|
|
@@ -54,27 +54,27 @@ assert(downLevel(`function (arg1=b,[c],d,e=f){}`), "function (arg1, arg2, d, e)
|
|
|
54
54
|
i++// class降级
|
|
55
55
|
assert(downLevel(`class a {}`), "function a() {}")
|
|
56
56
|
assert(downLevel(`class a {a=1}`), "function a() { this.a = 1 }")
|
|
57
|
-
assert(downLevel(`class a {a=1; b(){}}`),
|
|
58
|
-
assert(downLevel(`=class a {a=1; b(){}}`),
|
|
59
|
-
assert(downLevel(`var a=class {a=1; static b=2 b(){}};`),
|
|
60
|
-
assert(downLevel(`var a=class { constructor(){this.a=1}; static b=2 b(){}};`),
|
|
57
|
+
assert(downLevel(`class a {a=1; b(){}}`), `function a() { this.a = 1; }; a["prototype"].b = function () {}`)
|
|
58
|
+
assert(downLevel(`=class a {a=1; b(){}}`), `= function (a) { a["prototype"].b = function () {}\r\nreturn a }(function a() { this.a = 1; })`)
|
|
59
|
+
assert(downLevel(`var a=class {a=1; static b=2 b(){}};`), `var a = function (cls0) { cls0.b = 2\r\ncls0["prototype"].b = function () {}\r\nreturn cls0 }(function () { this.a = 1; });`)
|
|
60
|
+
assert(downLevel(`var a=class { constructor(){this.a=1}; static b=2 b(){}};`), `var a = function (cls0) { cls0.b = 2\r\ncls0["prototype"].b = function () {}\r\nreturn cls0 }(function () { this.a = 1 });`)
|
|
61
61
|
assert(downLevel(`class a {static b(){}}`), "function a() {}; a.b = function () {}")
|
|
62
62
|
assert(downLevel(`class a extends b{}`), `function a() {
|
|
63
|
-
var this_ = b
|
|
63
|
+
var this_ = b["apply"](this, arguments) || this;
|
|
64
64
|
return this_ }; extends_(a, b)`);
|
|
65
65
|
assert(downLevel(`class a extends class b{}{}`), `var a = function (b, a) { extends_(a, b)\r\nreturn a }(function b() {}, function a() {
|
|
66
|
-
var this_ = b
|
|
66
|
+
var this_ = b["apply"](this, arguments) || this;
|
|
67
67
|
return this_ })`);
|
|
68
68
|
assert(downLevel(`class a {get a(){}}`), `function a() {};
|
|
69
|
-
Object
|
|
69
|
+
Object["defineProperty"](a["prototype"], "a", { get: function () {} })`);
|
|
70
70
|
assert(downLevel(`class a {set a(){}}`), `function a() {};
|
|
71
|
-
Object
|
|
71
|
+
Object["defineProperty"](a["prototype"], "a", { set: function () {} })`);
|
|
72
72
|
assert(downLevel(`class a {get a(){}; get b(){}; set a(){}}`), `function a() {};
|
|
73
|
-
Object
|
|
74
|
-
Object
|
|
73
|
+
Object["defineProperty"](a["prototype"], "a", { get: function () {}, set: function () {} });
|
|
74
|
+
Object["defineProperty"](a["prototype"], "b", { get: function () {} });`);
|
|
75
75
|
assert(downLevel(`class a {set a(){}; get b(){}; set a(){}}`), `function a() {};
|
|
76
|
-
Object
|
|
77
|
-
Object
|
|
76
|
+
Object["defineProperty"](a["prototype"], "a", { set: function () {}, set: function () {} });
|
|
77
|
+
Object["defineProperty"](a["prototype"], "b", { get: function () {} });`);
|
|
78
78
|
i++// 属性降级
|
|
79
79
|
assert(downLevel(`return ({b,async a(){}})`), `return ((_ = {},
|
|
80
80
|
_.b = b,
|
|
@@ -132,38 +132,37 @@ assert(downLevel(`={...{},...c,b}`), `= (_ = extend({}, {}, c),
|
|
|
132
132
|
_.b = b, _)\r\nvar _`);
|
|
133
133
|
assert(downLevel(`={a(){},get c(){},b}`), `= (_ = {},
|
|
134
134
|
_.a = function () {},
|
|
135
|
-
Object
|
|
135
|
+
Object["defineProperty"](_, "c", { get: function () {} }),
|
|
136
136
|
_.b = b, _)\r\nvar _`);
|
|
137
|
-
assert(downLevel(`=[...a]`),
|
|
138
|
-
assert(downLevel(`let a = [...a,...a()];`), `var
|
|
139
|
-
var slice_`)
|
|
140
|
-
assert(downLevel(`=[
|
|
141
|
-
assert(downLevel(`=[a,...b]`),
|
|
142
|
-
assert(downLevel(`=[a
|
|
143
|
-
assert(downLevel(`=[a,b,...c]`),
|
|
144
|
-
assert(downLevel(`=[a,b,...c,d]`),
|
|
145
|
-
assert(downLevel(`=[a,b,...c,d,e,f]`),
|
|
146
|
-
assert(downLevel(`=[a,b,...c,d
|
|
147
|
-
assert(downLevel(
|
|
148
|
-
assert(downLevel(`a(...
|
|
149
|
-
assert(downLevel(`a(c,d,e,...b(...c))`), `
|
|
150
|
-
assert(downLevel(`a(c,d,e,...b.a(...c))`), `
|
|
151
|
-
assert(downLevel(`a(
|
|
152
|
-
assert(downLevel(`a(...b
|
|
153
|
-
assert(downLevel(`
|
|
154
|
-
assert(downLevel(`
|
|
155
|
-
assert(downLevel(`a(b,...c)`), `
|
|
156
|
-
assert(downLevel(`a(a,b,...c,d,...e)`), `
|
|
157
|
-
assert(downLevel(`a.
|
|
158
|
-
assert(downLevel(`
|
|
159
|
-
assert(downLevel(`
|
|
160
|
-
assert(downLevel(`a(...b).c(...d)`), `(_ = a
|
|
161
|
-
assert(downLevel(`
|
|
162
|
-
assert(downLevel(`
|
|
163
|
-
assert(downLevel(`const typeNames = [79 /* Identifier */, ...typeKeywords];`), `var typeNames = [79 /* Identifier */].concat(Array.prototype.slice.call(typeKeywords));`);
|
|
137
|
+
assert(downLevel(`=[...a]`), `var slice_ = Array["prototype"]["slice"];\r\n= slice_["call"](a)`)
|
|
138
|
+
assert(downLevel(`let a = [...a,...a()];`), `var slice_ = Array["prototype"]["slice"];\r\nvar a = slice_["call"](a)["concat"](slice_["call"](a()));`)
|
|
139
|
+
assert(downLevel(`=[...a,...b]`), `var slice_ = Array["prototype"]["slice"];\r\n= slice_["call"](a)["concat"](slice_["call"](b))`)
|
|
140
|
+
assert(downLevel(`=[a,...b]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a]["concat"](slice_["call"](b))`)
|
|
141
|
+
assert(downLevel(`=[a,...b,...c]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a]["concat"](slice_["call"](b), slice_["call"](c))`)
|
|
142
|
+
assert(downLevel(`=[a,b,...c]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a, b]["concat"](slice_["call"](c))`)
|
|
143
|
+
assert(downLevel(`=[a,b,...c,d]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a, b]["concat"](slice_["call"](c), [d])`)
|
|
144
|
+
assert(downLevel(`=[a,b,...c,d,e,f]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a, b]["concat"](slice_["call"](c), [d, e, f])`)
|
|
145
|
+
assert(downLevel(`=[a,b,...c,d,e,f,...g]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a, b]["concat"](slice_["call"](c), [d, e, f], slice_["call"](g))`)
|
|
146
|
+
assert(downLevel(`=[a,b,...c,d,...e]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a, b]["concat"](slice_["call"](c), [d], slice_["call"](e))`)
|
|
147
|
+
assert(downLevel(`a(...b)`), `a["apply"](null, b)`)
|
|
148
|
+
assert(downLevel(`a(c,d,e,...b(...c))`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, [c, d, e]["concat"](slice_["call"](b["apply"](null, c))))`)
|
|
149
|
+
assert(downLevel(`a(c,d,e,...b.a(...c))`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, [c, d, e]["concat"](slice_["call"](b.a["apply"](b, c))))`)
|
|
150
|
+
assert(downLevel(`a(c,d,e,...b.a.c(...c))`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, [c, d, e]["concat"](slice_["call"]((_ = b.a).c["apply"](_, c))))\r\nvar _`)
|
|
151
|
+
assert(downLevel(`a(...b,...c)`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, slice_["call"](b)["concat"](slice_["call"](c)))`)
|
|
152
|
+
assert(downLevel(`a(...b,c)`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, slice_["call"](b)["concat"]([c]))`)
|
|
153
|
+
assert(downLevel(`getPendingExpressions()[_push](...flattenCommaList(expr));`), `(_ = getPendingExpressions())[_push]["apply"](_, flattenCommaList(expr));\r\nvar _`)
|
|
154
|
+
assert(downLevel(`a(b,...c)`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, [b]["concat"](slice_["call"](c)))`)
|
|
155
|
+
assert(downLevel(`a(a,b,...c,d,...e)`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, [a, b]["concat"](slice_["call"](c), [d], slice_["call"](e)))`)
|
|
156
|
+
assert(downLevel(`a["call"](a,b,...c,d,...e)`), `var slice_ = Array["prototype"]["slice"];\r\na["call"]["apply"](a, [a, b]["concat"](slice_["call"](c), [d], slice_["call"](e)))`)
|
|
157
|
+
assert(downLevel(`a.b(a,b,...c,d,...e)`), `var slice_ = Array["prototype"]["slice"];\r\na.b["apply"](a, [a, b]["concat"](slice_["call"](c), [d], slice_["call"](e)))`)
|
|
158
|
+
assert(downLevel(`[].b(a,b,...c,d,...e)`), `var slice_ = Array["prototype"]["slice"];\r\n(_ = []).b["apply"](_, [a, b]["concat"](slice_["call"](c), [d], slice_["call"](e)))\r\nvar _`)
|
|
159
|
+
assert(downLevel(`a(...b).c(...d)`), `(_ = a["apply"](null, b)).c["apply"](_, d)\r\nvar _`)
|
|
160
|
+
assert(downLevel(`a(...b).c(...d).e(...f)`), `(_ = (_ = a["apply"](null, b)).c["apply"](_, d)).e["apply"](_, f)\r\nvar _`)
|
|
161
|
+
assert(downLevel(`diagnostic.relatedInformation.push(...relatedInformation);`), `(_ = diagnostic.relatedInformation).push["apply"](_, relatedInformation);\r\nvar _`);
|
|
162
|
+
assert(downLevel(`const typeNames = [79 /* Identifier */, ...typeKeywords];`), `var slice_ = Array["prototype"]["slice"];\r\nvar typeNames = [79 /* Identifier */]["concat"](slice_["call"](typeKeywords));`);
|
|
164
163
|
i++// 箭头函数
|
|
165
164
|
assert(downLevel(`a=>k`), "function (a) { return k }")
|
|
166
|
-
assert(downLevel(`function (a,...b,b){}`),
|
|
165
|
+
assert(downLevel(`function (a,...b,b){}`), `function (a, b) { b = arguments["length"] > 1 ? arguments[arguments["length"] - 1] : undefined; }`)
|
|
167
166
|
assert(downLevel(`(a)=>k`), "function (a) { return k }")
|
|
168
167
|
assert(downLevel(`(a=1)=>k`), "function (a) { if (a === undefined) a = 1; return k }")
|
|
169
168
|
assert(downLevel(`([a])=>b`), "function (arg) { var a = arg[0]; return b }")
|
|
@@ -171,31 +170,36 @@ assert(downLevel(`map(([a])=>a)`), "map(function (arg) { var a = arg[0]; return
|
|
|
171
170
|
assert(downLevel(`var [_, R, G, B, A] = rgbHex.exec(color).map(a => parseInt(a + a, 16));`), "var _0 = rgbHex.exec(color).map(function (a) { return parseInt(a + a, 16) }), _ = _0[0], R = _0[1], G = _0[2], B = _0[3], A = _0[4];")
|
|
172
171
|
assert(downLevel(`if (/^(?:select|input|textarea)$/i.test(initialEvent.target.tagName) || getTargetIn(a => a.nodrag || a.hasAttribute('nodrag'), initialEvent.target)) return;`), "if (/^(?:select|input|textarea)$/i.test(initialEvent.target.tagName) || getTargetIn(function (a) { return a.nodrag || a.hasAttribute('nodrag') }, initialEvent.target)) return;")
|
|
173
172
|
i++// 对象收集
|
|
174
|
-
assert(downLevel(`function (a,...b){}`), "
|
|
175
|
-
assert(downLevel(`function (a,...b,c){}`), "
|
|
176
|
-
assert(downLevel(`function (a,...,c){}`),
|
|
177
|
-
assert(downLevel(`(...a) => k`), "
|
|
178
|
-
assert(downLevel(`for(o of os) noSymbol`),
|
|
179
|
-
assert(downLevel(`for(var o of os) Symbol`),
|
|
180
|
-
assert(downLevel(`for(var o of os) Symbol`),
|
|
181
|
-
assert(downLevel(`for(var o of o)Symbol`),
|
|
182
|
-
assert(downLevel(`for(var [a] of os)Symbol`),
|
|
183
|
-
assert(downLevel(`for(var [a,b] of os)Symbol`),
|
|
184
|
-
assert(downLevel(`[...a]=a`),
|
|
185
|
-
assert(downLevel(`[c,...a]=a`), "
|
|
186
|
-
assert(downLevel(`[...a]=a`),
|
|
187
|
-
assert(downLevel(`[...a,c]=a`), "
|
|
173
|
+
assert(downLevel(`function (a,...b){}`), `var slice_ = Array["prototype"]["slice"];\r\nfunction (a) { var b = slice_["call"](arguments, 1); }`)
|
|
174
|
+
assert(downLevel(`function (a,...b,c){}`), `var slice_ = Array["prototype"]["slice"];\r\nfunction (a, c) { var b = slice_["call"](arguments, 1, -1); c = arguments["length"] > 1 ? arguments[arguments["length"] - 1] : undefined; }`)
|
|
175
|
+
assert(downLevel(`function (a,...,c){}`), `function (a, c) { c = arguments["length"] > 1 ? arguments[arguments["length"] - 1] : undefined; }`)
|
|
176
|
+
assert(downLevel(`(...a) => k`), `var slice_ = Array["prototype"]["slice"];\r\nfunction () { var a = slice_["call"](arguments, 0); return k }`)
|
|
177
|
+
assert(downLevel(`for(o of os) noSymbol`), `for (_ = 0, _0 = os["length"]; _ < _0 && (o = os[_], true); _++) noSymbol\r\nvar _, _0`)
|
|
178
|
+
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`)
|
|
179
|
+
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`)
|
|
180
|
+
assert(downLevel(`for(var o of o)Symbol`), `for (var o, _1 = o, _0 = _1[Symbol["iterator"]] || _1[Symbol["asyncIterator"]] || Array["prototype"][Symbol["iterator"]], _0 = _0["call"](_1), _ = _0["next"](); !_["done"] && (o = _["value"], true); _ = _0["next"]()) Symbol\r\nvar _, _0, _1`)
|
|
181
|
+
assert(downLevel(`for(var [a] of os)Symbol`), `for (var a, _0 = os[Symbol["iterator"]] || os[Symbol["asyncIterator"]] || Array["prototype"][Symbol["iterator"]], _0 = _0["call"](os), _ = _0["next"](); !_["done"] && (a = _["value"][0], true); _ = _0["next"]()) Symbol\r\nvar _, _0`)
|
|
182
|
+
assert(downLevel(`for(var [a,b] of os)Symbol`), `for (var a, b, _0 = os[Symbol["iterator"]] || os[Symbol["asyncIterator"]] || Array["prototype"][Symbol["iterator"]], _0 = _0["call"](os), _ = _0["next"](); !_["done"] && (_1 = _["value"], a = _1[0], b = _1[1], true); _ = _0["next"]()) Symbol\r\nvar _, _0, _1`)
|
|
183
|
+
assert(downLevel(`[...a]=a`), `var slice_ = Array["prototype"]["slice"];\r\na = slice_["call"](a, 0)`)
|
|
184
|
+
assert(downLevel(`[c,...a]=a`), `var slice_ = Array["prototype"]["slice"];\r\nc = a[0], a = slice_["call"](a, 1)`)
|
|
185
|
+
assert(downLevel(`[...a]=a`), `var slice_ = Array["prototype"]["slice"];\r\na = slice_["call"](a, 0)`)
|
|
186
|
+
assert(downLevel(`[...a,c]=a`), `var slice_ = Array["prototype"]["slice"];\r\n_ = a, a = slice_["call"](a, 0, -1), c = _["length"] > 1 ? _[_["length"] - 1] : undefined\r\nvar _`)
|
|
188
187
|
assert(downLevel(`{...a,c}=a`), `c = a.c, a = rest_(a, ["c"])`)
|
|
189
188
|
assert(downLevel(`{c,...a}=a`), `c = a.c, a = rest_(a, ["c"])`)
|
|
190
189
|
assert(downLevel("if(a){}[r, g, b] = rgb4s(r, g, b, s)"), "if (a) {} _ = rgb4s(r, g, b, s), r = _[0], g = _[1], b = _[2]\r\nvar _", true);
|
|
191
190
|
assert(downLevel(`{c,[c]:b,...a}=a`), `c = a.c, b = a[c], a = rest_(a, ["c", c])`)
|
|
191
|
+
assert(downLevel(`async()=>name = require("./$split")(name)["join"]("/");`), `function () { return async_(
|
|
192
|
+
function () {
|
|
193
|
+
_0 = require("./$split")(name)["join"]("/"); name = _0; return [_0, 2]
|
|
194
|
+
})
|
|
195
|
+
var _0 };`);
|
|
192
196
|
i++//异步或步进函数
|
|
193
197
|
assert(downLevel(`function *(){yield *a}`), `function () { return aster_(
|
|
194
198
|
function () {
|
|
195
|
-
_; _0 = 0; _3 = a
|
|
199
|
+
_; _0 = 0; _3 = a["length"]; _1 = _3; return [1, 0]
|
|
196
200
|
},
|
|
197
201
|
function () {
|
|
198
|
-
_3 = _0 < _1; if (!_3) return [1, 0]; _4 = a[_0]; _ = _4; _3 = (
|
|
202
|
+
_3 = _0 < _1; if (!_3) return [1, 0]; _4 = a[_0]; _ = _4; _3 = (true)
|
|
199
203
|
},
|
|
200
204
|
function () {
|
|
201
205
|
if (!_3) return [2, 0]; return [_, 3]
|
|
@@ -207,16 +211,16 @@ var _, _0, _1, _3, _4 }`)
|
|
|
207
211
|
assert(downLevel(`async function(){}`), `function () { return async_() }`)
|
|
208
212
|
assert(downLevel(`async function(){for(var a of b){Symbol}}`), `function () { return async_(
|
|
209
213
|
function () {
|
|
210
|
-
a; _3 = Symbol
|
|
214
|
+
a; _3 = Symbol["iterator"]; _2 = b[_3]; if (_2) return [1, 0]; _3 = Symbol["asyncIterator"]; _2 = b[_3]; if (_2) return [1, 0]; _3 = Symbol["iterator"]; _2 = Array["prototype"][_3]
|
|
211
215
|
},
|
|
212
216
|
function () {
|
|
213
|
-
_0 = _2; _2 = _0
|
|
217
|
+
_0 = _2; _2 = _0["call"](b); _0 = _2; _2 = _0["next"](); _ = _2; return [1, 0]
|
|
214
218
|
},
|
|
215
219
|
function () {
|
|
216
|
-
_2 = !_
|
|
220
|
+
_2 = !_["done"]; if (!_2) return [1, 0]; _3 = _["value"]; a = _3; _2 = (true)
|
|
217
221
|
},
|
|
218
222
|
function () {
|
|
219
|
-
if (!_2) return [1, 0]; Symbol; _2 = _0
|
|
223
|
+
if (!_2) return [1, 0]; Symbol; _2 = _0["next"](); _ = _2; return [-1, 0]
|
|
220
224
|
})
|
|
221
225
|
var a, _, _0, _2, _3 }`)
|
|
222
226
|
assert(downLevel(`a={async a(){var b =c;return 1}}`), `a = (_ = {},
|
package/coms/compile/unstruct.js
CHANGED
|
@@ -438,6 +438,17 @@ var remove_end_comma = function (o) {
|
|
|
438
438
|
o.splice(cx, cx + 1);
|
|
439
439
|
}
|
|
440
440
|
};
|
|
441
|
+
var isEvalScope = function (o) {
|
|
442
|
+
if (o.entry === "[") {
|
|
443
|
+
var h = snapExpressHead(o);
|
|
444
|
+
return o !== h;
|
|
445
|
+
}
|
|
446
|
+
else if (o.entry === '(') {
|
|
447
|
+
var h = snapExpressHead(o);
|
|
448
|
+
return o === h;
|
|
449
|
+
}
|
|
450
|
+
return false;
|
|
451
|
+
}
|
|
441
452
|
var _invoke = function (t, getname) {
|
|
442
453
|
var nameindex = 0;;
|
|
443
454
|
var getdeepname = function (deep = 0) {
|
|
@@ -464,6 +475,7 @@ var _invoke = function (t, getname) {
|
|
|
464
475
|
if (o.type === SCOPED && (o.entry === '[' || o.entry === "(")) {
|
|
465
476
|
var _nameindex = nameindex;
|
|
466
477
|
remove_end_comma(o);
|
|
478
|
+
var iseval = isEvalScope(o);
|
|
467
479
|
for (var cy = 0; cy < o.length; cy++) {
|
|
468
480
|
if (o[cy].type & (SPACE | COMMENT)) continue;
|
|
469
481
|
var by = cy;
|
|
@@ -477,10 +489,17 @@ var _invoke = function (t, getname) {
|
|
|
477
489
|
}
|
|
478
490
|
var q = toqueue(m, getdeepname, true);
|
|
479
491
|
var qe = q[q.length - 1];
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
492
|
+
if (!iseval || m[m.length - 1] === o.last) {
|
|
493
|
+
splice(o, by, cy - by, { text: qe.name, type: EXPRESS });
|
|
494
|
+
cy = by + 1;
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
while (o[cy].type & (SPACE | COMMENT)) cy++;
|
|
498
|
+
splice(o, by, cy - by + 1);
|
|
499
|
+
cy = by;
|
|
500
|
+
}
|
|
483
501
|
cache.push(...q);
|
|
502
|
+
nameindex++;
|
|
484
503
|
}
|
|
485
504
|
nameindex = _nameindex;
|
|
486
505
|
if (!cache.length) continue;
|
|
@@ -665,6 +684,23 @@ var ternary = function (body, getname, ret) {
|
|
|
665
684
|
}
|
|
666
685
|
return explist;
|
|
667
686
|
};
|
|
687
|
+
var isFunctionOnly = function (body) {
|
|
688
|
+
for (var cx = 2, dx = body.length; cx < dx; cx++) {
|
|
689
|
+
if (body[cx].type & (SPACE | COMMENT)) continue;
|
|
690
|
+
break;
|
|
691
|
+
}
|
|
692
|
+
var o = body[cx];
|
|
693
|
+
if (!o) return false;
|
|
694
|
+
if (o.type === STRAP && o.text === 'function') {
|
|
695
|
+
while (o && o.entry !== "{") o = body[cx++];
|
|
696
|
+
if (!o) return false;
|
|
697
|
+
}
|
|
698
|
+
else return false;
|
|
699
|
+
for (; cx < dx; cx++) {
|
|
700
|
+
if (!(body[cx].type & (SPACE | COMMENT))) return false;
|
|
701
|
+
}
|
|
702
|
+
return true;
|
|
703
|
+
};
|
|
668
704
|
var canbeOnce = function (body) {
|
|
669
705
|
for (var cx = 0, dx = body.length; cx < dx; cx++) {
|
|
670
706
|
if (body[cx].type & (SPACE | COMMENT)) continue;
|
|
@@ -825,7 +861,12 @@ var _express = function (body, getname, ret) {
|
|
|
825
861
|
}
|
|
826
862
|
if (needname) q.name = getname(nameindex);
|
|
827
863
|
relink(q);
|
|
828
|
-
|
|
864
|
+
if (isFunctionOnly(q)) {
|
|
865
|
+
result = [q];
|
|
866
|
+
}
|
|
867
|
+
else {
|
|
868
|
+
result = _invoke(q, getdeepname);
|
|
869
|
+
}
|
|
829
870
|
if (hasor) result[result.length - 1].ret_ = true;
|
|
830
871
|
return result;
|
|
831
872
|
};
|
|
@@ -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())", "_0 = Symbol.iterator; _ = os[_0]; if (_) return [1, 0]; _0 = Symbol.asyncIterator; _ = os[_0]; if (_) return [1, 0]; _0 = Symbol.iterator; _ = Array.prototype[_0];\r\n a = _; _ = a.call(os); a = _; _ = a.next(); b = _; return [1, 0];\r\n _ = !b.done; if (!_) return [1, 0]; _0 = b.value; o = _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())", "_0 = Symbol.iterator; _ = os[_0]; if (_) return [1, 0]; _0 = Symbol.asyncIterator; _ = os[_0]; if (_) return [1, 0]; _0 = Symbol.iterator; _ = Array.prototype[_0];\r\n a = _; _ = a.call(os); a = _; _ = a.next(); b = _; return [1, 0];\r\n _ = !b.done; if (!_) return [1, 0]; _0 = b.value; o = _0; _ = (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", `a = 0; return [1, 0];\r\n _ = a < 1; if (!_) return [2, 0]; _ = a == 0; if (_) return [1, 0]; return [1, 0];\r\n _ = a++; return [-1, 0]`, true);
|
|
62
62
|
test("for(a=0;a<10;a++) await a", "a = 0; return [1, 0];\r\n _ = a < 10; if (!_) return [2, 0]; _ = a; return [_, 1];\r\n _ = @; _ = a++; return [-1, 0]", true);
|
|
63
63
|
test("for(a=0;a<10;a++) await a, await b", "a = 0; return [1, 0];\r\n _ = a < 10; if (!_) return [3, 0]; _ = a; return [_, 1];\r\n _ = @; _ = b; return [_, 1];\r\n _ = @; _ = a++; return [-2, 0]", true);
|
|
@@ -156,14 +156,14 @@ var formatRows = function (arg, rows, deep, entry, leave) {
|
|
|
156
156
|
if (isArray) {
|
|
157
157
|
for (var cx = 0, dx = rows.length; cx < dx; cx += itemcount) {
|
|
158
158
|
res.push(rows.slice(cx, cx + itemcount).map((r, i) => {
|
|
159
|
-
return Array(maxLength[i] - lens[cx + i]
|
|
159
|
+
return Array(Math.max(maxLength[i] - lens[cx + i], 0)).join(" ") + r;
|
|
160
160
|
}).join(', '));
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
else {
|
|
164
164
|
for (var cx = 0, dx = rows.length; cx < dx; cx += itemcount) {
|
|
165
165
|
res.push([rows[cx], ...rows.slice(cx + 1, cx + itemcount).map((r, i) => {
|
|
166
|
-
return Array(maxLength[i] - lens[cx + i]
|
|
166
|
+
return Array(Math.max(maxLength[i] - lens[cx + i], 0)).join(" ") + r;
|
|
167
167
|
})].join(', '));
|
|
168
168
|
}
|
|
169
169
|
}
|