mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Always parse an argument for an ElementAccessExpression (#23683)
This commit is contained in:
@@ -23,6 +23,10 @@
|
||||
"category": "Error",
|
||||
"code": 1010
|
||||
},
|
||||
"An element access expression should take an argument.": {
|
||||
"category": "Error",
|
||||
"code": 1011
|
||||
},
|
||||
"Unexpected token.": {
|
||||
"category": "Error",
|
||||
"code": 1012
|
||||
|
||||
@@ -1240,7 +1240,7 @@ namespace ts {
|
||||
if (reportAtCurrentPosition) {
|
||||
parseErrorAtPosition(scanner.getStartPos(), 0, diagnosticMessage, arg0);
|
||||
}
|
||||
else {
|
||||
else if (diagnosticMessage) {
|
||||
parseErrorAtCurrentToken(diagnosticMessage, arg0);
|
||||
}
|
||||
|
||||
@@ -4348,14 +4348,15 @@ namespace ts {
|
||||
const indexedAccess = <ElementAccessExpression>createNode(SyntaxKind.ElementAccessExpression, expression.pos);
|
||||
indexedAccess.expression = expression;
|
||||
|
||||
// It's not uncommon for a user to write: "new Type[]".
|
||||
// Check for that common pattern and report a better error message.
|
||||
if (token() !== SyntaxKind.CloseBracketToken) {
|
||||
indexedAccess.argumentExpression = allowInAnd(parseExpression);
|
||||
if (indexedAccess.argumentExpression.kind === SyntaxKind.StringLiteral || indexedAccess.argumentExpression.kind === SyntaxKind.NumericLiteral) {
|
||||
const literal = <LiteralExpression>indexedAccess.argumentExpression;
|
||||
literal.text = internIdentifier(literal.text);
|
||||
if (token() === SyntaxKind.CloseBracketToken) {
|
||||
indexedAccess.argumentExpression = createMissingNode(SyntaxKind.Identifier, /*reportAtCurrentPosition*/ true, Diagnostics.An_element_access_expression_should_take_an_argument);
|
||||
}
|
||||
else {
|
||||
const argument = allowInAnd(parseExpression);
|
||||
if (isStringOrNumericLiteral(argument)) {
|
||||
argument.text = internIdentifier(argument.text);
|
||||
}
|
||||
indexedAccess.argumentExpression = argument;
|
||||
}
|
||||
|
||||
parseExpected(SyntaxKind.CloseBracketToken);
|
||||
|
||||
@@ -1685,7 +1685,7 @@ namespace ts {
|
||||
export interface ElementAccessExpression extends MemberExpression {
|
||||
kind: SyntaxKind.ElementAccessExpression;
|
||||
expression: LeftHandSideExpression;
|
||||
argumentExpression?: Expression;
|
||||
argumentExpression: Expression;
|
||||
}
|
||||
|
||||
export interface SuperElementAccessExpression extends ElementAccessExpression {
|
||||
|
||||
Reference in New Issue
Block a user