sval 0.6.0 → 0.6.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/dist/sval.es6.js +314 -281
- package/dist/sval.js +328 -292
- package/dist/sval.min.js +1 -1
- package/package.json +1 -1
package/dist/sval.es6.js
CHANGED
|
@@ -129,6 +129,16 @@
|
|
|
129
129
|
}
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
|
+
function callSuper(target, superClass, args = []) {
|
|
133
|
+
let supportReflect = false;
|
|
134
|
+
try {
|
|
135
|
+
supportReflect = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () { }));
|
|
136
|
+
}
|
|
137
|
+
catch (err) { }
|
|
138
|
+
return supportReflect
|
|
139
|
+
? Reflect.construct(superClass, args, getProto(target).constructor)
|
|
140
|
+
: superClass.apply(target, args);
|
|
141
|
+
}
|
|
132
142
|
function _assign(target) {
|
|
133
143
|
for (let i = 1; i < arguments.length; ++i) {
|
|
134
144
|
const source = arguments[i];
|
|
@@ -143,267 +153,278 @@
|
|
|
143
153
|
const assign = Object.assign || _assign;
|
|
144
154
|
let names = [];
|
|
145
155
|
let globalObj = create(null);
|
|
146
|
-
|
|
147
|
-
if (!
|
|
156
|
+
const setGlobalObj = (g) => {
|
|
157
|
+
if (!g.Object)
|
|
148
158
|
throw 0;
|
|
149
|
-
names = getOwnNames(globalObj =
|
|
159
|
+
names = getOwnNames(globalObj = g).filter(n => ['webkitStorageInfo', 'GLOBAL', 'root'].indexOf(n) === -1);
|
|
160
|
+
};
|
|
161
|
+
try {
|
|
162
|
+
setGlobalObj(window);
|
|
150
163
|
}
|
|
151
164
|
catch (err) {
|
|
152
165
|
try {
|
|
153
|
-
|
|
154
|
-
throw 0;
|
|
155
|
-
names = getOwnNames(globalObj = global).filter(n => n !== 'GLOBAL' && n !== 'root');
|
|
166
|
+
setGlobalObj(self);
|
|
156
167
|
}
|
|
157
168
|
catch (err) {
|
|
158
169
|
try {
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
catch (err) { }
|
|
162
|
-
try {
|
|
163
|
-
globalObj.Function = Function;
|
|
164
|
-
}
|
|
165
|
-
catch (err) { }
|
|
166
|
-
try {
|
|
167
|
-
globalObj.Array = Array;
|
|
168
|
-
}
|
|
169
|
-
catch (err) { }
|
|
170
|
-
try {
|
|
171
|
-
globalObj.Number = Number;
|
|
172
|
-
}
|
|
173
|
-
catch (err) { }
|
|
174
|
-
try {
|
|
175
|
-
globalObj.parseFloat = parseFloat;
|
|
176
|
-
}
|
|
177
|
-
catch (err) { }
|
|
178
|
-
try {
|
|
179
|
-
globalObj.parseInt = parseInt;
|
|
180
|
-
}
|
|
181
|
-
catch (err) { }
|
|
182
|
-
try {
|
|
183
|
-
globalObj.Infinity = Infinity;
|
|
184
|
-
}
|
|
185
|
-
catch (err) { }
|
|
186
|
-
try {
|
|
187
|
-
globalObj.NaN = NaN;
|
|
188
|
-
}
|
|
189
|
-
catch (err) { }
|
|
190
|
-
try {
|
|
191
|
-
globalObj.undefined = undefined;
|
|
192
|
-
}
|
|
193
|
-
catch (err) { }
|
|
194
|
-
try {
|
|
195
|
-
globalObj.Boolean = Boolean;
|
|
196
|
-
}
|
|
197
|
-
catch (err) { }
|
|
198
|
-
try {
|
|
199
|
-
globalObj.String = String;
|
|
200
|
-
}
|
|
201
|
-
catch (err) { }
|
|
202
|
-
try {
|
|
203
|
-
globalObj.Symbol = Symbol;
|
|
204
|
-
}
|
|
205
|
-
catch (err) { }
|
|
206
|
-
try {
|
|
207
|
-
globalObj.Date = Date;
|
|
208
|
-
}
|
|
209
|
-
catch (err) { }
|
|
210
|
-
try {
|
|
211
|
-
globalObj.Promise = Promise;
|
|
212
|
-
}
|
|
213
|
-
catch (err) { }
|
|
214
|
-
try {
|
|
215
|
-
globalObj.RegExp = RegExp;
|
|
216
|
-
}
|
|
217
|
-
catch (err) { }
|
|
218
|
-
try {
|
|
219
|
-
globalObj.Error = Error;
|
|
220
|
-
}
|
|
221
|
-
catch (err) { }
|
|
222
|
-
try {
|
|
223
|
-
globalObj.EvalError = EvalError;
|
|
224
|
-
}
|
|
225
|
-
catch (err) { }
|
|
226
|
-
try {
|
|
227
|
-
globalObj.RangeError = RangeError;
|
|
228
|
-
}
|
|
229
|
-
catch (err) { }
|
|
230
|
-
try {
|
|
231
|
-
globalObj.ReferenceError = ReferenceError;
|
|
232
|
-
}
|
|
233
|
-
catch (err) { }
|
|
234
|
-
try {
|
|
235
|
-
globalObj.SyntaxError = SyntaxError;
|
|
236
|
-
}
|
|
237
|
-
catch (err) { }
|
|
238
|
-
try {
|
|
239
|
-
globalObj.TypeError = TypeError;
|
|
240
|
-
}
|
|
241
|
-
catch (err) { }
|
|
242
|
-
try {
|
|
243
|
-
globalObj.URIError = URIError;
|
|
244
|
-
}
|
|
245
|
-
catch (err) { }
|
|
246
|
-
try {
|
|
247
|
-
globalObj.JSON = JSON;
|
|
248
|
-
}
|
|
249
|
-
catch (err) { }
|
|
250
|
-
try {
|
|
251
|
-
globalObj.Math = Math;
|
|
252
|
-
}
|
|
253
|
-
catch (err) { }
|
|
254
|
-
try {
|
|
255
|
-
globalObj.console = console;
|
|
256
|
-
}
|
|
257
|
-
catch (err) { }
|
|
258
|
-
try {
|
|
259
|
-
globalObj.Intl = Intl;
|
|
260
|
-
}
|
|
261
|
-
catch (err) { }
|
|
262
|
-
try {
|
|
263
|
-
globalObj.ArrayBuffer = ArrayBuffer;
|
|
264
|
-
}
|
|
265
|
-
catch (err) { }
|
|
266
|
-
try {
|
|
267
|
-
globalObj.Uint8Array = Uint8Array;
|
|
268
|
-
}
|
|
269
|
-
catch (err) { }
|
|
270
|
-
try {
|
|
271
|
-
globalObj.Int8Array = Int8Array;
|
|
272
|
-
}
|
|
273
|
-
catch (err) { }
|
|
274
|
-
try {
|
|
275
|
-
globalObj.Uint16Array = Uint16Array;
|
|
276
|
-
}
|
|
277
|
-
catch (err) { }
|
|
278
|
-
try {
|
|
279
|
-
globalObj.Int16Array = Int16Array;
|
|
280
|
-
}
|
|
281
|
-
catch (err) { }
|
|
282
|
-
try {
|
|
283
|
-
globalObj.Uint32Array = Uint32Array;
|
|
170
|
+
setGlobalObj(global);
|
|
284
171
|
}
|
|
285
|
-
catch (err) {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
172
|
+
catch (err) {
|
|
173
|
+
try {
|
|
174
|
+
setGlobalObj(globalThis);
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
try {
|
|
178
|
+
globalObj.Object = Object;
|
|
179
|
+
}
|
|
180
|
+
catch (err) { }
|
|
181
|
+
try {
|
|
182
|
+
globalObj.Function = Function;
|
|
183
|
+
}
|
|
184
|
+
catch (err) { }
|
|
185
|
+
try {
|
|
186
|
+
globalObj.Array = Array;
|
|
187
|
+
}
|
|
188
|
+
catch (err) { }
|
|
189
|
+
try {
|
|
190
|
+
globalObj.Number = Number;
|
|
191
|
+
}
|
|
192
|
+
catch (err) { }
|
|
193
|
+
try {
|
|
194
|
+
globalObj.parseFloat = parseFloat;
|
|
195
|
+
}
|
|
196
|
+
catch (err) { }
|
|
197
|
+
try {
|
|
198
|
+
globalObj.parseInt = parseInt;
|
|
199
|
+
}
|
|
200
|
+
catch (err) { }
|
|
201
|
+
try {
|
|
202
|
+
globalObj.Infinity = Infinity;
|
|
203
|
+
}
|
|
204
|
+
catch (err) { }
|
|
205
|
+
try {
|
|
206
|
+
globalObj.NaN = NaN;
|
|
207
|
+
}
|
|
208
|
+
catch (err) { }
|
|
209
|
+
try {
|
|
210
|
+
globalObj.undefined = undefined;
|
|
211
|
+
}
|
|
212
|
+
catch (err) { }
|
|
213
|
+
try {
|
|
214
|
+
globalObj.Boolean = Boolean;
|
|
215
|
+
}
|
|
216
|
+
catch (err) { }
|
|
217
|
+
try {
|
|
218
|
+
globalObj.String = String;
|
|
219
|
+
}
|
|
220
|
+
catch (err) { }
|
|
221
|
+
try {
|
|
222
|
+
globalObj.Symbol = Symbol;
|
|
223
|
+
}
|
|
224
|
+
catch (err) { }
|
|
225
|
+
try {
|
|
226
|
+
globalObj.Date = Date;
|
|
227
|
+
}
|
|
228
|
+
catch (err) { }
|
|
229
|
+
try {
|
|
230
|
+
globalObj.Promise = Promise;
|
|
231
|
+
}
|
|
232
|
+
catch (err) { }
|
|
233
|
+
try {
|
|
234
|
+
globalObj.RegExp = RegExp;
|
|
235
|
+
}
|
|
236
|
+
catch (err) { }
|
|
237
|
+
try {
|
|
238
|
+
globalObj.Error = Error;
|
|
239
|
+
}
|
|
240
|
+
catch (err) { }
|
|
241
|
+
try {
|
|
242
|
+
globalObj.EvalError = EvalError;
|
|
243
|
+
}
|
|
244
|
+
catch (err) { }
|
|
245
|
+
try {
|
|
246
|
+
globalObj.RangeError = RangeError;
|
|
247
|
+
}
|
|
248
|
+
catch (err) { }
|
|
249
|
+
try {
|
|
250
|
+
globalObj.ReferenceError = ReferenceError;
|
|
251
|
+
}
|
|
252
|
+
catch (err) { }
|
|
253
|
+
try {
|
|
254
|
+
globalObj.SyntaxError = SyntaxError;
|
|
255
|
+
}
|
|
256
|
+
catch (err) { }
|
|
257
|
+
try {
|
|
258
|
+
globalObj.TypeError = TypeError;
|
|
259
|
+
}
|
|
260
|
+
catch (err) { }
|
|
261
|
+
try {
|
|
262
|
+
globalObj.URIError = URIError;
|
|
263
|
+
}
|
|
264
|
+
catch (err) { }
|
|
265
|
+
try {
|
|
266
|
+
globalObj.JSON = JSON;
|
|
267
|
+
}
|
|
268
|
+
catch (err) { }
|
|
269
|
+
try {
|
|
270
|
+
globalObj.Math = Math;
|
|
271
|
+
}
|
|
272
|
+
catch (err) { }
|
|
273
|
+
try {
|
|
274
|
+
globalObj.console = console;
|
|
275
|
+
}
|
|
276
|
+
catch (err) { }
|
|
277
|
+
try {
|
|
278
|
+
globalObj.Intl = Intl;
|
|
279
|
+
}
|
|
280
|
+
catch (err) { }
|
|
281
|
+
try {
|
|
282
|
+
globalObj.ArrayBuffer = ArrayBuffer;
|
|
283
|
+
}
|
|
284
|
+
catch (err) { }
|
|
285
|
+
try {
|
|
286
|
+
globalObj.Uint8Array = Uint8Array;
|
|
287
|
+
}
|
|
288
|
+
catch (err) { }
|
|
289
|
+
try {
|
|
290
|
+
globalObj.Int8Array = Int8Array;
|
|
291
|
+
}
|
|
292
|
+
catch (err) { }
|
|
293
|
+
try {
|
|
294
|
+
globalObj.Uint16Array = Uint16Array;
|
|
295
|
+
}
|
|
296
|
+
catch (err) { }
|
|
297
|
+
try {
|
|
298
|
+
globalObj.Int16Array = Int16Array;
|
|
299
|
+
}
|
|
300
|
+
catch (err) { }
|
|
301
|
+
try {
|
|
302
|
+
globalObj.Uint32Array = Uint32Array;
|
|
303
|
+
}
|
|
304
|
+
catch (err) { }
|
|
305
|
+
try {
|
|
306
|
+
globalObj.Int32Array = Int32Array;
|
|
307
|
+
}
|
|
308
|
+
catch (err) { }
|
|
309
|
+
try {
|
|
310
|
+
globalObj.Float32Array = Float32Array;
|
|
311
|
+
}
|
|
312
|
+
catch (err) { }
|
|
313
|
+
try {
|
|
314
|
+
globalObj.Float64Array = Float64Array;
|
|
315
|
+
}
|
|
316
|
+
catch (err) { }
|
|
317
|
+
try {
|
|
318
|
+
globalObj.Uint8ClampedArray = Uint8ClampedArray;
|
|
319
|
+
}
|
|
320
|
+
catch (err) { }
|
|
321
|
+
try {
|
|
322
|
+
globalObj.DataView = DataView;
|
|
323
|
+
}
|
|
324
|
+
catch (err) { }
|
|
325
|
+
try {
|
|
326
|
+
globalObj.Map = Map;
|
|
327
|
+
}
|
|
328
|
+
catch (err) { }
|
|
329
|
+
try {
|
|
330
|
+
globalObj.Set = Set;
|
|
331
|
+
}
|
|
332
|
+
catch (err) { }
|
|
333
|
+
try {
|
|
334
|
+
globalObj.WeakMap = WeakMap;
|
|
335
|
+
}
|
|
336
|
+
catch (err) { }
|
|
337
|
+
try {
|
|
338
|
+
globalObj.WeakSet = WeakSet;
|
|
339
|
+
}
|
|
340
|
+
catch (err) { }
|
|
341
|
+
try {
|
|
342
|
+
globalObj.Proxy = Proxy;
|
|
343
|
+
}
|
|
344
|
+
catch (err) { }
|
|
345
|
+
try {
|
|
346
|
+
globalObj.Reflect = Reflect;
|
|
347
|
+
}
|
|
348
|
+
catch (err) { }
|
|
349
|
+
try {
|
|
350
|
+
globalObj.BigInt = BigInt;
|
|
351
|
+
}
|
|
352
|
+
catch (err) { }
|
|
353
|
+
try {
|
|
354
|
+
globalObj.decodeURI = decodeURI;
|
|
355
|
+
}
|
|
356
|
+
catch (err) { }
|
|
357
|
+
try {
|
|
358
|
+
globalObj.decodeURIComponent = decodeURIComponent;
|
|
359
|
+
}
|
|
360
|
+
catch (err) { }
|
|
361
|
+
try {
|
|
362
|
+
globalObj.encodeURI = encodeURI;
|
|
363
|
+
}
|
|
364
|
+
catch (err) { }
|
|
365
|
+
try {
|
|
366
|
+
globalObj.encodeURIComponent = encodeURIComponent;
|
|
367
|
+
}
|
|
368
|
+
catch (err) { }
|
|
369
|
+
try {
|
|
370
|
+
globalObj.escape = escape;
|
|
371
|
+
}
|
|
372
|
+
catch (err) { }
|
|
373
|
+
try {
|
|
374
|
+
globalObj.unescape = unescape;
|
|
375
|
+
}
|
|
376
|
+
catch (err) { }
|
|
377
|
+
try {
|
|
378
|
+
globalObj.eval = eval;
|
|
379
|
+
}
|
|
380
|
+
catch (err) { }
|
|
381
|
+
try {
|
|
382
|
+
globalObj.isFinite = isFinite;
|
|
383
|
+
}
|
|
384
|
+
catch (err) { }
|
|
385
|
+
try {
|
|
386
|
+
globalObj.isNaN = isNaN;
|
|
387
|
+
}
|
|
388
|
+
catch (err) { }
|
|
389
|
+
try {
|
|
390
|
+
globalObj.SharedArrayBuffer = SharedArrayBuffer;
|
|
391
|
+
}
|
|
392
|
+
catch (err) { }
|
|
393
|
+
try {
|
|
394
|
+
globalObj.Atomics = Atomics;
|
|
395
|
+
}
|
|
396
|
+
catch (err) { }
|
|
397
|
+
try {
|
|
398
|
+
globalObj.WebAssembly = WebAssembly;
|
|
399
|
+
}
|
|
400
|
+
catch (err) { }
|
|
401
|
+
try {
|
|
402
|
+
globalObj.clearInterval = clearInterval;
|
|
403
|
+
}
|
|
404
|
+
catch (err) { }
|
|
405
|
+
try {
|
|
406
|
+
globalObj.clearTimeout = clearTimeout;
|
|
407
|
+
}
|
|
408
|
+
catch (err) { }
|
|
409
|
+
try {
|
|
410
|
+
globalObj.setInterval = setInterval;
|
|
411
|
+
}
|
|
412
|
+
catch (err) { }
|
|
413
|
+
try {
|
|
414
|
+
globalObj.setTimeout = setTimeout;
|
|
415
|
+
}
|
|
416
|
+
catch (err) { }
|
|
417
|
+
try {
|
|
418
|
+
globalObj.crypto = crypto;
|
|
419
|
+
}
|
|
420
|
+
catch (err) { }
|
|
421
|
+
try {
|
|
422
|
+
globalObj.URL = URL;
|
|
423
|
+
}
|
|
424
|
+
catch (err) { }
|
|
425
|
+
names = getOwnNames(globalObj);
|
|
426
|
+
}
|
|
404
427
|
}
|
|
405
|
-
catch (err) { }
|
|
406
|
-
names = getOwnNames(globalObj);
|
|
407
428
|
}
|
|
408
429
|
}
|
|
409
430
|
if (globalObj.Symbol) {
|
|
@@ -464,7 +485,7 @@
|
|
|
464
485
|
const IMPORT = createSymbol('import');
|
|
465
486
|
const EXPORTS = createSymbol('exports');
|
|
466
487
|
|
|
467
|
-
var version = "0.6.
|
|
488
|
+
var version = "0.6.1";
|
|
468
489
|
|
|
469
490
|
class Var {
|
|
470
491
|
constructor(kind, value) {
|
|
@@ -684,7 +705,7 @@
|
|
|
684
705
|
|
|
685
706
|
function* ThisExpression$1(node, scope) {
|
|
686
707
|
const superCall = scope.find(SUPERCALL);
|
|
687
|
-
if (superCall &&
|
|
708
|
+
if (superCall && superCall.get() !== true) {
|
|
688
709
|
throw new ReferenceError('Must call super constructor in derived class '
|
|
689
710
|
+ 'before accessing \'this\' or returning from derived constructor');
|
|
690
711
|
}
|
|
@@ -1081,12 +1102,15 @@
|
|
|
1081
1102
|
}
|
|
1082
1103
|
if (node.callee.type === 'Super') {
|
|
1083
1104
|
const superCall = scope.find(SUPERCALL);
|
|
1084
|
-
|
|
1105
|
+
const construct = superCall.get();
|
|
1106
|
+
if (construct === true) {
|
|
1085
1107
|
throw new ReferenceError('Super constructor may only be called once');
|
|
1086
1108
|
}
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1109
|
+
const inst = callSuper(object, func, args);
|
|
1110
|
+
yield* construct(inst);
|
|
1111
|
+
scope.find('this').set(inst);
|
|
1112
|
+
scope.find(SUPERCALL).set(true);
|
|
1113
|
+
return inst;
|
|
1090
1114
|
}
|
|
1091
1115
|
try {
|
|
1092
1116
|
return func.apply(object, args);
|
|
@@ -2114,7 +2138,7 @@
|
|
|
2114
2138
|
|
|
2115
2139
|
function ThisExpression(node, scope) {
|
|
2116
2140
|
const superCall = scope.find(SUPERCALL);
|
|
2117
|
-
if (superCall &&
|
|
2141
|
+
if (superCall && superCall.get() !== true) {
|
|
2118
2142
|
throw new ReferenceError('Must call super constructor in derived class '
|
|
2119
2143
|
+ 'before accessing \'this\' or returning from derived constructor');
|
|
2120
2144
|
}
|
|
@@ -2511,12 +2535,15 @@
|
|
|
2511
2535
|
}
|
|
2512
2536
|
if (node.callee.type === 'Super') {
|
|
2513
2537
|
const superCall = scope.find(SUPERCALL);
|
|
2514
|
-
|
|
2538
|
+
const construct = superCall.get();
|
|
2539
|
+
if (construct === true) {
|
|
2515
2540
|
throw new ReferenceError('Super constructor may only be called once');
|
|
2516
2541
|
}
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2542
|
+
const inst = callSuper(object, func, args);
|
|
2543
|
+
construct(inst);
|
|
2544
|
+
scope.find('this').set(inst);
|
|
2545
|
+
scope.find(SUPERCALL).set(true);
|
|
2546
|
+
return inst;
|
|
2520
2547
|
}
|
|
2521
2548
|
try {
|
|
2522
2549
|
return func.apply(object, args);
|
|
@@ -3572,16 +3599,16 @@
|
|
|
3572
3599
|
const tmpFunc = function (...args) {
|
|
3573
3600
|
const subScope = new Scope(scope, true);
|
|
3574
3601
|
if (node.type !== 'ArrowFunctionExpression') {
|
|
3575
|
-
subScope.
|
|
3602
|
+
subScope.let('this', this);
|
|
3576
3603
|
subScope.let('arguments', arguments);
|
|
3577
3604
|
subScope.const(NEWTARGET, new.target);
|
|
3578
|
-
if (construct) {
|
|
3579
|
-
construct(this);
|
|
3580
|
-
}
|
|
3581
3605
|
if (superClass) {
|
|
3582
3606
|
subScope.const(SUPER, superClass);
|
|
3583
3607
|
if (construct)
|
|
3584
|
-
subScope.let(SUPERCALL,
|
|
3608
|
+
subScope.let(SUPERCALL, construct);
|
|
3609
|
+
}
|
|
3610
|
+
else if (construct) {
|
|
3611
|
+
construct(this);
|
|
3585
3612
|
}
|
|
3586
3613
|
}
|
|
3587
3614
|
for (let i = 0; i < params.length; i++) {
|
|
@@ -3614,6 +3641,9 @@
|
|
|
3614
3641
|
if (result === RETURN) {
|
|
3615
3642
|
return result.RES;
|
|
3616
3643
|
}
|
|
3644
|
+
else if (new.target) {
|
|
3645
|
+
return subScope.find('this').get();
|
|
3646
|
+
}
|
|
3617
3647
|
};
|
|
3618
3648
|
let func = tmpFunc;
|
|
3619
3649
|
if (node.type === 'ArrowFunctionExpression') {
|
|
@@ -3650,10 +3680,9 @@
|
|
|
3650
3680
|
}
|
|
3651
3681
|
};
|
|
3652
3682
|
let klass = function () {
|
|
3653
|
-
|
|
3654
|
-
|
|
3655
|
-
|
|
3656
|
-
}
|
|
3683
|
+
const inst = superClass ? callSuper(this, superClass) : this;
|
|
3684
|
+
construct(inst);
|
|
3685
|
+
return inst;
|
|
3657
3686
|
};
|
|
3658
3687
|
for (let i = 0; i < methodBody.length; i++) {
|
|
3659
3688
|
const method = methodBody[i];
|
|
@@ -3803,16 +3832,16 @@
|
|
|
3803
3832
|
const tmpFunc = function* (...args) {
|
|
3804
3833
|
const subScope = new Scope(scope, true);
|
|
3805
3834
|
if (node.type !== 'ArrowFunctionExpression') {
|
|
3806
|
-
subScope.
|
|
3835
|
+
subScope.let('this', this);
|
|
3807
3836
|
subScope.let('arguments', arguments);
|
|
3808
3837
|
subScope.const(NEWTARGET, new.target);
|
|
3809
|
-
if (construct) {
|
|
3810
|
-
yield* construct(this);
|
|
3811
|
-
}
|
|
3812
3838
|
if (superClass) {
|
|
3813
3839
|
subScope.const(SUPER, superClass);
|
|
3814
3840
|
if (construct)
|
|
3815
|
-
subScope.let(SUPERCALL,
|
|
3841
|
+
subScope.let(SUPERCALL, construct);
|
|
3842
|
+
}
|
|
3843
|
+
else if (construct) {
|
|
3844
|
+
yield* construct(this);
|
|
3816
3845
|
}
|
|
3817
3846
|
}
|
|
3818
3847
|
for (let i = 0; i < params.length; i++) {
|
|
@@ -3845,6 +3874,9 @@
|
|
|
3845
3874
|
if (result === RETURN) {
|
|
3846
3875
|
return result.RES;
|
|
3847
3876
|
}
|
|
3877
|
+
else if (new.target) {
|
|
3878
|
+
return subScope.find('this').get();
|
|
3879
|
+
}
|
|
3848
3880
|
};
|
|
3849
3881
|
let func;
|
|
3850
3882
|
if (node.async && node.generator) {
|
|
@@ -3909,10 +3941,9 @@
|
|
|
3909
3941
|
}
|
|
3910
3942
|
};
|
|
3911
3943
|
let klass = function* () {
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
}
|
|
3944
|
+
const inst = superClass ? callSuper(this, superClass) : this;
|
|
3945
|
+
yield* construct(inst);
|
|
3946
|
+
return inst;
|
|
3916
3947
|
};
|
|
3917
3948
|
for (let i = 0; i < methodBody.length; i++) {
|
|
3918
3949
|
const method = methodBody[i];
|
|
@@ -3975,11 +4006,13 @@
|
|
|
3975
4006
|
const win = createSandBox();
|
|
3976
4007
|
this.scope.let('globalThis', win);
|
|
3977
4008
|
this.scope.let('window', win);
|
|
4009
|
+
this.scope.let('self', win);
|
|
3978
4010
|
this.scope.let('this', win);
|
|
3979
4011
|
}
|
|
3980
4012
|
else {
|
|
3981
4013
|
this.scope.let('globalThis', globalObj);
|
|
3982
4014
|
this.scope.let('window', globalObj);
|
|
4015
|
+
this.scope.let('self', globalObj);
|
|
3983
4016
|
this.scope.let('this', globalObj);
|
|
3984
4017
|
}
|
|
3985
4018
|
this.scope.const(sourceType === 'module' ? EXPORTS : 'exports', this.exports = {});
|