Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu.../js/codemirr...
File: esprima.js
this.tolerateError(messages_1.Messages.StrictLHSPostfix);
[3000] Fix | Delete
}
[3001] Fix | Delete
if (!this.context.isAssignmentTarget) {
[3002] Fix | Delete
this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);
[3003] Fix | Delete
}
[3004] Fix | Delete
this.context.isAssignmentTarget = false;
[3005] Fix | Delete
this.context.isBindingElement = false;
[3006] Fix | Delete
var operator = this.nextToken().value;
[3007] Fix | Delete
var prefix = false;
[3008] Fix | Delete
expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));
[3009] Fix | Delete
}
[3010] Fix | Delete
}
[3011] Fix | Delete
}
[3012] Fix | Delete
return expr;
[3013] Fix | Delete
};
[3014] Fix | Delete
// https://tc39.github.io/ecma262/#sec-unary-operators
[3015] Fix | Delete
Parser.prototype.parseAwaitExpression = function () {
[3016] Fix | Delete
var node = this.createNode();
[3017] Fix | Delete
this.nextToken();
[3018] Fix | Delete
var argument = this.parseUnaryExpression();
[3019] Fix | Delete
return this.finalize(node, new Node.AwaitExpression(argument));
[3020] Fix | Delete
};
[3021] Fix | Delete
Parser.prototype.parseUnaryExpression = function () {
[3022] Fix | Delete
var expr;
[3023] Fix | Delete
if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||
[3024] Fix | Delete
this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {
[3025] Fix | Delete
var node = this.startNode(this.lookahead);
[3026] Fix | Delete
var token = this.nextToken();
[3027] Fix | Delete
expr = this.inheritCoverGrammar(this.parseUnaryExpression);
[3028] Fix | Delete
expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));
[3029] Fix | Delete
if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {
[3030] Fix | Delete
this.tolerateError(messages_1.Messages.StrictDelete);
[3031] Fix | Delete
}
[3032] Fix | Delete
this.context.isAssignmentTarget = false;
[3033] Fix | Delete
this.context.isBindingElement = false;
[3034] Fix | Delete
}
[3035] Fix | Delete
else if (this.context.await && this.matchContextualKeyword('await')) {
[3036] Fix | Delete
expr = this.parseAwaitExpression();
[3037] Fix | Delete
}
[3038] Fix | Delete
else {
[3039] Fix | Delete
expr = this.parseUpdateExpression();
[3040] Fix | Delete
}
[3041] Fix | Delete
return expr;
[3042] Fix | Delete
};
[3043] Fix | Delete
Parser.prototype.parseExponentiationExpression = function () {
[3044] Fix | Delete
var startToken = this.lookahead;
[3045] Fix | Delete
var expr = this.inheritCoverGrammar(this.parseUnaryExpression);
[3046] Fix | Delete
if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {
[3047] Fix | Delete
this.nextToken();
[3048] Fix | Delete
this.context.isAssignmentTarget = false;
[3049] Fix | Delete
this.context.isBindingElement = false;
[3050] Fix | Delete
var left = expr;
[3051] Fix | Delete
var right = this.isolateCoverGrammar(this.parseExponentiationExpression);
[3052] Fix | Delete
expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));
[3053] Fix | Delete
}
[3054] Fix | Delete
return expr;
[3055] Fix | Delete
};
[3056] Fix | Delete
// https://tc39.github.io/ecma262/#sec-exp-operator
[3057] Fix | Delete
// https://tc39.github.io/ecma262/#sec-multiplicative-operators
[3058] Fix | Delete
// https://tc39.github.io/ecma262/#sec-additive-operators
[3059] Fix | Delete
// https://tc39.github.io/ecma262/#sec-bitwise-shift-operators
[3060] Fix | Delete
// https://tc39.github.io/ecma262/#sec-relational-operators
[3061] Fix | Delete
// https://tc39.github.io/ecma262/#sec-equality-operators
[3062] Fix | Delete
// https://tc39.github.io/ecma262/#sec-binary-bitwise-operators
[3063] Fix | Delete
// https://tc39.github.io/ecma262/#sec-binary-logical-operators
[3064] Fix | Delete
Parser.prototype.binaryPrecedence = function (token) {
[3065] Fix | Delete
var op = token.value;
[3066] Fix | Delete
var precedence;
[3067] Fix | Delete
if (token.type === 7 /* Punctuator */) {
[3068] Fix | Delete
precedence = this.operatorPrecedence[op] || 0;
[3069] Fix | Delete
}
[3070] Fix | Delete
else if (token.type === 4 /* Keyword */) {
[3071] Fix | Delete
precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;
[3072] Fix | Delete
}
[3073] Fix | Delete
else {
[3074] Fix | Delete
precedence = 0;
[3075] Fix | Delete
}
[3076] Fix | Delete
return precedence;
[3077] Fix | Delete
};
[3078] Fix | Delete
Parser.prototype.parseBinaryExpression = function () {
[3079] Fix | Delete
var startToken = this.lookahead;
[3080] Fix | Delete
var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);
[3081] Fix | Delete
var token = this.lookahead;
[3082] Fix | Delete
var prec = this.binaryPrecedence(token);
[3083] Fix | Delete
if (prec > 0) {
[3084] Fix | Delete
this.nextToken();
[3085] Fix | Delete
this.context.isAssignmentTarget = false;
[3086] Fix | Delete
this.context.isBindingElement = false;
[3087] Fix | Delete
var markers = [startToken, this.lookahead];
[3088] Fix | Delete
var left = expr;
[3089] Fix | Delete
var right = this.isolateCoverGrammar(this.parseExponentiationExpression);
[3090] Fix | Delete
var stack = [left, token.value, right];
[3091] Fix | Delete
var precedences = [prec];
[3092] Fix | Delete
while (true) {
[3093] Fix | Delete
prec = this.binaryPrecedence(this.lookahead);
[3094] Fix | Delete
if (prec <= 0) {
[3095] Fix | Delete
break;
[3096] Fix | Delete
}
[3097] Fix | Delete
// Reduce: make a binary expression from the three topmost entries.
[3098] Fix | Delete
while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {
[3099] Fix | Delete
right = stack.pop();
[3100] Fix | Delete
var operator = stack.pop();
[3101] Fix | Delete
precedences.pop();
[3102] Fix | Delete
left = stack.pop();
[3103] Fix | Delete
markers.pop();
[3104] Fix | Delete
var node = this.startNode(markers[markers.length - 1]);
[3105] Fix | Delete
stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));
[3106] Fix | Delete
}
[3107] Fix | Delete
// Shift.
[3108] Fix | Delete
stack.push(this.nextToken().value);
[3109] Fix | Delete
precedences.push(prec);
[3110] Fix | Delete
markers.push(this.lookahead);
[3111] Fix | Delete
stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));
[3112] Fix | Delete
}
[3113] Fix | Delete
// Final reduce to clean-up the stack.
[3114] Fix | Delete
var i = stack.length - 1;
[3115] Fix | Delete
expr = stack[i];
[3116] Fix | Delete
markers.pop();
[3117] Fix | Delete
while (i > 1) {
[3118] Fix | Delete
var node = this.startNode(markers.pop());
[3119] Fix | Delete
var operator = stack[i - 1];
[3120] Fix | Delete
expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));
[3121] Fix | Delete
i -= 2;
[3122] Fix | Delete
}
[3123] Fix | Delete
}
[3124] Fix | Delete
return expr;
[3125] Fix | Delete
};
[3126] Fix | Delete
// https://tc39.github.io/ecma262/#sec-conditional-operator
[3127] Fix | Delete
Parser.prototype.parseConditionalExpression = function () {
[3128] Fix | Delete
var startToken = this.lookahead;
[3129] Fix | Delete
var expr = this.inheritCoverGrammar(this.parseBinaryExpression);
[3130] Fix | Delete
if (this.match('?')) {
[3131] Fix | Delete
this.nextToken();
[3132] Fix | Delete
var previousAllowIn = this.context.allowIn;
[3133] Fix | Delete
this.context.allowIn = true;
[3134] Fix | Delete
var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);
[3135] Fix | Delete
this.context.allowIn = previousAllowIn;
[3136] Fix | Delete
this.expect(':');
[3137] Fix | Delete
var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);
[3138] Fix | Delete
expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));
[3139] Fix | Delete
this.context.isAssignmentTarget = false;
[3140] Fix | Delete
this.context.isBindingElement = false;
[3141] Fix | Delete
}
[3142] Fix | Delete
return expr;
[3143] Fix | Delete
};
[3144] Fix | Delete
// https://tc39.github.io/ecma262/#sec-assignment-operators
[3145] Fix | Delete
Parser.prototype.checkPatternParam = function (options, param) {
[3146] Fix | Delete
switch (param.type) {
[3147] Fix | Delete
case syntax_1.Syntax.Identifier:
[3148] Fix | Delete
this.validateParam(options, param, param.name);
[3149] Fix | Delete
break;
[3150] Fix | Delete
case syntax_1.Syntax.RestElement:
[3151] Fix | Delete
this.checkPatternParam(options, param.argument);
[3152] Fix | Delete
break;
[3153] Fix | Delete
case syntax_1.Syntax.AssignmentPattern:
[3154] Fix | Delete
this.checkPatternParam(options, param.left);
[3155] Fix | Delete
break;
[3156] Fix | Delete
case syntax_1.Syntax.ArrayPattern:
[3157] Fix | Delete
for (var i = 0; i < param.elements.length; i++) {
[3158] Fix | Delete
if (param.elements[i] !== null) {
[3159] Fix | Delete
this.checkPatternParam(options, param.elements[i]);
[3160] Fix | Delete
}
[3161] Fix | Delete
}
[3162] Fix | Delete
break;
[3163] Fix | Delete
case syntax_1.Syntax.ObjectPattern:
[3164] Fix | Delete
for (var i = 0; i < param.properties.length; i++) {
[3165] Fix | Delete
this.checkPatternParam(options, param.properties[i].value);
[3166] Fix | Delete
}
[3167] Fix | Delete
break;
[3168] Fix | Delete
default:
[3169] Fix | Delete
break;
[3170] Fix | Delete
}
[3171] Fix | Delete
options.simple = options.simple && (param instanceof Node.Identifier);
[3172] Fix | Delete
};
[3173] Fix | Delete
Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {
[3174] Fix | Delete
var params = [expr];
[3175] Fix | Delete
var options;
[3176] Fix | Delete
var asyncArrow = false;
[3177] Fix | Delete
switch (expr.type) {
[3178] Fix | Delete
case syntax_1.Syntax.Identifier:
[3179] Fix | Delete
break;
[3180] Fix | Delete
case ArrowParameterPlaceHolder:
[3181] Fix | Delete
params = expr.params;
[3182] Fix | Delete
asyncArrow = expr.async;
[3183] Fix | Delete
break;
[3184] Fix | Delete
default:
[3185] Fix | Delete
return null;
[3186] Fix | Delete
}
[3187] Fix | Delete
options = {
[3188] Fix | Delete
simple: true,
[3189] Fix | Delete
paramSet: {}
[3190] Fix | Delete
};
[3191] Fix | Delete
for (var i = 0; i < params.length; ++i) {
[3192] Fix | Delete
var param = params[i];
[3193] Fix | Delete
if (param.type === syntax_1.Syntax.AssignmentPattern) {
[3194] Fix | Delete
if (param.right.type === syntax_1.Syntax.YieldExpression) {
[3195] Fix | Delete
if (param.right.argument) {
[3196] Fix | Delete
this.throwUnexpectedToken(this.lookahead);
[3197] Fix | Delete
}
[3198] Fix | Delete
param.right.type = syntax_1.Syntax.Identifier;
[3199] Fix | Delete
param.right.name = 'yield';
[3200] Fix | Delete
delete param.right.argument;
[3201] Fix | Delete
delete param.right.delegate;
[3202] Fix | Delete
}
[3203] Fix | Delete
}
[3204] Fix | Delete
else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {
[3205] Fix | Delete
this.throwUnexpectedToken(this.lookahead);
[3206] Fix | Delete
}
[3207] Fix | Delete
this.checkPatternParam(options, param);
[3208] Fix | Delete
params[i] = param;
[3209] Fix | Delete
}
[3210] Fix | Delete
if (this.context.strict || !this.context.allowYield) {
[3211] Fix | Delete
for (var i = 0; i < params.length; ++i) {
[3212] Fix | Delete
var param = params[i];
[3213] Fix | Delete
if (param.type === syntax_1.Syntax.YieldExpression) {
[3214] Fix | Delete
this.throwUnexpectedToken(this.lookahead);
[3215] Fix | Delete
}
[3216] Fix | Delete
}
[3217] Fix | Delete
}
[3218] Fix | Delete
if (options.message === messages_1.Messages.StrictParamDupe) {
[3219] Fix | Delete
var token = this.context.strict ? options.stricted : options.firstRestricted;
[3220] Fix | Delete
this.throwUnexpectedToken(token, options.message);
[3221] Fix | Delete
}
[3222] Fix | Delete
return {
[3223] Fix | Delete
simple: options.simple,
[3224] Fix | Delete
params: params,
[3225] Fix | Delete
stricted: options.stricted,
[3226] Fix | Delete
firstRestricted: options.firstRestricted,
[3227] Fix | Delete
message: options.message
[3228] Fix | Delete
};
[3229] Fix | Delete
};
[3230] Fix | Delete
Parser.prototype.parseAssignmentExpression = function () {
[3231] Fix | Delete
var expr;
[3232] Fix | Delete
if (!this.context.allowYield && this.matchKeyword('yield')) {
[3233] Fix | Delete
expr = this.parseYieldExpression();
[3234] Fix | Delete
}
[3235] Fix | Delete
else {
[3236] Fix | Delete
var startToken = this.lookahead;
[3237] Fix | Delete
var token = startToken;
[3238] Fix | Delete
expr = this.parseConditionalExpression();
[3239] Fix | Delete
if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {
[3240] Fix | Delete
if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {
[3241] Fix | Delete
var arg = this.parsePrimaryExpression();
[3242] Fix | Delete
this.reinterpretExpressionAsPattern(arg);
[3243] Fix | Delete
expr = {
[3244] Fix | Delete
type: ArrowParameterPlaceHolder,
[3245] Fix | Delete
params: [arg],
[3246] Fix | Delete
async: true
[3247] Fix | Delete
};
[3248] Fix | Delete
}
[3249] Fix | Delete
}
[3250] Fix | Delete
if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {
[3251] Fix | Delete
// https://tc39.github.io/ecma262/#sec-arrow-function-definitions
[3252] Fix | Delete
this.context.isAssignmentTarget = false;
[3253] Fix | Delete
this.context.isBindingElement = false;
[3254] Fix | Delete
var isAsync = expr.async;
[3255] Fix | Delete
var list = this.reinterpretAsCoverFormalsList(expr);
[3256] Fix | Delete
if (list) {
[3257] Fix | Delete
if (this.hasLineTerminator) {
[3258] Fix | Delete
this.tolerateUnexpectedToken(this.lookahead);
[3259] Fix | Delete
}
[3260] Fix | Delete
this.context.firstCoverInitializedNameError = null;
[3261] Fix | Delete
var previousStrict = this.context.strict;
[3262] Fix | Delete
var previousAllowStrictDirective = this.context.allowStrictDirective;
[3263] Fix | Delete
this.context.allowStrictDirective = list.simple;
[3264] Fix | Delete
var previousAllowYield = this.context.allowYield;
[3265] Fix | Delete
var previousAwait = this.context.await;
[3266] Fix | Delete
this.context.allowYield = true;
[3267] Fix | Delete
this.context.await = isAsync;
[3268] Fix | Delete
var node = this.startNode(startToken);
[3269] Fix | Delete
this.expect('=>');
[3270] Fix | Delete
var body = void 0;
[3271] Fix | Delete
if (this.match('{')) {
[3272] Fix | Delete
var previousAllowIn = this.context.allowIn;
[3273] Fix | Delete
this.context.allowIn = true;
[3274] Fix | Delete
body = this.parseFunctionSourceElements();
[3275] Fix | Delete
this.context.allowIn = previousAllowIn;
[3276] Fix | Delete
}
[3277] Fix | Delete
else {
[3278] Fix | Delete
body = this.isolateCoverGrammar(this.parseAssignmentExpression);
[3279] Fix | Delete
}
[3280] Fix | Delete
var expression = body.type !== syntax_1.Syntax.BlockStatement;
[3281] Fix | Delete
if (this.context.strict && list.firstRestricted) {
[3282] Fix | Delete
this.throwUnexpectedToken(list.firstRestricted, list.message);
[3283] Fix | Delete
}
[3284] Fix | Delete
if (this.context.strict && list.stricted) {
[3285] Fix | Delete
this.tolerateUnexpectedToken(list.stricted, list.message);
[3286] Fix | Delete
}
[3287] Fix | Delete
expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :
[3288] Fix | Delete
this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));
[3289] Fix | Delete
this.context.strict = previousStrict;
[3290] Fix | Delete
this.context.allowStrictDirective = previousAllowStrictDirective;
[3291] Fix | Delete
this.context.allowYield = previousAllowYield;
[3292] Fix | Delete
this.context.await = previousAwait;
[3293] Fix | Delete
}
[3294] Fix | Delete
}
[3295] Fix | Delete
else {
[3296] Fix | Delete
if (this.matchAssign()) {
[3297] Fix | Delete
if (!this.context.isAssignmentTarget) {
[3298] Fix | Delete
this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);
[3299] Fix | Delete
}
[3300] Fix | Delete
if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {
[3301] Fix | Delete
var id = expr;
[3302] Fix | Delete
if (this.scanner.isRestrictedWord(id.name)) {
[3303] Fix | Delete
this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);
[3304] Fix | Delete
}
[3305] Fix | Delete
if (this.scanner.isStrictModeReservedWord(id.name)) {
[3306] Fix | Delete
this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);
[3307] Fix | Delete
}
[3308] Fix | Delete
}
[3309] Fix | Delete
if (!this.match('=')) {
[3310] Fix | Delete
this.context.isAssignmentTarget = false;
[3311] Fix | Delete
this.context.isBindingElement = false;
[3312] Fix | Delete
}
[3313] Fix | Delete
else {
[3314] Fix | Delete
this.reinterpretExpressionAsPattern(expr);
[3315] Fix | Delete
}
[3316] Fix | Delete
token = this.nextToken();
[3317] Fix | Delete
var operator = token.value;
[3318] Fix | Delete
var right = this.isolateCoverGrammar(this.parseAssignmentExpression);
[3319] Fix | Delete
expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));
[3320] Fix | Delete
this.context.firstCoverInitializedNameError = null;
[3321] Fix | Delete
}
[3322] Fix | Delete
}
[3323] Fix | Delete
}
[3324] Fix | Delete
return expr;
[3325] Fix | Delete
};
[3326] Fix | Delete
// https://tc39.github.io/ecma262/#sec-comma-operator
[3327] Fix | Delete
Parser.prototype.parseExpression = function () {
[3328] Fix | Delete
var startToken = this.lookahead;
[3329] Fix | Delete
var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);
[3330] Fix | Delete
if (this.match(',')) {
[3331] Fix | Delete
var expressions = [];
[3332] Fix | Delete
expressions.push(expr);
[3333] Fix | Delete
while (this.lookahead.type !== 2 /* EOF */) {
[3334] Fix | Delete
if (!this.match(',')) {
[3335] Fix | Delete
break;
[3336] Fix | Delete
}
[3337] Fix | Delete
this.nextToken();
[3338] Fix | Delete
expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));
[3339] Fix | Delete
}
[3340] Fix | Delete
expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));
[3341] Fix | Delete
}
[3342] Fix | Delete
return expr;
[3343] Fix | Delete
};
[3344] Fix | Delete
// https://tc39.github.io/ecma262/#sec-block
[3345] Fix | Delete
Parser.prototype.parseStatementListItem = function () {
[3346] Fix | Delete
var statement;
[3347] Fix | Delete
this.context.isAssignmentTarget = true;
[3348] Fix | Delete
this.context.isBindingElement = true;
[3349] Fix | Delete
if (this.lookahead.type === 4 /* Keyword */) {
[3350] Fix | Delete
switch (this.lookahead.value) {
[3351] Fix | Delete
case 'export':
[3352] Fix | Delete
if (!this.context.isModule) {
[3353] Fix | Delete
this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);
[3354] Fix | Delete
}
[3355] Fix | Delete
statement = this.parseExportDeclaration();
[3356] Fix | Delete
break;
[3357] Fix | Delete
case 'import':
[3358] Fix | Delete
if (!this.context.isModule) {
[3359] Fix | Delete
this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);
[3360] Fix | Delete
}
[3361] Fix | Delete
statement = this.parseImportDeclaration();
[3362] Fix | Delete
break;
[3363] Fix | Delete
case 'const':
[3364] Fix | Delete
statement = this.parseLexicalDeclaration({ inFor: false });
[3365] Fix | Delete
break;
[3366] Fix | Delete
case 'function':
[3367] Fix | Delete
statement = this.parseFunctionDeclaration();
[3368] Fix | Delete
break;
[3369] Fix | Delete
case 'class':
[3370] Fix | Delete
statement = this.parseClassDeclaration();
[3371] Fix | Delete
break;
[3372] Fix | Delete
case 'let':
[3373] Fix | Delete
statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();
[3374] Fix | Delete
break;
[3375] Fix | Delete
default:
[3376] Fix | Delete
statement = this.parseStatement();
[3377] Fix | Delete
break;
[3378] Fix | Delete
}
[3379] Fix | Delete
}
[3380] Fix | Delete
else {
[3381] Fix | Delete
statement = this.parseStatement();
[3382] Fix | Delete
}
[3383] Fix | Delete
return statement;
[3384] Fix | Delete
};
[3385] Fix | Delete
Parser.prototype.parseBlock = function () {
[3386] Fix | Delete
var node = this.createNode();
[3387] Fix | Delete
this.expect('{');
[3388] Fix | Delete
var block = [];
[3389] Fix | Delete
while (true) {
[3390] Fix | Delete
if (this.match('}')) {
[3391] Fix | Delete
break;
[3392] Fix | Delete
}
[3393] Fix | Delete
block.push(this.parseStatementListItem());
[3394] Fix | Delete
}
[3395] Fix | Delete
this.expect('}');
[3396] Fix | Delete
return this.finalize(node, new Node.BlockStatement(block));
[3397] Fix | Delete
};
[3398] Fix | Delete
// https://tc39.github.io/ecma262/#sec-let-and-const-declarations
[3399] Fix | Delete
Parser.prototype.parseLexicalBinding = function (kind, options) {
[3400] Fix | Delete
var node = this.createNode();
[3401] Fix | Delete
var params = [];
[3402] Fix | Delete
var id = this.parsePattern(params, kind);
[3403] Fix | Delete
if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {
[3404] Fix | Delete
if (this.scanner.isRestrictedWord(id.name)) {
[3405] Fix | Delete
this.tolerateError(messages_1.Messages.StrictVarName);
[3406] Fix | Delete
}
[3407] Fix | Delete
}
[3408] Fix | Delete
var init = null;
[3409] Fix | Delete
if (kind === 'const') {
[3410] Fix | Delete
if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {
[3411] Fix | Delete
if (this.match('=')) {
[3412] Fix | Delete
this.nextToken();
[3413] Fix | Delete
init = this.isolateCoverGrammar(this.parseAssignmentExpression);
[3414] Fix | Delete
}
[3415] Fix | Delete
else {
[3416] Fix | Delete
this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');
[3417] Fix | Delete
}
[3418] Fix | Delete
}
[3419] Fix | Delete
}
[3420] Fix | Delete
else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {
[3421] Fix | Delete
this.expect('=');
[3422] Fix | Delete
init = this.isolateCoverGrammar(this.parseAssignmentExpression);
[3423] Fix | Delete
}
[3424] Fix | Delete
return this.finalize(node, new Node.VariableDeclarator(id, init));
[3425] Fix | Delete
};
[3426] Fix | Delete
Parser.prototype.parseBindingList = function (kind, options) {
[3427] Fix | Delete
var list = [this.parseLexicalBinding(kind, options)];
[3428] Fix | Delete
while (this.match(',')) {
[3429] Fix | Delete
this.nextToken();
[3430] Fix | Delete
list.push(this.parseLexicalBinding(kind, options));
[3431] Fix | Delete
}
[3432] Fix | Delete
return list;
[3433] Fix | Delete
};
[3434] Fix | Delete
Parser.prototype.isLexicalDeclaration = function () {
[3435] Fix | Delete
var state = this.scanner.saveState();
[3436] Fix | Delete
this.scanner.scanComments();
[3437] Fix | Delete
var next = this.scanner.lex();
[3438] Fix | Delete
this.scanner.restoreState(state);
[3439] Fix | Delete
return (next.type === 3 /* Identifier */) ||
[3440] Fix | Delete
(next.type === 7 /* Punctuator */ && next.value === '[') ||
[3441] Fix | Delete
(next.type === 7 /* Punctuator */ && next.value === '{') ||
[3442] Fix | Delete
(next.type === 4 /* Keyword */ && next.value === 'let') ||
[3443] Fix | Delete
(next.type === 4 /* Keyword */ && next.value === 'yield');
[3444] Fix | Delete
};
[3445] Fix | Delete
Parser.prototype.parseLexicalDeclaration = function (options) {
[3446] Fix | Delete
var node = this.createNode();
[3447] Fix | Delete
var kind = this.nextToken().value;
[3448] Fix | Delete
assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');
[3449] Fix | Delete
var declarations = this.parseBindingList(kind, options);
[3450] Fix | Delete
this.consumeSemicolon();
[3451] Fix | Delete
return this.finalize(node, new Node.VariableDeclaration(declarations, kind));
[3452] Fix | Delete
};
[3453] Fix | Delete
// https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns
[3454] Fix | Delete
Parser.prototype.parseBindingRestElement = function (params, kind) {
[3455] Fix | Delete
var node = this.createNode();
[3456] Fix | Delete
this.expect('...');
[3457] Fix | Delete
var arg = this.parsePattern(params, kind);
[3458] Fix | Delete
return this.finalize(node, new Node.RestElement(arg));
[3459] Fix | Delete
};
[3460] Fix | Delete
Parser.prototype.parseArrayPattern = function (params, kind) {
[3461] Fix | Delete
var node = this.createNode();
[3462] Fix | Delete
this.expect('[');
[3463] Fix | Delete
var elements = [];
[3464] Fix | Delete
while (!this.match(']')) {
[3465] Fix | Delete
if (this.match(',')) {
[3466] Fix | Delete
this.nextToken();
[3467] Fix | Delete
elements.push(null);
[3468] Fix | Delete
}
[3469] Fix | Delete
else {
[3470] Fix | Delete
if (this.match('...')) {
[3471] Fix | Delete
elements.push(this.parseBindingRestElement(params, kind));
[3472] Fix | Delete
break;
[3473] Fix | Delete
}
[3474] Fix | Delete
else {
[3475] Fix | Delete
elements.push(this.parsePatternWithDefault(params, kind));
[3476] Fix | Delete
}
[3477] Fix | Delete
if (!this.match(']')) {
[3478] Fix | Delete
this.expect(',');
[3479] Fix | Delete
}
[3480] Fix | Delete
}
[3481] Fix | Delete
}
[3482] Fix | Delete
this.expect(']');
[3483] Fix | Delete
return this.finalize(node, new Node.ArrayPattern(elements));
[3484] Fix | Delete
};
[3485] Fix | Delete
Parser.prototype.parsePropertyPattern = function (params, kind) {
[3486] Fix | Delete
var node = this.createNode();
[3487] Fix | Delete
var computed = false;
[3488] Fix | Delete
var shorthand = false;
[3489] Fix | Delete
var method = false;
[3490] Fix | Delete
var key;
[3491] Fix | Delete
var value;
[3492] Fix | Delete
if (this.lookahead.type === 3 /* Identifier */) {
[3493] Fix | Delete
var keyToken = this.lookahead;
[3494] Fix | Delete
key = this.parseVariableIdentifier();
[3495] Fix | Delete
var init = this.finalize(node, new Node.Identifier(keyToken.value));
[3496] Fix | Delete
if (this.match('=')) {
[3497] Fix | Delete
params.push(keyToken);
[3498] Fix | Delete
shorthand = true;
[3499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function