Disallow const let or let let
This commit is contained in:
parent
178f2d7949
commit
8071dca9ad
@ -907,7 +907,7 @@ export default class StatementParser extends ExpressionParser {
|
|||||||
node.kind = kind;
|
node.kind = kind;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
const decl = this.startNode();
|
const decl = this.startNode();
|
||||||
this.parseVarHead(decl);
|
this.parseVarId(decl, kind);
|
||||||
if (this.eat(tt.eq)) {
|
if (this.eat(tt.eq)) {
|
||||||
decl.init = this.parseMaybeAssign(isFor);
|
decl.init = this.parseMaybeAssign(isFor);
|
||||||
} else {
|
} else {
|
||||||
@ -937,7 +937,10 @@ export default class StatementParser extends ExpressionParser {
|
|||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseVarHead(decl: N.VariableDeclarator): void {
|
parseVarId(decl: N.VariableDeclarator, kind: "var" | "let" | "const"): void {
|
||||||
|
if ((kind === "const" || kind === "let") && this.isContextual("let")) {
|
||||||
|
this.unexpected(null, "let is disallowed as a lexically bound name");
|
||||||
|
}
|
||||||
decl.id = this.parseBindingAtom();
|
decl.id = this.parseBindingAtom();
|
||||||
this.checkLVal(decl.id, true, undefined, "variable declaration");
|
this.checkLVal(decl.id, true, undefined, "variable declaration");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2344,8 +2344,11 @@ export default (superClass: Class<Parser>): Class<Parser> =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
// parse flow type annotations on variable declarator heads - let foo: string = bar
|
// parse flow type annotations on variable declarator heads - let foo: string = bar
|
||||||
parseVarHead(decl: N.VariableDeclarator): void {
|
parseVarId(
|
||||||
super.parseVarHead(decl);
|
decl: N.VariableDeclarator,
|
||||||
|
kind: "var" | "let" | "const",
|
||||||
|
): void {
|
||||||
|
super.parseVarId(decl, kind);
|
||||||
if (this.match(tt.colon)) {
|
if (this.match(tt.colon)) {
|
||||||
decl.id.typeAnnotation = this.flowParseTypeAnnotation();
|
decl.id.typeAnnotation = this.flowParseTypeAnnotation();
|
||||||
this.finishNode(decl.id, decl.id.type);
|
this.finishNode(decl.id, decl.id.type);
|
||||||
|
|||||||
@ -1948,8 +1948,11 @@ export default (superClass: Class<Parser>): Class<Parser> =>
|
|||||||
}
|
}
|
||||||
|
|
||||||
// `let x: number;`
|
// `let x: number;`
|
||||||
parseVarHead(decl: N.VariableDeclarator): void {
|
parseVarId(
|
||||||
super.parseVarHead(decl);
|
decl: N.VariableDeclarator,
|
||||||
|
kind: "var" | "let" | "const",
|
||||||
|
): void {
|
||||||
|
super.parseVarId(decl, kind);
|
||||||
if (decl.id.type === "Identifier" && this.eat(tt.bang)) {
|
if (decl.id.type === "Identifier" && this.eat(tt.bang)) {
|
||||||
decl.definite = true;
|
decl.definite = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -672,8 +672,6 @@ language/expressions/async-generator/early-errors-expression-formals-body-duplic
|
|||||||
language/expressions/async-generator/early-errors-expression-formals-body-duplicate-let.js(default)
|
language/expressions/async-generator/early-errors-expression-formals-body-duplicate-let.js(default)
|
||||||
language/expressions/async-generator/early-errors-expression-formals-body-duplicate-let.js(strict mode)
|
language/expressions/async-generator/early-errors-expression-formals-body-duplicate-let.js(strict mode)
|
||||||
language/expressions/async-generator/named-dflt-params-duplicates.js(default)
|
language/expressions/async-generator/named-dflt-params-duplicates.js(default)
|
||||||
language/expressions/class/class-name-ident-static-escaped.js(default)
|
|
||||||
language/expressions/class/class-name-ident-static.js(default)
|
|
||||||
language/expressions/class/elements/fields-duplicate-privatenames.js(default)
|
language/expressions/class/elements/fields-duplicate-privatenames.js(default)
|
||||||
language/expressions/class/elements/fields-duplicate-privatenames.js(strict mode)
|
language/expressions/class/elements/fields-duplicate-privatenames.js(strict mode)
|
||||||
language/expressions/class/elements/fields-literal-name-static-propname-constructor.js(default)
|
language/expressions/class/elements/fields-literal-name-static-propname-constructor.js(default)
|
||||||
@ -1029,8 +1027,6 @@ language/statements/class/async-gen-meth-escaped-async.js(default)
|
|||||||
language/statements/class/async-gen-meth-escaped-async.js(strict mode)
|
language/statements/class/async-gen-meth-escaped-async.js(strict mode)
|
||||||
language/statements/class/async-meth-escaped-async.js(default)
|
language/statements/class/async-meth-escaped-async.js(default)
|
||||||
language/statements/class/async-meth-escaped-async.js(strict mode)
|
language/statements/class/async-meth-escaped-async.js(strict mode)
|
||||||
language/statements/class/class-name-ident-static-escaped.js(default)
|
|
||||||
language/statements/class/class-name-ident-static.js(default)
|
|
||||||
language/statements/class/elements/fields-duplicate-privatenames.js(default)
|
language/statements/class/elements/fields-duplicate-privatenames.js(default)
|
||||||
language/statements/class/elements/fields-duplicate-privatenames.js(strict mode)
|
language/statements/class/elements/fields-duplicate-privatenames.js(strict mode)
|
||||||
language/statements/class/elements/fields-literal-name-static-propname-constructor.js(default)
|
language/statements/class/elements/fields-literal-name-static-propname-constructor.js(default)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user