[parser] Better recovery on variable declaration with missing name before type parameter
Change-Id: Ie3e2995748c6f36c2cd98235658cbadfc53157a9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/394303 Commit-Queue: Jens Johansen <jensj@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
committed by
Commit Queue
parent
2dda80a76e
commit
0b07f2ebae
@@ -8355,6 +8355,16 @@ class Parser {
|
||||
listener.beginMetadataStar(start.next!);
|
||||
listener.endMetadataStar(/* count = */ 0);
|
||||
}
|
||||
// Having settled on a variable declaration possibly do some error recovery.
|
||||
if (beforeType.next!.isA(TokenType.LT)) {
|
||||
// E.g. `final <int> foo = [42];` where we're missing `List` before
|
||||
// `<int>`.
|
||||
insertSyntheticIdentifier(
|
||||
beforeType, IdentifierContext.localVariableDeclaration,
|
||||
message:
|
||||
codes.templateExpectedIdentifier.withArguments(beforeType.next!));
|
||||
typeInfo = computeType(beforeType, /* required = */ true);
|
||||
}
|
||||
token = typeInfo.parseType(beforeType, this);
|
||||
next = token.next!;
|
||||
listener.beginVariablesDeclaration(next, lateToken, varFinalOrConst);
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
foo() {
|
||||
if(true)
|
||||
final <int> f = [42];
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
Problems reported:
|
||||
|
||||
parser/error_recovery/bad_variable_in_if:7:11: Expected an identifier, but got '<'.
|
||||
final <int> f = [42];
|
||||
^
|
||||
|
||||
beginCompilationUnit(foo)
|
||||
beginMetadataStar(foo)
|
||||
endMetadataStar(0)
|
||||
beginTopLevelMember(foo)
|
||||
beginTopLevelMethod(, null, null)
|
||||
handleNoType()
|
||||
handleIdentifier(foo, topLevelFunctionDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.TopLevelMethod)
|
||||
endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
beginIfStatement(if)
|
||||
handleLiteralBool(true)
|
||||
handleParenthesizedCondition((, null, null)
|
||||
beginThenStatement(final)
|
||||
beginMetadataStar(final)
|
||||
endMetadataStar(0)
|
||||
handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '<'., Try inserting an identifier before '<'., {lexeme: <}], <, <)
|
||||
handleIdentifier(, typeReference)
|
||||
beginTypeArguments(<)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(>)
|
||||
handleType(int, null)
|
||||
endTypeArguments(1, <, >)
|
||||
handleType(, null)
|
||||
beginVariablesDeclaration(f, null, final)
|
||||
handleIdentifier(f, localVariableDeclaration)
|
||||
beginInitializedIdentifier(f)
|
||||
beginVariableInitializer(=)
|
||||
handleNoTypeArguments([)
|
||||
handleLiteralInt(42)
|
||||
handleLiteralList(1, [, null, ])
|
||||
endVariableInitializer(=)
|
||||
endInitializedIdentifier(f)
|
||||
endVariablesDeclaration(1, ;)
|
||||
endThenStatement(final, ;)
|
||||
endIfStatement(if, null, ;)
|
||||
endBlockFunctionBody(1, {, })
|
||||
endTopLevelMethod(foo, null, })
|
||||
endTopLevelDeclaration(})
|
||||
endCompilationUnit(1, )
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
parseUnit(foo)
|
||||
skipErrorTokens(foo)
|
||||
listener: beginCompilationUnit(foo)
|
||||
syntheticPreviousToken(foo)
|
||||
parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
|
||||
parseMetadataStar()
|
||||
listener: beginMetadataStar(foo)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelMemberImpl()
|
||||
listener: beginTopLevelMember(foo)
|
||||
isReservedKeyword(()
|
||||
parseTopLevelMethod(, null, null, , NoType(), null, foo, false)
|
||||
listener: beginTopLevelMethod(, null, null)
|
||||
listener: handleNoType()
|
||||
ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
|
||||
listener: handleIdentifier(foo, topLevelFunctionDeclaration)
|
||||
parseMethodTypeVar(foo)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(foo, foo, false, MemberKind.TopLevelMethod)
|
||||
parseFormalParameters(foo, MemberKind.TopLevelMethod)
|
||||
parseFormalParametersRest((, MemberKind.TopLevelMethod)
|
||||
listener: beginFormalParameters((, MemberKind.TopLevelMethod)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, false)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrValue(}, if)
|
||||
parseStatement({)
|
||||
parseStatementX({)
|
||||
parseIfStatement({)
|
||||
listener: beginIfStatement(if)
|
||||
ensureParenthesizedCondition(if, allowCase: false)
|
||||
parseExpressionInParenthesisRest((, allowCase: false)
|
||||
parseExpression(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralBool(()
|
||||
listener: handleLiteralBool(true)
|
||||
ensureCloseParen(true, ()
|
||||
listener: handleParenthesizedCondition((, null, null)
|
||||
listener: beginThenStatement(final)
|
||||
parseStatement())
|
||||
parseStatementX())
|
||||
parseExpressionStatementOrDeclarationAfterModifiers(final, ), null, final, null, null)
|
||||
looksLikeLocalFunction(<)
|
||||
listener: beginMetadataStar(final)
|
||||
listener: endMetadataStar(0)
|
||||
insertSyntheticIdentifier(final, localVariableDeclaration, message: Message[ExpectedIdentifier, Expected an identifier, but got '<'., Try inserting an identifier before '<'., {lexeme: <}], messageOnToken: null)
|
||||
reportRecoverableError(<, Message[ExpectedIdentifier, Expected an identifier, but got '<'., Try inserting an identifier before '<'., {lexeme: <}])
|
||||
listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got '<'., Try inserting an identifier before '<'., {lexeme: <}], <, <)
|
||||
rewriter()
|
||||
listener: handleIdentifier(, typeReference)
|
||||
listener: beginTypeArguments(<)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(>)
|
||||
listener: handleType(int, null)
|
||||
listener: endTypeArguments(1, <, >)
|
||||
listener: handleType(, null)
|
||||
listener: beginVariablesDeclaration(f, null, final)
|
||||
parseVariablesDeclarationRest(>, true)
|
||||
parseOptionallyInitializedIdentifier(>)
|
||||
ensureIdentifier(>, localVariableDeclaration)
|
||||
listener: handleIdentifier(f, localVariableDeclaration)
|
||||
listener: beginInitializedIdentifier(f)
|
||||
parseVariableInitializerOpt(f)
|
||||
listener: beginVariableInitializer(=)
|
||||
parseExpression(=)
|
||||
parsePrecedenceExpression(=, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(=, true, ConstantPatternContext.none)
|
||||
parsePrimary(=, expression, ConstantPatternContext.none)
|
||||
listener: handleNoTypeArguments([)
|
||||
parseLiteralListSuffix(=, null)
|
||||
parseExpression([)
|
||||
parsePrecedenceExpression([, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression([, true, ConstantPatternContext.none)
|
||||
parsePrimary([, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt([)
|
||||
listener: handleLiteralInt(42)
|
||||
listener: handleLiteralList(1, [, null, ])
|
||||
listener: endVariableInitializer(=)
|
||||
listener: endInitializedIdentifier(f)
|
||||
ensureSemicolon(])
|
||||
listener: endVariablesDeclaration(1, ;)
|
||||
listener: endThenStatement(final, ;)
|
||||
listener: endIfStatement(if, null, ;)
|
||||
notEofOrValue(}, })
|
||||
listener: endBlockFunctionBody(1, {, })
|
||||
listener: endTopLevelMethod(foo, null, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
reportAllErrorTokens(foo)
|
||||
listener: endCompilationUnit(1, )
|
||||
@@ -0,0 +1,13 @@
|
||||
NOTICE: Stream was rewritten by parser!
|
||||
|
||||
foo() {
|
||||
if(true)
|
||||
final *synthetic*<int> f = [42];
|
||||
}
|
||||
|
||||
|
||||
foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
if[KeywordToken]([BeginToken]true[KeywordToken])[SimpleToken]
|
||||
final[KeywordToken] [SyntheticStringToken]<[BeginToken]int[StringToken]>[SimpleToken] f[StringToken] =[SimpleToken] [[BeginToken]42[StringToken]][SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
@@ -0,0 +1,11 @@
|
||||
foo() {
|
||||
if(true)
|
||||
final <int> f = [42];
|
||||
}
|
||||
|
||||
|
||||
foo[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
if[KeywordToken]([BeginToken]true[KeywordToken])[SimpleToken]
|
||||
final[KeywordToken] <[BeginToken]int[StringToken]>[SimpleToken] f[StringToken] =[SimpleToken] [[BeginToken]42[StringToken]][SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -51,15 +43,11 @@ library;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
while (true) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_01.dart:6:3: Error: This couldn't be parsed.
|
||||
while(true)
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_01.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -51,15 +43,11 @@ library;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
while (true) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_01.dart:6:3: Error: This couldn't be parsed.
|
||||
while(true)
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_01.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_01.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -51,15 +43,11 @@ library;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
while (true) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_01.dart:6:3: Error: This couldn't be parsed.
|
||||
while(true)
|
||||
^";
|
||||
final invalid-type f = core::_GrowableList::_literal1<core::int>(42);
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_01.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -51,15 +43,11 @@ library;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
if(true) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_02.dart:6:3: Error: This couldn't be parsed.
|
||||
if(true)
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_02.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -51,15 +43,11 @@ library;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
if(true) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_02.dart:6:3: Error: This couldn't be parsed.
|
||||
if(true)
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_02.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_02.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -51,15 +43,11 @@ library;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
if(true) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_02.dart:6:3: Error: This couldn't be parsed.
|
||||
if(true)
|
||||
^";
|
||||
final invalid-type f = core::_GrowableList::_literal1<core::int>(42);
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_02.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:14:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -51,17 +43,13 @@ library;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
if(true) {
|
||||
}
|
||||
else {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_03.dart:7:3: Error: This couldn't be parsed.
|
||||
else
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_03.dart:8:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:14:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -51,17 +43,13 @@ library;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
if(true) {
|
||||
}
|
||||
else {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_03.dart:7:3: Error: This couldn't be parsed.
|
||||
else
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_03.dart:8:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:8:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_03.dart:14:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -51,17 +43,13 @@ library;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
if(true) {
|
||||
}
|
||||
else {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_03.dart:7:3: Error: This couldn't be parsed.
|
||||
else
|
||||
^";
|
||||
final invalid-type f = core::_GrowableList::_literal1<core::int>(42);
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_03.dart:8:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -55,12 +47,7 @@ import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_04.dart:7:12: Error: This couldn't be parsed.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_04.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -55,12 +47,7 @@ import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_04.dart:7:12: Error: This couldn't be parsed.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_04.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_04.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -55,12 +47,7 @@ import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
for (core::int i = 0; i.{core::num::<}(10){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_04.dart:7:12: Error: This couldn't be parsed.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
final invalid-type f = core::_GrowableList::_literal1<core::int>(42);
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_04.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -55,12 +47,7 @@ import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
for (core::int x in <core::int>[1, 2, 3]) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_05.dart:7:12: Error: This couldn't be parsed.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_05.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -55,12 +47,7 @@ import "dart:core" as core;
|
||||
|
||||
static method foo() → dynamic {
|
||||
for (core::int x in <core::int>[1, 2, 3]) {
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_05.dart:7:12: Error: This couldn't be parsed.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
final invalid-type f = <core::int>[42];
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_05.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
@@ -7,18 +7,10 @@ library;
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:11: Error: Expected ';' after this.
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:11: Error: This couldn't be parsed.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:17: Error: Undefined name 'f'.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:7:19: Error: Can't assign to this.
|
||||
// final <int> f = [42];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/regress/parser_recovery_05.dart:12:13: Error: Undefined name 'a'.
|
||||
// var y = a<int, void>?.c = 42;
|
||||
// ^
|
||||
@@ -59,14 +51,9 @@ static method foo() → dynamic {
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
|
||||
core::int x = :sync-for-iterator.{core::Iterator::current}{core::int};
|
||||
{
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_05.dart:7:12: Error: This couldn't be parsed.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
final invalid-type f = core::_GrowableList::_literal1<core::int>(42);
|
||||
}
|
||||
}
|
||||
}
|
||||
invalid-expression "pkg/front_end/testcases/regress/parser_recovery_05.dart:7:19: Error: Can't assign to this.
|
||||
final <int> f = [42];
|
||||
^";
|
||||
}
|
||||
static method bar() → dynamic {}
|
||||
|
||||
Reference in New Issue
Block a user