efront 3.38.2 → 4.0.2
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/common.js +16 -3
- package/coms/compile/downLevel.js +57 -58
- package/coms/compile/downLevel_test.js +112 -62
- package/coms/compile/unstruct.js +56 -13
- 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
|
@@ -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,
|
|
@@ -118,6 +118,18 @@ assert(downLevel(`()=>({\r\nfileName: entry.fileName,\r\ntextSpan: highlightSpan
|
|
|
118
118
|
fileName: entry.fileName,
|
|
119
119
|
textSpan: highlightSpan.textSpan,
|
|
120
120
|
isWriteAccess: highlightSpan.kind === "writtenReference" /* writtenReference */ }, highlightSpan.isInString && { isInString: true }, highlightSpan.contextSpan && { contextSpan: highlightSpan.contextSpan })) }`);
|
|
121
|
+
assert(downLevel(`async()=>({ [argitem.sort ? argitem.sort : 'date']: "desc" })`), `function () { return async_(
|
|
122
|
+
function () {
|
|
123
|
+
_0 = {}; _ = _0; if (!argitem.sort) return [1, 0]; _1 = argitem.sort; return [2, 0]
|
|
124
|
+
},
|
|
125
|
+
function () {
|
|
126
|
+
_1 = 'date'; return [1, 0]
|
|
127
|
+
},
|
|
128
|
+
function () {
|
|
129
|
+
_[_1] = "desc"; _0 = (_); _0 = (_0); return [_0, 2]
|
|
130
|
+
})
|
|
131
|
+
var _0, _1 }
|
|
132
|
+
var _`);
|
|
121
133
|
assert(downLevel(`={...{a:1}}`), `= extend({}, { a: 1 })`);
|
|
122
134
|
assert(downLevel(`={...a,...c}`), `= extend({}, a, c)`);
|
|
123
135
|
assert(downLevel(`={a:a,...b,c}`), `= (_ = extend({ a: a }, b),\r\n_.c = c, _)\r\nvar _`);
|
|
@@ -132,38 +144,37 @@ assert(downLevel(`={...{},...c,b}`), `= (_ = extend({}, {}, c),
|
|
|
132
144
|
_.b = b, _)\r\nvar _`);
|
|
133
145
|
assert(downLevel(`={a(){},get c(){},b}`), `= (_ = {},
|
|
134
146
|
_.a = function () {},
|
|
135
|
-
Object
|
|
147
|
+
Object["defineProperty"](_, "c", { get: function () {} }),
|
|
136
148
|
_.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));`);
|
|
149
|
+
assert(downLevel(`=[...a]`), `var slice_ = Array["prototype"]["slice"];\r\n= slice_["call"](a)`)
|
|
150
|
+
assert(downLevel(`let a = [...a,...a()];`), `var slice_ = Array["prototype"]["slice"];\r\nvar a = slice_["call"](a)["concat"](slice_["call"](a()));`)
|
|
151
|
+
assert(downLevel(`=[...a,...b]`), `var slice_ = Array["prototype"]["slice"];\r\n= slice_["call"](a)["concat"](slice_["call"](b))`)
|
|
152
|
+
assert(downLevel(`=[a,...b]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a]["concat"](slice_["call"](b))`)
|
|
153
|
+
assert(downLevel(`=[a,...b,...c]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a]["concat"](slice_["call"](b), slice_["call"](c))`)
|
|
154
|
+
assert(downLevel(`=[a,b,...c]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a, b]["concat"](slice_["call"](c))`)
|
|
155
|
+
assert(downLevel(`=[a,b,...c,d]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a, b]["concat"](slice_["call"](c), [d])`)
|
|
156
|
+
assert(downLevel(`=[a,b,...c,d,e,f]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a, b]["concat"](slice_["call"](c), [d, e, f])`)
|
|
157
|
+
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))`)
|
|
158
|
+
assert(downLevel(`=[a,b,...c,d,...e]`), `var slice_ = Array["prototype"]["slice"];\r\n= [a, b]["concat"](slice_["call"](c), [d], slice_["call"](e))`)
|
|
159
|
+
assert(downLevel(`a(...b)`), `a["apply"](null, b)`)
|
|
160
|
+
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))))`)
|
|
161
|
+
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))))`)
|
|
162
|
+
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 _`)
|
|
163
|
+
assert(downLevel(`a(...b,...c)`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, slice_["call"](b)["concat"](slice_["call"](c)))`)
|
|
164
|
+
assert(downLevel(`a(...b,c)`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, slice_["call"](b)["concat"]([c]))`)
|
|
165
|
+
assert(downLevel(`getPendingExpressions()[_push](...flattenCommaList(expr));`), `(_ = getPendingExpressions())[_push]["apply"](_, flattenCommaList(expr));\r\nvar _`)
|
|
166
|
+
assert(downLevel(`a(b,...c)`), `var slice_ = Array["prototype"]["slice"];\r\na["apply"](null, [b]["concat"](slice_["call"](c)))`)
|
|
167
|
+
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)))`)
|
|
168
|
+
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)))`)
|
|
169
|
+
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)))`)
|
|
170
|
+
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 _`)
|
|
171
|
+
assert(downLevel(`a(...b).c(...d)`), `(_ = a["apply"](null, b)).c["apply"](_, d)\r\nvar _`)
|
|
172
|
+
assert(downLevel(`a(...b).c(...d).e(...f)`), `(_ = (_ = a["apply"](null, b)).c["apply"](_, d)).e["apply"](_, f)\r\nvar _`)
|
|
173
|
+
assert(downLevel(`diagnostic.relatedInformation.push(...relatedInformation);`), `(_ = diagnostic.relatedInformation).push["apply"](_, relatedInformation);\r\nvar _`);
|
|
174
|
+
assert(downLevel(`const typeNames = [79 /* Identifier */, ...typeKeywords];`), `var slice_ = Array["prototype"]["slice"];\r\nvar typeNames = [79 /* Identifier */]["concat"](slice_["call"](typeKeywords));`);
|
|
164
175
|
i++// 箭头函数
|
|
165
176
|
assert(downLevel(`a=>k`), "function (a) { return k }")
|
|
166
|
-
assert(downLevel(`function (a,...b,b){}`),
|
|
177
|
+
assert(downLevel(`function (a,...b,b){}`), `function (a, b) { b = arguments["length"] > 1 ? arguments[arguments["length"] - 1] : undefined; }`)
|
|
167
178
|
assert(downLevel(`(a)=>k`), "function (a) { return k }")
|
|
168
179
|
assert(downLevel(`(a=1)=>k`), "function (a) { if (a === undefined) a = 1; return k }")
|
|
169
180
|
assert(downLevel(`([a])=>b`), "function (arg) { var a = arg[0]; return b }")
|
|
@@ -171,31 +182,70 @@ assert(downLevel(`map(([a])=>a)`), "map(function (arg) { var a = arg[0]; return
|
|
|
171
182
|
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
183
|
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
184
|
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
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
185
|
+
assert(downLevel(`function (a,...b){}`), `var slice_ = Array["prototype"]["slice"];\r\nfunction (a) { var b = slice_["call"](arguments, 1); }`)
|
|
186
|
+
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; }`)
|
|
187
|
+
assert(downLevel(`function (a,...,c){}`), `function (a, c) { c = arguments["length"] > 1 ? arguments[arguments["length"] - 1] : undefined; }`)
|
|
188
|
+
assert(downLevel(`(...a) => k`), `var slice_ = Array["prototype"]["slice"];\r\nfunction () { var a = slice_["call"](arguments, 0); return k }`)
|
|
189
|
+
assert(downLevel(`for await(o of os) noSymbol`), `return async_(
|
|
190
|
+
function () {
|
|
191
|
+
_3 = Symbol["asyncIterator"]; _2 = os[_3]; if (_2) return [1, 0]; _3 = Symbol["iterator"]; _2 = os[_3]; if (_2) return [1, 0]; _3 = Symbol["iterator"]; _2 = Array["prototype"][_3]
|
|
192
|
+
},
|
|
193
|
+
function () {
|
|
194
|
+
_0 = _2; _2 = _0["call"](os); _0 = _2; _2 = _0["next"](); return [_2, 1]
|
|
195
|
+
},
|
|
196
|
+
function (_1) {
|
|
197
|
+
_2 = _1; _ = _2; return [1, 0]
|
|
198
|
+
},
|
|
199
|
+
function () {
|
|
200
|
+
_2 = !_["done"]; if (!_2) return [1, 0]; _3 = _["value"]; o = _3; _2 = (true)
|
|
201
|
+
},
|
|
202
|
+
function () {
|
|
203
|
+
if (!_2) return [1, 0]; noSymbol; _2 = _0["next"](); _ = _2; return [-1, 0]
|
|
204
|
+
})
|
|
205
|
+
var _, _0, _2, _3`)
|
|
206
|
+
assert(downLevel(`for await(var [o,s] of os) noSymbol`), `return async_(
|
|
207
|
+
function () {
|
|
208
|
+
o; s; _4 = Symbol["asyncIterator"]; _3 = os[_4]; if (_3) return [1, 0]; _4 = Symbol["iterator"]; _3 = os[_4]; if (_3) return [1, 0]; _4 = Symbol["iterator"]; _3 = Array["prototype"][_4]
|
|
209
|
+
},
|
|
210
|
+
function () {
|
|
211
|
+
_0 = _3; _3 = _0["call"](os); _0 = _3; _3 = _0["next"](); return [_3, 1]
|
|
212
|
+
},
|
|
213
|
+
function (_2) {
|
|
214
|
+
_3 = _2; _ = _3; return [1, 0]
|
|
215
|
+
},
|
|
216
|
+
function () {
|
|
217
|
+
_3 = !_["done"]; if (!_3) return [1, 0]; _4 = _["value"]; _1 = _4; _5 = _1[0]; o = _5; _6 = _1[1]; s = _6; _3 = (true)
|
|
218
|
+
},
|
|
219
|
+
function () {
|
|
220
|
+
if (!_3) return [1, 0]; noSymbol; _3 = _0["next"](); _ = _3; return [-1, 0]
|
|
221
|
+
})
|
|
222
|
+
var o, s, _, _0, _1, _3, _4, _5, _6`)
|
|
223
|
+
assert(downLevel(`for(o of os) noSymbol`), `for (_ = 0, _0 = os["length"]; _ < _0 && (o = os[_], true); _++) noSymbol\r\nvar _, _0`)
|
|
224
|
+
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
|
+
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`)
|
|
226
|
+
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`)
|
|
227
|
+
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`)
|
|
228
|
+
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`)
|
|
229
|
+
assert(downLevel(`[...a]=a`), `var slice_ = Array["prototype"]["slice"];\r\na = slice_["call"](a, 0)`)
|
|
230
|
+
assert(downLevel(`[c,...a]=a`), `var slice_ = Array["prototype"]["slice"];\r\nc = a[0], a = slice_["call"](a, 1)`)
|
|
231
|
+
assert(downLevel(`[...a]=a`), `var slice_ = Array["prototype"]["slice"];\r\na = slice_["call"](a, 0)`)
|
|
232
|
+
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
233
|
assert(downLevel(`{...a,c}=a`), `c = a.c, a = rest_(a, ["c"])`)
|
|
189
234
|
assert(downLevel(`{c,...a}=a`), `c = a.c, a = rest_(a, ["c"])`)
|
|
190
235
|
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
236
|
assert(downLevel(`{c,[c]:b,...a}=a`), `c = a.c, b = a[c], a = rest_(a, ["c", c])`)
|
|
237
|
+
assert(downLevel(`async()=>name = require("./$split")(name)["join"]("/");`), `function () { return async_(
|
|
238
|
+
function () {
|
|
239
|
+
_0 = require("./$split")(name)["join"]("/"); name = _0; return [_0, 2]
|
|
240
|
+
})
|
|
241
|
+
var _0 };`);
|
|
192
242
|
i++//异步或步进函数
|
|
193
243
|
assert(downLevel(`function *(){yield *a}`), `function () { return aster_(
|
|
194
244
|
function () {
|
|
195
|
-
_; _0 = 0; _3 = a
|
|
245
|
+
_; _0 = 0; _3 = a["length"]; _1 = _3; return [1, 0]
|
|
196
246
|
},
|
|
197
247
|
function () {
|
|
198
|
-
_3 = _0 < _1; if (!_3) return [1, 0]; _4 = a[_0]; _ = _4; _3 = (
|
|
248
|
+
_3 = _0 < _1; if (!_3) return [1, 0]; _4 = a[_0]; _ = _4; _3 = (true)
|
|
199
249
|
},
|
|
200
250
|
function () {
|
|
201
251
|
if (!_3) return [2, 0]; return [_, 3]
|
|
@@ -207,16 +257,16 @@ var _, _0, _1, _3, _4 }`)
|
|
|
207
257
|
assert(downLevel(`async function(){}`), `function () { return async_() }`)
|
|
208
258
|
assert(downLevel(`async function(){for(var a of b){Symbol}}`), `function () { return async_(
|
|
209
259
|
function () {
|
|
210
|
-
a; _3 = Symbol
|
|
260
|
+
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
261
|
},
|
|
212
262
|
function () {
|
|
213
|
-
_0 = _2; _2 = _0
|
|
263
|
+
_0 = _2; _2 = _0["call"](b); _0 = _2; _2 = _0["next"](); _ = _2; return [1, 0]
|
|
214
264
|
},
|
|
215
265
|
function () {
|
|
216
|
-
_2 = !_
|
|
266
|
+
_2 = !_["done"]; if (!_2) return [1, 0]; _3 = _["value"]; a = _3; _2 = (true)
|
|
217
267
|
},
|
|
218
268
|
function () {
|
|
219
|
-
if (!_2) return [1, 0]; Symbol; _2 = _0
|
|
269
|
+
if (!_2) return [1, 0]; Symbol; _2 = _0["next"](); _ = _2; return [-1, 0]
|
|
220
270
|
})
|
|
221
271
|
var a, _, _0, _2, _3 }`)
|
|
222
272
|
assert(downLevel(`a={async a(){var b =c;return 1}}`), `a = (_ = {},
|
package/coms/compile/unstruct.js
CHANGED
|
@@ -123,7 +123,7 @@ var _switch = function (body, cx, unblock, result, getname) {
|
|
|
123
123
|
var o = body[cx];
|
|
124
124
|
o = o.next;
|
|
125
125
|
if (!o) return;
|
|
126
|
-
var qt =
|
|
126
|
+
var qt = ternary(o, getname, true);
|
|
127
127
|
for (var q of qt) if (q.length) pushstep(result, q);
|
|
128
128
|
var q = qt[qt.length - 1];
|
|
129
129
|
var qn = q.name;
|
|
@@ -142,7 +142,7 @@ var _switch = function (body, cx, unblock, result, getname) {
|
|
|
142
142
|
var getnextname = function (deep) {
|
|
143
143
|
return getname(deep + 1);
|
|
144
144
|
};
|
|
145
|
-
var q =
|
|
145
|
+
var q = ternary(block, getnextname, true);
|
|
146
146
|
for (var q of q) if (q.length) pushstep(result, q);
|
|
147
147
|
var qe = q;
|
|
148
148
|
if (qe.name) var case_ = scanner2(`if(${qn}===${qe.name})return[]`);
|
|
@@ -435,9 +435,20 @@ var remove_end_comma = function (o) {
|
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
437
|
if (m && m.type === STAMP && m.text === ',') {
|
|
438
|
-
|
|
438
|
+
splice(o, cx, o.length - cx);
|
|
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,23 +475,33 @@ 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
|
-
if (o[cy].type & (SPACE | COMMENT)) continue;
|
|
469
480
|
var by = cy;
|
|
470
|
-
|
|
471
|
-
|
|
481
|
+
while (cy < o.length && o[cy].type & (SPACE | COMMENT)) cy++;
|
|
482
|
+
var ay = cy;
|
|
472
483
|
cy = skipAssignment(o, cy);
|
|
473
|
-
|
|
474
|
-
|
|
484
|
+
var ey = cy;
|
|
485
|
+
if (ay === ey || ay >= o.length) continue;
|
|
486
|
+
var m = o.slice(ay, ey);
|
|
475
487
|
if (m.length === 1 && (m[0].type === EXPRESS && !/\./.test(m[0].text) || m[0].type === VALUE || m[0].type === QUOTED && !m[0].length)) {
|
|
476
488
|
continue;
|
|
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, ey - by, { text: qe.name, type: EXPRESS });
|
|
494
|
+
cy = by + 1;
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
while (cy < o.length && o[cy].type & (SPACE | COMMENT)) cy++;
|
|
498
|
+
var c = o[cy];
|
|
499
|
+
if (c && c.type & STAMP && /^[,;]$/.test(c.text)) cy++;
|
|
500
|
+
splice(o, 0, cy);
|
|
501
|
+
cy = -1;
|
|
502
|
+
}
|
|
483
503
|
cache.push(...q);
|
|
504
|
+
nameindex++;
|
|
484
505
|
}
|
|
485
506
|
nameindex = _nameindex;
|
|
486
507
|
if (!cache.length) continue;
|
|
@@ -631,7 +652,7 @@ var ternary = function (body, getname, ret) {
|
|
|
631
652
|
for (var a of ass) {
|
|
632
653
|
if (a.type === SCOPED) {
|
|
633
654
|
if (a.entry === '[') {
|
|
634
|
-
var q =
|
|
655
|
+
var q = ternary(a, getnextname, true);
|
|
635
656
|
for (var q of q) {
|
|
636
657
|
if (q.length) pushstep(explist, q);
|
|
637
658
|
}
|
|
@@ -665,6 +686,23 @@ var ternary = function (body, getname, ret) {
|
|
|
665
686
|
}
|
|
666
687
|
return explist;
|
|
667
688
|
};
|
|
689
|
+
var isFunctionOnly = function (body) {
|
|
690
|
+
for (var cx = 2, dx = body.length; cx < dx; cx++) {
|
|
691
|
+
if (body[cx].type & (SPACE | COMMENT)) continue;
|
|
692
|
+
break;
|
|
693
|
+
}
|
|
694
|
+
var o = body[cx];
|
|
695
|
+
if (!o) return false;
|
|
696
|
+
if (o.type === STRAP && o.text === 'function') {
|
|
697
|
+
while (o && o.entry !== "{") o = body[cx++];
|
|
698
|
+
if (!o) return false;
|
|
699
|
+
}
|
|
700
|
+
else return false;
|
|
701
|
+
for (; cx < dx; cx++) {
|
|
702
|
+
if (!(body[cx].type & (SPACE | COMMENT))) return false;
|
|
703
|
+
}
|
|
704
|
+
return true;
|
|
705
|
+
};
|
|
668
706
|
var canbeOnce = function (body) {
|
|
669
707
|
for (var cx = 0, dx = body.length; cx < dx; cx++) {
|
|
670
708
|
if (body[cx].type & (SPACE | COMMENT)) continue;
|
|
@@ -825,7 +863,12 @@ var _express = function (body, getname, ret) {
|
|
|
825
863
|
}
|
|
826
864
|
if (needname) q.name = getname(nameindex);
|
|
827
865
|
relink(q);
|
|
828
|
-
|
|
866
|
+
if (isFunctionOnly(q)) {
|
|
867
|
+
result = [q];
|
|
868
|
+
}
|
|
869
|
+
else {
|
|
870
|
+
result = _invoke(q, getdeepname);
|
|
871
|
+
}
|
|
829
872
|
if (hasor) result[result.length - 1].ret_ = true;
|
|
830
873
|
return result;
|
|
831
874
|
};
|
|
@@ -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
|
}
|