[parser] Declaring constructors - Parse primary constructor this body.
Added two listener calls `beginPrimaryConstructorBody` and `endPrimaryConstructorBody` for parsing the `this` body. No AST implementation has been done, only parsing. Bug: https://github.com/dart-lang/sdk/issues/61699 Change-Id: I6aaf621bb3e67bfe00efe32de8097ca1e5048afb Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/459901 Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Kallen Tu <kallentu@google.com>
This commit is contained in:
@@ -2669,6 +2669,24 @@ class ForwardingListener implements Listener {
|
||||
void endConstDotShorthand(Token token) {
|
||||
listener?.beginConstDotShorthand(token);
|
||||
}
|
||||
|
||||
@override
|
||||
void beginPrimaryConstructorBody(Token token) {
|
||||
listener?.beginPrimaryConstructorBody(token);
|
||||
}
|
||||
|
||||
@override
|
||||
void endPrimaryConstructorBody(
|
||||
Token beginToken,
|
||||
Token? beginInitializers,
|
||||
Token endToken,
|
||||
) {
|
||||
listener?.endPrimaryConstructorBody(
|
||||
beginToken,
|
||||
beginInitializers,
|
||||
endToken,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class NullListener extends ForwardingListener {
|
||||
|
||||
@@ -356,6 +356,21 @@ abstract class Listener implements UnescapeErrorListener {
|
||||
bool forExtensionType,
|
||||
) {}
|
||||
|
||||
void beginPrimaryConstructorBody(Token token) {}
|
||||
|
||||
// Handles the `this` body block for a primary constructor. Substructures:
|
||||
/// - metadata
|
||||
/// - initializers
|
||||
/// - async marker
|
||||
/// - body
|
||||
void endPrimaryConstructorBody(
|
||||
Token beginToken,
|
||||
Token? beginInitializers,
|
||||
Token endToken,
|
||||
) {
|
||||
logEvent("endPrimaryConstructorBody");
|
||||
}
|
||||
|
||||
void beginCombinators(Token token) {}
|
||||
|
||||
void endCombinators(int count) {
|
||||
|
||||
@@ -3715,6 +3715,24 @@ class Parser {
|
||||
return token;
|
||||
}
|
||||
|
||||
Token parsePrimaryConstructorBody(Token token) {
|
||||
Token beginToken = token;
|
||||
listener.beginPrimaryConstructorBody(token);
|
||||
|
||||
Token? beforeInitializers = token;
|
||||
token = parseInitializersOpt(beforeInitializers);
|
||||
|
||||
token = parseAsyncModifierOpt(token);
|
||||
token = parseFunctionBody(
|
||||
token,
|
||||
/* ofFunctionExpression = */ false,
|
||||
/* allowAbstract = */ inPlainSync,
|
||||
);
|
||||
|
||||
listener.endPrimaryConstructorBody(beginToken, beforeInitializers, token);
|
||||
return token;
|
||||
}
|
||||
|
||||
/// Parses an extension type declaration after
|
||||
///
|
||||
/// 'extension' 'type'
|
||||
@@ -5361,6 +5379,22 @@ class Parser {
|
||||
return token;
|
||||
}
|
||||
// Fall through to continue parsing `operator` as an identifier.
|
||||
} else if (identical(value, 'this')) {
|
||||
Token next2 = next.next!;
|
||||
if (next2.isA(TokenType.COLON) ||
|
||||
next2.isA(TokenType.SEMICOLON) ||
|
||||
next2.isA(TokenType.OPEN_CURLY_BRACKET)) {
|
||||
if (!_isDeclaringConstructorsFeatureEnabled) {
|
||||
reportExperimentNotEnabled(
|
||||
ExperimentalFlag.declaringConstructors,
|
||||
next,
|
||||
next,
|
||||
);
|
||||
}
|
||||
token = parsePrimaryConstructorBody(next);
|
||||
listener.endMember();
|
||||
return token;
|
||||
}
|
||||
} else if (!next.isIdentifier ||
|
||||
(identical(value, 'typedef') &&
|
||||
token == beforeStart &&
|
||||
|
||||
@@ -617,6 +617,11 @@ class AstBuilder extends StackListener {
|
||||
debugEvent("PrimaryConstructor");
|
||||
}
|
||||
|
||||
@override
|
||||
void beginPrimaryConstructorBody(Token beginToken) {
|
||||
debugEvent("PrimaryConstructorBody");
|
||||
}
|
||||
|
||||
@override
|
||||
void beginSwitchCaseWhenClause(Token when) {
|
||||
debugEvent("PatternSwitchCaseGuard");
|
||||
@@ -3168,6 +3173,23 @@ class AstBuilder extends StackListener {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void endPrimaryConstructorBody(
|
||||
Token beginToken,
|
||||
Token? beginInitializers,
|
||||
Token endToken,
|
||||
) {
|
||||
// TODO(declaring-constructors): Implement primary constructor body.
|
||||
// ignore: unused_local_variable
|
||||
var bodyObject = pop();
|
||||
// ignore: unused_local_variable
|
||||
var initializers = (pop() as List<ConstructorInitializerImpl>?) ?? const [];
|
||||
// ignore: unused_local_variable
|
||||
var separator = pop() as Token?;
|
||||
// ignore: unused_local_variable
|
||||
var metadata = pop() as List<AnnotationImpl>?;
|
||||
}
|
||||
|
||||
@override
|
||||
void endRecordLiteral(Token leftParenthesis, int count, Token? constKeyword) {
|
||||
debugEvent("RecordLiteral");
|
||||
|
||||
@@ -1213,6 +1213,22 @@ class DietListener extends StackListenerImpl {
|
||||
_memberScope = outermostScope;
|
||||
}
|
||||
|
||||
@override
|
||||
// Coverage-ignore(suite): Not run.
|
||||
void endPrimaryConstructorBody(
|
||||
Token beginToken,
|
||||
Token? beginInitializers,
|
||||
Token endToken,
|
||||
) {
|
||||
debugEvent("endPrimaryConstructorBody");
|
||||
assert(
|
||||
checkState(beginToken, [/* metadata token */ ValueKinds.TokenOrNull]),
|
||||
);
|
||||
// TODO(declaring-constructors): Implement primary constructor body.
|
||||
pop() as Token?;
|
||||
checkEmpty(beginToken.charOffset);
|
||||
}
|
||||
|
||||
@override
|
||||
void endExtensionTypeDeclaration(
|
||||
Token beginToken,
|
||||
|
||||
@@ -1960,6 +1960,31 @@ class OutlineBuilder extends StackListenerImpl {
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
// Coverage-ignore(suite): Not run.
|
||||
void endPrimaryConstructorBody(
|
||||
Token beginToken,
|
||||
Token? beginInitializers,
|
||||
Token endToken,
|
||||
) {
|
||||
debugEvent("endPrimaryConstructorBody");
|
||||
assert(
|
||||
checkState(beginToken, [
|
||||
ValueKinds.MethodBody,
|
||||
ValueKinds.AsyncModifier,
|
||||
ValueKinds.MetadataListOrNull,
|
||||
]),
|
||||
);
|
||||
|
||||
// TODO(declaring-constructors): Implement primary constructor body.
|
||||
// ignore: unused_local_variable
|
||||
MethodBody bodyKind = pop() as MethodBody;
|
||||
// ignore: unused_local_variable
|
||||
AsyncMarker asyncModifier = pop() as AsyncMarker;
|
||||
// ignore: unused_local_variable
|
||||
List<MetadataBuilder>? metadata = pop() as List<MetadataBuilder>?;
|
||||
}
|
||||
|
||||
@override
|
||||
void beginTopLevelMethod(
|
||||
Token lastConsumed,
|
||||
|
||||
@@ -1533,6 +1533,18 @@ extension MemberExtension on MemberEnd {
|
||||
if (child is EnumFactoryMethodEnd) return child;
|
||||
throw "Not found";
|
||||
}
|
||||
|
||||
bool isPrimaryConstructorBody() {
|
||||
ParserAstNode child = children![1];
|
||||
if (child is PrimaryConstructorBodyEnd) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
PrimaryConstructorBodyEnd getPrimaryConstructorBody() {
|
||||
ParserAstNode child = children![1];
|
||||
if (child is PrimaryConstructorBodyEnd) return child;
|
||||
throw "Not found";
|
||||
}
|
||||
}
|
||||
|
||||
// Coverage-ignore(suite): Not run.
|
||||
|
||||
@@ -548,6 +548,30 @@ abstract class AbstractParserAstListener implements Listener {
|
||||
seen(data);
|
||||
}
|
||||
|
||||
@override
|
||||
void beginPrimaryConstructorBody(Token token) {
|
||||
PrimaryConstructorBodyBegin data = new PrimaryConstructorBodyBegin(
|
||||
ParserAstType.BEGIN,
|
||||
token: token,
|
||||
);
|
||||
seen(data);
|
||||
}
|
||||
|
||||
@override
|
||||
void endPrimaryConstructorBody(
|
||||
Token beginToken,
|
||||
Token? beginInitializers,
|
||||
Token endToken,
|
||||
) {
|
||||
PrimaryConstructorBodyEnd data = new PrimaryConstructorBodyEnd(
|
||||
ParserAstType.END,
|
||||
beginToken: beginToken,
|
||||
beginInitializers: beginInitializers,
|
||||
endToken: endToken,
|
||||
);
|
||||
seen(data);
|
||||
}
|
||||
|
||||
@override
|
||||
void beginCombinators(Token token) {
|
||||
CombinatorsBegin data = new CombinatorsBegin(
|
||||
@@ -5082,6 +5106,46 @@ class NoPrimaryConstructorHandle extends ParserAstNode {
|
||||
R accept<R>(ParserAstVisitor<R> v) => v.visitNoPrimaryConstructorHandle(this);
|
||||
}
|
||||
|
||||
class PrimaryConstructorBodyBegin extends ParserAstNode {
|
||||
final Token token;
|
||||
|
||||
PrimaryConstructorBodyBegin(ParserAstType type, {required this.token})
|
||||
: super("PrimaryConstructorBody", type);
|
||||
|
||||
@override
|
||||
Map<String, Object?> get deprecatedArguments => {"token": token};
|
||||
|
||||
@override
|
||||
R accept<R>(ParserAstVisitor<R> v) =>
|
||||
v.visitPrimaryConstructorBodyBegin(this);
|
||||
}
|
||||
|
||||
class PrimaryConstructorBodyEnd extends ParserAstNode
|
||||
implements BeginAndEndTokenParserAstNode {
|
||||
@override
|
||||
final Token beginToken;
|
||||
final Token? beginInitializers;
|
||||
@override
|
||||
final Token endToken;
|
||||
|
||||
PrimaryConstructorBodyEnd(
|
||||
ParserAstType type, {
|
||||
required this.beginToken,
|
||||
this.beginInitializers,
|
||||
required this.endToken,
|
||||
}) : super("PrimaryConstructorBody", type);
|
||||
|
||||
@override
|
||||
Map<String, Object?> get deprecatedArguments => {
|
||||
"beginToken": beginToken,
|
||||
"beginInitializers": beginInitializers,
|
||||
"endToken": endToken,
|
||||
};
|
||||
|
||||
@override
|
||||
R accept<R>(ParserAstVisitor<R> v) => v.visitPrimaryConstructorBodyEnd(this);
|
||||
}
|
||||
|
||||
class CombinatorsBegin extends ParserAstNode {
|
||||
final Token token;
|
||||
|
||||
@@ -11379,6 +11443,8 @@ abstract class ParserAstVisitor<R> {
|
||||
R visitPrimaryConstructorBegin(PrimaryConstructorBegin node);
|
||||
R visitPrimaryConstructorEnd(PrimaryConstructorEnd node);
|
||||
R visitNoPrimaryConstructorHandle(NoPrimaryConstructorHandle node);
|
||||
R visitPrimaryConstructorBodyBegin(PrimaryConstructorBodyBegin node);
|
||||
R visitPrimaryConstructorBodyEnd(PrimaryConstructorBodyEnd node);
|
||||
R visitCombinatorsBegin(CombinatorsBegin node);
|
||||
R visitCombinatorsEnd(CombinatorsEnd node);
|
||||
R visitCompilationUnitBegin(CompilationUnitBegin node);
|
||||
@@ -11917,6 +11983,14 @@ class RecursiveParserAstVisitor implements ParserAstVisitor<void> {
|
||||
void visitNoPrimaryConstructorHandle(NoPrimaryConstructorHandle node) =>
|
||||
node.visitChildren(this);
|
||||
|
||||
@override
|
||||
void visitPrimaryConstructorBodyBegin(PrimaryConstructorBodyBegin node) =>
|
||||
node.visitChildren(this);
|
||||
|
||||
@override
|
||||
void visitPrimaryConstructorBodyEnd(PrimaryConstructorBodyEnd node) =>
|
||||
node.visitChildren(this);
|
||||
|
||||
@override
|
||||
void visitCombinatorsBegin(CombinatorsBegin node) => node.visitChildren(this);
|
||||
|
||||
@@ -13384,6 +13458,15 @@ class RecursiveParserAstVisitorWithDefaultNodeAsync
|
||||
NoPrimaryConstructorHandle node,
|
||||
) => defaultNode(node);
|
||||
|
||||
@override
|
||||
Future<void> visitPrimaryConstructorBodyBegin(
|
||||
PrimaryConstructorBodyBegin node,
|
||||
) => defaultNode(node);
|
||||
|
||||
@override
|
||||
Future<void> visitPrimaryConstructorBodyEnd(PrimaryConstructorBodyEnd node) =>
|
||||
defaultNode(node);
|
||||
|
||||
@override
|
||||
Future<void> visitCombinatorsBegin(CombinatorsBegin node) =>
|
||||
defaultNode(node);
|
||||
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
class C1() {
|
||||
this {}
|
||||
}
|
||||
|
||||
class C2() {
|
||||
this : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
class C3() {
|
||||
this;
|
||||
}
|
||||
|
||||
class C4() {
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
+134
@@ -0,0 +1,134 @@
|
||||
beginCompilationUnit(class)
|
||||
beginMetadataStar(class)
|
||||
endMetadataStar(0)
|
||||
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
handleIdentifier(C1, classOrMixinDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginClassDeclaration(class, null, null, null, null, null, null, null, null, C1)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, false)
|
||||
handleNoType())
|
||||
handleClassExtends(null, 1)
|
||||
handleClassNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleClassHeader(class, class, null)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
endPrimaryConstructorBody(this, this, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(class)
|
||||
endMetadataStar(0)
|
||||
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
handleIdentifier(C2, classOrMixinDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginClassDeclaration(class, null, null, null, null, null, null, null, null, C2)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, false)
|
||||
handleNoType())
|
||||
handleClassExtends(null, 1)
|
||||
handleClassNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleClassHeader(class, class, null)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
endPrimaryConstructorBody(this, this, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(class)
|
||||
endMetadataStar(0)
|
||||
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
handleIdentifier(C3, classOrMixinDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginClassDeclaration(class, null, null, null, null, null, null, null, null, C3)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, false)
|
||||
handleNoType())
|
||||
handleClassExtends(null, 1)
|
||||
handleClassNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleClassHeader(class, class, null)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
endPrimaryConstructorBody(this, this, ;)
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(class)
|
||||
endMetadataStar(0)
|
||||
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
handleIdentifier(C4, classOrMixinDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginClassDeclaration(class, null, null, null, null, null, null, null, null, C4)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, false)
|
||||
handleNoType())
|
||||
handleClassExtends(null, 1)
|
||||
handleClassNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleClassHeader(class, class, null)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
endPrimaryConstructorBody(this, this, ;)
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
endCompilationUnit(4, )
|
||||
+264
@@ -0,0 +1,264 @@
|
||||
parseUnit(class)
|
||||
skipErrorTokens(class)
|
||||
listener: beginCompilationUnit(class)
|
||||
syntheticPreviousToken(class)
|
||||
parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
|
||||
parseMetadataStar()
|
||||
listener: beginMetadataStar(class)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(class, , class, null, null, null, null, DirectiveContext(DirectiveState.Unknown))
|
||||
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
|
||||
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
ensureIdentifier(class, classOrMixinDeclaration)
|
||||
listener: handleIdentifier(C1, classOrMixinDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, C1)
|
||||
parseClass(C1, class, class, null, C1)
|
||||
parsePrimaryConstructorOpt(C1, null, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(C1, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, false)
|
||||
parseClassHeaderOpt(), class, class)
|
||||
parseClassExtendsOpt(), DeclarationHeaderKind.Class)
|
||||
listener: handleNoType())
|
||||
listener: handleClassExtends(null, 1)
|
||||
parseClassWithClauseOpt())
|
||||
listener: handleClassNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleClassHeader(class, class, null)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.Class, C1)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, C1)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt(this)
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(this, false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
listener: endPrimaryConstructorBody(this, this, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(class)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(class, }, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
|
||||
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
ensureIdentifier(class, classOrMixinDeclaration)
|
||||
listener: handleIdentifier(C2, classOrMixinDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, C2)
|
||||
parseClass(C2, class, class, null, C2)
|
||||
parsePrimaryConstructorOpt(C2, null, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(C2, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, false)
|
||||
parseClassHeaderOpt(), class, class)
|
||||
parseClassExtendsOpt(), DeclarationHeaderKind.Class)
|
||||
listener: handleNoType())
|
||||
listener: handleClassExtends(null, 1)
|
||||
parseClassWithClauseOpt())
|
||||
listener: handleClassNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleClassHeader(class, class, null)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.Class, C2)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, C2)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
listener: endPrimaryConstructorBody(this, this, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(class)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(class, }, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
|
||||
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
ensureIdentifier(class, classOrMixinDeclaration)
|
||||
listener: handleIdentifier(C3, classOrMixinDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, C3)
|
||||
parseClass(C3, class, class, null, C3)
|
||||
parsePrimaryConstructorOpt(C3, null, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(C3, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, false)
|
||||
parseClassHeaderOpt(), class, class)
|
||||
parseClassExtendsOpt(), DeclarationHeaderKind.Class)
|
||||
listener: handleNoType())
|
||||
listener: handleClassExtends(null, 1)
|
||||
parseClassWithClauseOpt())
|
||||
listener: handleClassNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleClassHeader(class, class, null)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.Class, C3)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, C3)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt(this)
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(this, false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
listener: endPrimaryConstructorBody(this, this, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(class)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(class, }, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
|
||||
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
ensureIdentifier(class, classOrMixinDeclaration)
|
||||
listener: handleIdentifier(C4, classOrMixinDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, C4)
|
||||
parseClass(C4, class, class, null, C4)
|
||||
parsePrimaryConstructorOpt(C4, null, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(C4, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, false)
|
||||
parseClassHeaderOpt(), class, class)
|
||||
parseClassExtendsOpt(), DeclarationHeaderKind.Class)
|
||||
listener: handleNoType())
|
||||
listener: handleClassExtends(null, 1)
|
||||
parseClassWithClauseOpt())
|
||||
listener: handleClassNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleClassHeader(class, class, null)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.Class, C4)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, C4)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
listener: endPrimaryConstructorBody(this, this, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
reportAllErrorTokens(class)
|
||||
listener: endCompilationUnit(4, )
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
class C1() {
|
||||
this {}
|
||||
}
|
||||
|
||||
class C2() {
|
||||
this : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
class C3() {
|
||||
this;
|
||||
}
|
||||
|
||||
class C4() {
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
class[KeywordToken] C1[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C2[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C3[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C4[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
class C1() {
|
||||
this {}
|
||||
}
|
||||
|
||||
class C2() {
|
||||
this : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
class C3() {
|
||||
this;
|
||||
}
|
||||
|
||||
class C4() {
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
class[KeywordToken] C1[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C2[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C3[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C4[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
class C1() {
|
||||
this() {}
|
||||
}
|
||||
|
||||
class C2() {
|
||||
this(int x) : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
class C3() {
|
||||
this();
|
||||
}
|
||||
|
||||
class C4() {
|
||||
this(int x) : assert(1 > 2);
|
||||
}
|
||||
+204
@@ -0,0 +1,204 @@
|
||||
Problems reported:
|
||||
|
||||
parser/declaring_constructors/class_primary_constructor_body_error:2:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this() {}
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/class_primary_constructor_body_error:6:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this(int x) : assert(1 > 2) {}
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/class_primary_constructor_body_error:6:3: The name of a constructor must match the name of the enclosing class.
|
||||
this(int x) : assert(1 > 2) {}
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/class_primary_constructor_body_error:10:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this();
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/class_primary_constructor_body_error:14:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this(int x) : assert(1 > 2);
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/class_primary_constructor_body_error:14:3: The name of a constructor must match the name of the enclosing class.
|
||||
this(int x) : assert(1 > 2);
|
||||
^^^^
|
||||
|
||||
beginCompilationUnit(class)
|
||||
beginMetadataStar(class)
|
||||
endMetadataStar(0)
|
||||
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
handleIdentifier(C1, classOrMixinDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginClassDeclaration(class, null, null, null, null, null, null, null, null, C1)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, false)
|
||||
handleNoType())
|
||||
handleClassExtends(null, 1)
|
||||
handleClassNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleClassHeader(class, class, null)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, C1)
|
||||
handleNoType({)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
endClassMethod(null, this, (, null, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(class)
|
||||
endMetadataStar(0)
|
||||
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
handleIdentifier(C2, classOrMixinDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginClassDeclaration(class, null, null, null, null, null, null, null, null, C2)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, false)
|
||||
handleNoType())
|
||||
handleClassExtends(null, 1)
|
||||
handleClassNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleClassHeader(class, class, null)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, C2)
|
||||
handleNoType({)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
handleRecoverableError(ConstructorWithWrongName, this, this)
|
||||
endClassConstructor(null, this, (, :, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(class)
|
||||
endMetadataStar(0)
|
||||
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
handleIdentifier(C3, classOrMixinDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginClassDeclaration(class, null, null, null, null, null, null, null, null, C3)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, false)
|
||||
handleNoType())
|
||||
handleClassExtends(null, 1)
|
||||
handleClassNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleClassHeader(class, class, null)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, C3)
|
||||
handleNoType({)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
endClassMethod(null, this, (, null, ;)
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(class)
|
||||
endMetadataStar(0)
|
||||
beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
handleIdentifier(C4, classOrMixinDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginClassDeclaration(class, null, null, null, null, null, null, null, null, C4)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, false)
|
||||
handleNoType())
|
||||
handleClassExtends(null, 1)
|
||||
handleClassNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleClassHeader(class, class, null)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, C4)
|
||||
handleNoType({)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
handleRecoverableError(ConstructorWithWrongName, this, this)
|
||||
endClassConstructor(null, this, (, :, ;)
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
endCompilationUnit(4, )
|
||||
+344
@@ -0,0 +1,344 @@
|
||||
parseUnit(class)
|
||||
skipErrorTokens(class)
|
||||
listener: beginCompilationUnit(class)
|
||||
syntheticPreviousToken(class)
|
||||
parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
|
||||
parseMetadataStar()
|
||||
listener: beginMetadataStar(class)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(class, , class, null, null, null, null, DirectiveContext(DirectiveState.Unknown))
|
||||
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
|
||||
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
ensureIdentifier(class, classOrMixinDeclaration)
|
||||
listener: handleIdentifier(C1, classOrMixinDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, C1)
|
||||
parseClass(C1, class, class, null, C1)
|
||||
parsePrimaryConstructorOpt(C1, null, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(C1, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, false)
|
||||
parseClassHeaderOpt(), class, class)
|
||||
parseClassExtendsOpt(), DeclarationHeaderKind.Class)
|
||||
listener: handleNoType())
|
||||
listener: handleClassExtends(null, 1)
|
||||
parseClassWithClauseOpt())
|
||||
listener: handleClassNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleClassHeader(class, class, null)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.Class, C1)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, C1)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parseMethod({, null, null, null, null, null, null, null, {, NoType(), null, this, DeclarationKind.Class, C1, false)
|
||||
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, C1)
|
||||
listener: handleNoType({)
|
||||
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.NonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.NonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.NonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
listener: endClassMethod(null, this, (, null, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(class)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(class, }, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
|
||||
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
ensureIdentifier(class, classOrMixinDeclaration)
|
||||
listener: handleIdentifier(C2, classOrMixinDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, C2)
|
||||
parseClass(C2, class, class, null, C2)
|
||||
parsePrimaryConstructorOpt(C2, null, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(C2, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, false)
|
||||
parseClassHeaderOpt(), class, class)
|
||||
parseClassExtendsOpt(), DeclarationHeaderKind.Class)
|
||||
listener: handleNoType())
|
||||
listener: handleClassExtends(null, 1)
|
||||
parseClassWithClauseOpt())
|
||||
listener: handleClassNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleClassHeader(class, class, null)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.Class, C2)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, C2)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parseMethod({, null, null, null, null, null, null, null, {, NoType(), null, this, DeclarationKind.Class, C2, false)
|
||||
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, C2)
|
||||
listener: handleNoType({)
|
||||
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.NonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.NonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.NonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
reportRecoverableError(this, ConstructorWithWrongName)
|
||||
listener: handleRecoverableError(ConstructorWithWrongName, this, this)
|
||||
listener: endClassConstructor(null, this, (, :, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(class)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(class, }, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
|
||||
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
ensureIdentifier(class, classOrMixinDeclaration)
|
||||
listener: handleIdentifier(C3, classOrMixinDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, C3)
|
||||
parseClass(C3, class, class, null, C3)
|
||||
parsePrimaryConstructorOpt(C3, null, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(C3, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, false)
|
||||
parseClassHeaderOpt(), class, class)
|
||||
parseClassExtendsOpt(), DeclarationHeaderKind.Class)
|
||||
listener: handleNoType())
|
||||
listener: handleClassExtends(null, 1)
|
||||
parseClassWithClauseOpt())
|
||||
listener: handleClassNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleClassHeader(class, class, null)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.Class, C3)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, C3)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parseMethod({, null, null, null, null, null, null, null, {, NoType(), null, this, DeclarationKind.Class, C3, false)
|
||||
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, C3)
|
||||
listener: handleNoType({)
|
||||
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.NonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.NonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.NonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
listener: endClassMethod(null, this, (, null, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(class)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(class, }, class, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseClassOrNamedMixinApplication(class, null, null, null, null, null, null, null, null, class)
|
||||
listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
|
||||
ensureIdentifier(class, classOrMixinDeclaration)
|
||||
listener: handleIdentifier(C4, classOrMixinDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginClassDeclaration(class, null, null, null, null, null, null, null, null, C4)
|
||||
parseClass(C4, class, class, null, C4)
|
||||
parsePrimaryConstructorOpt(C4, null, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(C4, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, false)
|
||||
parseClassHeaderOpt(), class, class)
|
||||
parseClassExtendsOpt(), DeclarationHeaderKind.Class)
|
||||
listener: handleNoType())
|
||||
listener: handleClassExtends(null, 1)
|
||||
parseClassWithClauseOpt())
|
||||
listener: handleClassNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleClassHeader(class, class, null)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.Class, C4)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, C4)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parseMethod({, null, null, null, null, null, null, null, {, NoType(), null, this, DeclarationKind.Class, C4, false)
|
||||
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, C4)
|
||||
listener: handleNoType({)
|
||||
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.NonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.NonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.NonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
reportRecoverableError(this, ConstructorWithWrongName)
|
||||
listener: handleRecoverableError(ConstructorWithWrongName, this, this)
|
||||
listener: endClassConstructor(null, this, (, :, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 1, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
reportAllErrorTokens(class)
|
||||
listener: endCompilationUnit(4, )
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
class C1() {
|
||||
this() {}
|
||||
}
|
||||
|
||||
class C2() {
|
||||
this(int x) : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
class C3() {
|
||||
this();
|
||||
}
|
||||
|
||||
class C4() {
|
||||
this(int x) : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
class[KeywordToken] C1[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C2[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C3[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C4[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
class C1() {
|
||||
this() {}
|
||||
}
|
||||
|
||||
class C2() {
|
||||
this(int x) : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
class C3() {
|
||||
this();
|
||||
}
|
||||
|
||||
class C4() {
|
||||
this(int x) : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
class[KeywordToken] C1[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C2[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C3[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
class[KeywordToken] C4[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
enum const E1() {
|
||||
e;
|
||||
this {}
|
||||
}
|
||||
|
||||
enum const E2() {
|
||||
e;
|
||||
this : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
enum const E3() {
|
||||
e;
|
||||
this;
|
||||
}
|
||||
|
||||
enum const E4() {
|
||||
e;
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
beginCompilationUnit(enum)
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E1, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E1)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(e)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(e, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference(;)
|
||||
beginConstructorReference(e)
|
||||
handleNoTypeArguments(;)
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(e)
|
||||
endConstructorReference(e, null, e, ConstructorReferenceContext.Const)
|
||||
handleNoArguments(e)
|
||||
handleEnumElement({, null)
|
||||
handleEnumElements(;, 1)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
endPrimaryConstructorBody(this, this, })
|
||||
endMember()
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 1, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E2, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E2)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(e)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(e, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference(;)
|
||||
beginConstructorReference(e)
|
||||
handleNoTypeArguments(;)
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(e)
|
||||
endConstructorReference(e, null, e, ConstructorReferenceContext.Const)
|
||||
handleNoArguments(e)
|
||||
handleEnumElement({, null)
|
||||
handleEnumElements(;, 1)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
endPrimaryConstructorBody(this, this, })
|
||||
endMember()
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 1, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E3, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E3)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(e)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(e, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference(;)
|
||||
beginConstructorReference(e)
|
||||
handleNoTypeArguments(;)
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(e)
|
||||
endConstructorReference(e, null, e, ConstructorReferenceContext.Const)
|
||||
handleNoArguments(e)
|
||||
handleEnumElement({, null)
|
||||
handleEnumElements(;, 1)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
endPrimaryConstructorBody(this, this, ;)
|
||||
endMember()
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 1, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E4, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E4)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(e)
|
||||
endMetadataStar(0)
|
||||
handleIdentifier(e, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference(;)
|
||||
beginConstructorReference(e)
|
||||
handleNoTypeArguments(;)
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(e)
|
||||
endConstructorReference(e, null, e, ConstructorReferenceContext.Const)
|
||||
handleNoArguments(e)
|
||||
handleEnumElement({, null)
|
||||
handleEnumElements(;, 1)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
endPrimaryConstructorBody(this, this, ;)
|
||||
endMember()
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 1, })
|
||||
endTopLevelDeclaration(})
|
||||
endCompilationUnit(4, )
|
||||
+300
@@ -0,0 +1,300 @@
|
||||
parseUnit(enum)
|
||||
skipErrorTokens(enum)
|
||||
listener: beginCompilationUnit(enum)
|
||||
syntheticPreviousToken(enum)
|
||||
parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
|
||||
parseMetadataStar()
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, , enum, null, null, null, null, DirectiveContext(DirectiveState.Unknown))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E1, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E1)
|
||||
parsePrimaryConstructorOpt(E1, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E1, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(e)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
listener: handleIdentifier(e, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference(;)
|
||||
listener: beginConstructorReference(e)
|
||||
listener: handleNoTypeArguments(;)
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(e)
|
||||
listener: endConstructorReference(e, null, e, ConstructorReferenceContext.Const)
|
||||
listener: handleNoArguments(e)
|
||||
listener: handleEnumElement({, null)
|
||||
listener: handleEnumElements(;, 1)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E1)
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt(this)
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(this, false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
listener: endPrimaryConstructorBody(this, this, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 1, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, }, enum, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E2, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E2)
|
||||
parsePrimaryConstructorOpt(E2, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E2, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(e)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
listener: handleIdentifier(e, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference(;)
|
||||
listener: beginConstructorReference(e)
|
||||
listener: handleNoTypeArguments(;)
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(e)
|
||||
listener: endConstructorReference(e, null, e, ConstructorReferenceContext.Const)
|
||||
listener: handleNoArguments(e)
|
||||
listener: handleEnumElement({, null)
|
||||
listener: handleEnumElements(;, 1)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E2)
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
listener: endPrimaryConstructorBody(this, this, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 1, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, }, enum, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E3, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E3)
|
||||
parsePrimaryConstructorOpt(E3, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E3, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(e)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
listener: handleIdentifier(e, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference(;)
|
||||
listener: beginConstructorReference(e)
|
||||
listener: handleNoTypeArguments(;)
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(e)
|
||||
listener: endConstructorReference(e, null, e, ConstructorReferenceContext.Const)
|
||||
listener: handleNoArguments(e)
|
||||
listener: handleEnumElement({, null)
|
||||
listener: handleEnumElements(;, 1)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E3)
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt(this)
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(this, false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
listener: endPrimaryConstructorBody(this, this, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 1, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, }, enum, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E4, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E4)
|
||||
parsePrimaryConstructorOpt(E4, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E4, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(e)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
listener: handleIdentifier(e, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference(;)
|
||||
listener: beginConstructorReference(e)
|
||||
listener: handleNoTypeArguments(;)
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(e)
|
||||
listener: endConstructorReference(e, null, e, ConstructorReferenceContext.Const)
|
||||
listener: handleNoArguments(e)
|
||||
listener: handleEnumElement({, null)
|
||||
listener: handleEnumElements(;, 1)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Enum, E4)
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
listener: endPrimaryConstructorBody(this, this, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 1, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
reportAllErrorTokens(enum)
|
||||
listener: endCompilationUnit(4, )
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
enum const E1() {
|
||||
e;
|
||||
this {}
|
||||
}
|
||||
|
||||
enum const E2() {
|
||||
e;
|
||||
this : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
enum const E3() {
|
||||
e;
|
||||
this;
|
||||
}
|
||||
|
||||
enum const E4() {
|
||||
e;
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E1[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
e[StringToken];[SimpleToken]
|
||||
this[KeywordToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E2[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
e[StringToken];[SimpleToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E3[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
e[StringToken];[SimpleToken]
|
||||
this[KeywordToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E4[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
e[StringToken];[SimpleToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
enum const E1() {
|
||||
e;
|
||||
this {}
|
||||
}
|
||||
|
||||
enum const E2() {
|
||||
e;
|
||||
this : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
enum const E3() {
|
||||
e;
|
||||
this;
|
||||
}
|
||||
|
||||
enum const E4() {
|
||||
e;
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E1[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
e[StringToken];[SimpleToken]
|
||||
this[KeywordToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E2[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
e[StringToken];[SimpleToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E3[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
e[StringToken];[SimpleToken]
|
||||
this[KeywordToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E4[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
e[StringToken];[SimpleToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
enum const E1() {
|
||||
this() {}
|
||||
}
|
||||
|
||||
enum const E2() {
|
||||
this(int x) : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
enum const E3() {
|
||||
this();
|
||||
}
|
||||
|
||||
enum const E4() {
|
||||
this(int x) : assert(1 > 2);
|
||||
}
|
||||
|
||||
enum const E5() { // missing constants
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
|
||||
enum const E6() { // missing constants
|
||||
this {}
|
||||
}
|
||||
+257
@@ -0,0 +1,257 @@
|
||||
Problems reported:
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:2:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this() {}
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:2:10: Expected '}' before this.
|
||||
this() {}
|
||||
^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:6:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this(int x) : assert(1 > 2) {}
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:6:12: Expected ',' before this.
|
||||
this(int x) : assert(1 > 2) {}
|
||||
^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:6:15: Expected '}' before this.
|
||||
this(int x) : assert(1 > 2) {}
|
||||
^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:10:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this();
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:14:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this(int x) : assert(1 > 2);
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:14:12: Expected ',' before this.
|
||||
this(int x) : assert(1 > 2);
|
||||
^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:14:15: Expected '}' before this.
|
||||
this(int x) : assert(1 > 2);
|
||||
^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:18:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this : assert(1 > 2);
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:18:8: Expected '}' before this.
|
||||
this : assert(1 > 2);
|
||||
^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:22:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this {}
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/enum_primary_constructor_body_error:22:8: Expected '}' before this.
|
||||
this {}
|
||||
^
|
||||
|
||||
beginCompilationUnit(enum)
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E1, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E1)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference(()
|
||||
beginConstructorReference(this)
|
||||
handleNoTypeArguments(()
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
beginArguments(()
|
||||
endArguments(0, (, ))
|
||||
handleEnumElement({, null)
|
||||
handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], {, {)
|
||||
handleEnumElements(}, 1)
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 0, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E2, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E2)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference(()
|
||||
beginConstructorReference(this)
|
||||
handleNoTypeArguments(()
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
beginArguments(()
|
||||
handleIdentifier(int, expression)
|
||||
handleNoTypeArguments(x)
|
||||
handleNoArguments(x)
|
||||
handleSend(int, int)
|
||||
handleRecoverableError(Message[Template(ExpectedButGot), Expected ',' before this., null, {string: ,}], x, x)
|
||||
handleIdentifier(x, expression)
|
||||
handleNoTypeArguments())
|
||||
handleNoArguments())
|
||||
handleSend(x, x)
|
||||
endArguments(2, (, ))
|
||||
handleEnumElement({, null)
|
||||
handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], :, :)
|
||||
handleEnumElements(}, 1)
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 0, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E3, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E3)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference(()
|
||||
beginConstructorReference(this)
|
||||
handleNoTypeArguments(()
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
beginArguments(()
|
||||
endArguments(0, (, ))
|
||||
handleEnumElement({, null)
|
||||
handleEnumElements(;, 1)
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 0, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E4, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E4)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference(()
|
||||
beginConstructorReference(this)
|
||||
handleNoTypeArguments(()
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
beginArguments(()
|
||||
handleIdentifier(int, expression)
|
||||
handleNoTypeArguments(x)
|
||||
handleNoArguments(x)
|
||||
handleSend(int, int)
|
||||
handleRecoverableError(Message[Template(ExpectedButGot), Expected ',' before this., null, {string: ,}], x, x)
|
||||
handleIdentifier(x, expression)
|
||||
handleNoTypeArguments())
|
||||
handleNoArguments())
|
||||
handleSend(x, x)
|
||||
endArguments(2, (, ))
|
||||
handleEnumElement({, null)
|
||||
handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], :, :)
|
||||
handleEnumElements(}, 1)
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 0, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E5, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E5)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference(:)
|
||||
beginConstructorReference(this)
|
||||
handleNoTypeArguments(:)
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
handleNoArguments(this)
|
||||
handleEnumElement({, null)
|
||||
handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], :, :)
|
||||
handleEnumElements(}, 1)
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 0, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(enum)
|
||||
endMetadataStar(0)
|
||||
beginEnumDeclarationPrelude(enum)
|
||||
handleIdentifier(E6, enumDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginEnumDeclaration(enum, null, enum, E6)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, const, false, false)
|
||||
handleEnumNoWithClause()
|
||||
handleImplements(null, 0)
|
||||
handleEnumHeader(null, enum, {)
|
||||
beginEnumBody({)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, enumValueDeclaration)
|
||||
handleNoTypeNameInConstructorReference({)
|
||||
beginConstructorReference(this)
|
||||
handleNoTypeArguments({)
|
||||
handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
handleNoArguments(this)
|
||||
handleEnumElement({, null)
|
||||
handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], {, {)
|
||||
handleEnumElements(}, 1)
|
||||
endEnumBody({, })
|
||||
endEnumDeclaration(enum, enum, {, 0, })
|
||||
endTopLevelDeclaration(})
|
||||
endCompilationUnit(6, )
|
||||
+343
@@ -0,0 +1,343 @@
|
||||
parseUnit(enum)
|
||||
skipErrorTokens(enum)
|
||||
listener: beginCompilationUnit(enum)
|
||||
syntheticPreviousToken(enum)
|
||||
parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
|
||||
parseMetadataStar()
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, , enum, null, null, null, null, DirectiveContext(DirectiveState.Unknown))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E1, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E1)
|
||||
parsePrimaryConstructorOpt(E1, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E1, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference(()
|
||||
listener: beginConstructorReference(this)
|
||||
listener: handleNoTypeArguments(()
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
listener: endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
parseConstructorInvocationArguments(this)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
listener: endArguments(0, (, ))
|
||||
listener: handleEnumElement({, null)
|
||||
reportRecoverableError({, Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], {, {)
|
||||
listener: handleEnumElements(}, 1)
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 0, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, }, enum, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E2, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E2)
|
||||
parsePrimaryConstructorOpt(E2, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E2, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference(()
|
||||
listener: beginConstructorReference(this)
|
||||
listener: handleNoTypeArguments(()
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
listener: endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
parseConstructorInvocationArguments(this)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
allowedToShortcutParseExpression()
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
skipObjectPatternRest(int)
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(int, expression)
|
||||
listener: handleNoTypeArguments(x)
|
||||
parseArgumentsOpt(int)
|
||||
listener: handleNoArguments(x)
|
||||
listener: handleSend(int, int)
|
||||
rewriteAndRecover(int, Message[Template(ExpectedButGot), Expected ',' before this., null, {string: ,}], ,)
|
||||
reportRecoverableError(x, Message[Template(ExpectedButGot), Expected ',' before this., null, {string: ,}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedButGot), Expected ',' before this., null, {string: ,}], x, x)
|
||||
rewriter()
|
||||
allowedToShortcutParseExpression()
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments())
|
||||
listener: handleNoArguments())
|
||||
listener: handleSend(x, x)
|
||||
listener: endArguments(2, (, ))
|
||||
listener: handleEnumElement({, null)
|
||||
reportRecoverableError(:, Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], :, :)
|
||||
listener: handleEnumElements(}, 1)
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 0, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, }, enum, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E3, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E3)
|
||||
parsePrimaryConstructorOpt(E3, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E3, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference(()
|
||||
listener: beginConstructorReference(this)
|
||||
listener: handleNoTypeArguments(()
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
listener: endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
parseConstructorInvocationArguments(this)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
listener: endArguments(0, (, ))
|
||||
listener: handleEnumElement({, null)
|
||||
listener: handleEnumElements(;, 1)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 0, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, }, enum, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E4, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E4)
|
||||
parsePrimaryConstructorOpt(E4, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E4, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference(()
|
||||
listener: beginConstructorReference(this)
|
||||
listener: handleNoTypeArguments(()
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
listener: endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
parseConstructorInvocationArguments(this)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
allowedToShortcutParseExpression()
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
skipObjectPatternRest(int)
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(int, expression)
|
||||
listener: handleNoTypeArguments(x)
|
||||
parseArgumentsOpt(int)
|
||||
listener: handleNoArguments(x)
|
||||
listener: handleSend(int, int)
|
||||
rewriteAndRecover(int, Message[Template(ExpectedButGot), Expected ',' before this., null, {string: ,}], ,)
|
||||
reportRecoverableError(x, Message[Template(ExpectedButGot), Expected ',' before this., null, {string: ,}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedButGot), Expected ',' before this., null, {string: ,}], x, x)
|
||||
rewriter()
|
||||
allowedToShortcutParseExpression()
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments())
|
||||
listener: handleNoArguments())
|
||||
listener: handleSend(x, x)
|
||||
listener: endArguments(2, (, ))
|
||||
listener: handleEnumElement({, null)
|
||||
reportRecoverableError(:, Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], :, :)
|
||||
listener: handleEnumElements(}, 1)
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 0, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, }, enum, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E5, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E5)
|
||||
parsePrimaryConstructorOpt(E5, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E5, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference(:)
|
||||
listener: beginConstructorReference(this)
|
||||
listener: handleNoTypeArguments(:)
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
listener: endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
listener: handleNoArguments(this)
|
||||
listener: handleEnumElement({, null)
|
||||
reportRecoverableError(:, Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], :, :)
|
||||
listener: handleEnumElements(}, 1)
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 0, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(enum)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(enum, }, enum, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseEnum(enum, null, enum)
|
||||
listener: beginEnumDeclarationPrelude(enum)
|
||||
ensureIdentifier(const, enumDeclaration)
|
||||
listener: handleIdentifier(E6, enumDeclaration)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginEnumDeclaration(enum, null, enum, E6)
|
||||
parsePrimaryConstructorOpt(E6, const, false)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E6, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(0, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, const, false, false)
|
||||
parseEnumHeaderOpt(), enum)
|
||||
parseEnumWithClauseOpt())
|
||||
listener: handleEnumNoWithClause()
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
listener: handleEnumHeader(null, enum, {)
|
||||
listener: beginEnumBody({)
|
||||
parseEnumElement({)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
ensureIdentifier({, enumValueDeclaration)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, enumValueDeclaration)
|
||||
listener: handleNoTypeNameInConstructorReference({)
|
||||
listener: beginConstructorReference(this)
|
||||
listener: handleNoTypeArguments({)
|
||||
listener: handleNoConstructorReferenceContinuationAfterTypeArguments(this)
|
||||
listener: endConstructorReference(this, null, this, ConstructorReferenceContext.Const)
|
||||
listener: handleNoArguments(this)
|
||||
listener: handleEnumElement({, null)
|
||||
reportRecoverableError({, Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedButGot), Expected '}' before this., null, {string: }}], {, {)
|
||||
listener: handleEnumElements(}, 1)
|
||||
listener: endEnumBody({, })
|
||||
listener: endEnumDeclaration(enum, enum, {, 0, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
reportAllErrorTokens(enum)
|
||||
listener: endCompilationUnit(6, )
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
NOTICE: Stream was rewritten by parser!
|
||||
|
||||
enum const E1() {
|
||||
this() {}
|
||||
}
|
||||
|
||||
enum const E2() {
|
||||
this(int ,x) : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
enum const E3() {
|
||||
this();
|
||||
}
|
||||
|
||||
enum const E4() {
|
||||
this(int ,x) : assert(1 > 2);
|
||||
}
|
||||
|
||||
enum const E5() {
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
|
||||
enum const E6() {
|
||||
this {}
|
||||
}
|
||||
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E1[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E2[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]int[StringToken] ,[SyntheticToken]x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E3[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E4[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]int[StringToken] ,[SyntheticToken]x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E5[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E6[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
enum const E1() {
|
||||
this() {}
|
||||
}
|
||||
|
||||
enum const E2() {
|
||||
this(int x) : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
enum const E3() {
|
||||
this();
|
||||
}
|
||||
|
||||
enum const E4() {
|
||||
this(int x) : assert(1 > 2);
|
||||
}
|
||||
|
||||
enum const E5() {
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
|
||||
enum const E6() {
|
||||
this {}
|
||||
}
|
||||
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E1[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E2[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E3[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E4[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E5[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
enum[KeywordToken] const[KeywordToken] E6[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
extension type E1(int x) {
|
||||
this {}
|
||||
}
|
||||
|
||||
extension type E2(int x) {
|
||||
this : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
extension type E3(int x) {
|
||||
this;
|
||||
}
|
||||
|
||||
extension type E4(int x) {
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
+150
@@ -0,0 +1,150 @@
|
||||
beginCompilationUnit(extension)
|
||||
beginMetadataStar(extension)
|
||||
endMetadataStar(0)
|
||||
beginExtensionDeclarationPrelude(extension)
|
||||
handleNoTypeVariables(()
|
||||
beginExtensionTypeDeclaration(null, extension, E1)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, true)
|
||||
handleImplements(null, 0)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
endPrimaryConstructorBody(this, this, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(extension)
|
||||
endMetadataStar(0)
|
||||
beginExtensionDeclarationPrelude(extension)
|
||||
handleNoTypeVariables(()
|
||||
beginExtensionTypeDeclaration(null, extension, E2)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, true)
|
||||
handleImplements(null, 0)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
endPrimaryConstructorBody(this, this, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(extension)
|
||||
endMetadataStar(0)
|
||||
beginExtensionDeclarationPrelude(extension)
|
||||
handleNoTypeVariables(()
|
||||
beginExtensionTypeDeclaration(null, extension, E3)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, true)
|
||||
handleImplements(null, 0)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
endPrimaryConstructorBody(this, this, ;)
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(extension)
|
||||
endMetadataStar(0)
|
||||
beginExtensionDeclarationPrelude(extension)
|
||||
handleNoTypeVariables(()
|
||||
beginExtensionTypeDeclaration(null, extension, E4)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, true)
|
||||
handleImplements(null, 0)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginPrimaryConstructorBody(this)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
endPrimaryConstructorBody(this, this, ;)
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
endTopLevelDeclaration(})
|
||||
endCompilationUnit(4, )
|
||||
+276
@@ -0,0 +1,276 @@
|
||||
parseUnit(extension)
|
||||
skipErrorTokens(extension)
|
||||
listener: beginCompilationUnit(extension)
|
||||
syntheticPreviousToken(extension)
|
||||
parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
|
||||
parseMetadataStar()
|
||||
listener: beginMetadataStar(extension)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(extension, , extension, null, null, null, null, DirectiveContext(DirectiveState.Unknown))
|
||||
parseExtension(extension, null, extension)
|
||||
listener: beginExtensionDeclarationPrelude(extension)
|
||||
parseExtensionTypeDeclaration(extension, type, null, extension, type)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginExtensionTypeDeclaration(null, extension, E1)
|
||||
parsePrimaryConstructorOpt(E1, null, true)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E1, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, true)
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.ExtensionType, E1)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.ExtensionType, E1)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt(this)
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(this, false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
listener: endPrimaryConstructorBody(this, this, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
listener: endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(extension)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(extension, }, extension, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseExtension(extension, null, extension)
|
||||
listener: beginExtensionDeclarationPrelude(extension)
|
||||
parseExtensionTypeDeclaration(extension, type, null, extension, type)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginExtensionTypeDeclaration(null, extension, E2)
|
||||
parsePrimaryConstructorOpt(E2, null, true)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E2, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, true)
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.ExtensionType, E2)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.ExtensionType, E2)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
listener: endPrimaryConstructorBody(this, this, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
listener: endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(extension)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(extension, }, extension, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseExtension(extension, null, extension)
|
||||
listener: beginExtensionDeclarationPrelude(extension)
|
||||
parseExtensionTypeDeclaration(extension, type, null, extension, type)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginExtensionTypeDeclaration(null, extension, E3)
|
||||
parsePrimaryConstructorOpt(E3, null, true)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E3, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, true)
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.ExtensionType, E3)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.ExtensionType, E3)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt(this)
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(this, false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
listener: endPrimaryConstructorBody(this, this, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
listener: endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(extension)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(extension, }, extension, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseExtension(extension, null, extension)
|
||||
listener: beginExtensionDeclarationPrelude(extension)
|
||||
parseExtensionTypeDeclaration(extension, type, null, extension, type)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginExtensionTypeDeclaration(null, extension, E4)
|
||||
parsePrimaryConstructorOpt(E4, null, true)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E4, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, true)
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.ExtensionType, E4)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.ExtensionType, E4)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parsePrimaryConstructorBody(this)
|
||||
listener: beginPrimaryConstructorBody(this)
|
||||
parseInitializersOpt(this)
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
listener: endPrimaryConstructorBody(this, this, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
listener: endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
reportAllErrorTokens(extension)
|
||||
listener: endCompilationUnit(4, )
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
extension type E1(int x) {
|
||||
this {}
|
||||
}
|
||||
|
||||
extension type E2(int x) {
|
||||
this : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
extension type E3(int x) {
|
||||
this;
|
||||
}
|
||||
|
||||
extension type E4(int x) {
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
extension[KeywordToken] type[StringToken] E1[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E2[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E3[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E4[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
extension type E1(int x) {
|
||||
this {}
|
||||
}
|
||||
|
||||
extension type E2(int x) {
|
||||
this : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
extension type E3(int x) {
|
||||
this;
|
||||
}
|
||||
|
||||
extension type E4(int x) {
|
||||
this : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
extension[KeywordToken] type[StringToken] E1[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E2[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E3[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E4[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
extension type E1(int x) {
|
||||
this(this.x) {}
|
||||
}
|
||||
|
||||
extension type E2(int x) {
|
||||
this(this.x) : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
extension type E3(int x) {
|
||||
this(this.x) ;
|
||||
}
|
||||
|
||||
extension type E4(int x) {
|
||||
this(this.x) : assert(1 > 2);
|
||||
}
|
||||
+235
@@ -0,0 +1,235 @@
|
||||
Problems reported:
|
||||
|
||||
parser/declaring_constructors/extension_type_primary_constructor_body_error:2:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this(this.x) {}
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/extension_type_primary_constructor_body_error:6:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this(this.x) : assert(1 > 2) {}
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/extension_type_primary_constructor_body_error:6:3: The name of a constructor must match the name of the enclosing class.
|
||||
this(this.x) : assert(1 > 2) {}
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/extension_type_primary_constructor_body_error:10:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this(this.x) ;
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/extension_type_primary_constructor_body_error:10:3: Extension types can't declare abstract members.
|
||||
this(this.x) ;
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/extension_type_primary_constructor_body_error:14:3: 'this' can't be used as an identifier because it's a keyword.
|
||||
this(this.x) : assert(1 > 2);
|
||||
^^^^
|
||||
|
||||
parser/declaring_constructors/extension_type_primary_constructor_body_error:14:3: The name of a constructor must match the name of the enclosing class.
|
||||
this(this.x) : assert(1 > 2);
|
||||
^^^^
|
||||
|
||||
beginCompilationUnit(extension)
|
||||
beginMetadataStar(extension)
|
||||
endMetadataStar(0)
|
||||
beginExtensionDeclarationPrelude(extension)
|
||||
handleNoTypeVariables(()
|
||||
beginExtensionTypeDeclaration(null, extension, E1)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, true)
|
||||
handleImplements(null, 0)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.ExtensionType, null, null, null, null, null, null, this, E1)
|
||||
handleNoType({)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(this, MemberKind.ExtensionTypeNonStaticMethod, null, null, null)
|
||||
handleNoType(()
|
||||
handleIdentifier(x, fieldInitializer)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
endFormalParameters(1, (, ), MemberKind.ExtensionTypeNonStaticMethod)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
endExtensionTypeMethod(null, this, (, null, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(extension)
|
||||
endMetadataStar(0)
|
||||
beginExtensionDeclarationPrelude(extension)
|
||||
handleNoTypeVariables(()
|
||||
beginExtensionTypeDeclaration(null, extension, E2)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, true)
|
||||
handleImplements(null, 0)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.ExtensionType, null, null, null, null, null, null, this, E2)
|
||||
handleNoType({)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(this, MemberKind.ExtensionTypeNonStaticMethod, null, null, null)
|
||||
handleNoType(()
|
||||
handleIdentifier(x, fieldInitializer)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
endFormalParameters(1, (, ), MemberKind.ExtensionTypeNonStaticMethod)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
beginBlockFunctionBody({)
|
||||
endBlockFunctionBody(0, {, })
|
||||
handleRecoverableError(ConstructorWithWrongName, this, this)
|
||||
endExtensionTypeConstructor(null, this, (, :, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(extension)
|
||||
endMetadataStar(0)
|
||||
beginExtensionDeclarationPrelude(extension)
|
||||
handleNoTypeVariables(()
|
||||
beginExtensionTypeDeclaration(null, extension, E3)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, true)
|
||||
handleImplements(null, 0)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.ExtensionType, null, null, null, null, null, null, this, E3)
|
||||
handleNoType({)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(this, MemberKind.ExtensionTypeNonStaticMethod, null, null, null)
|
||||
handleNoType(()
|
||||
handleIdentifier(x, fieldInitializer)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
endFormalParameters(1, (, ), MemberKind.ExtensionTypeNonStaticMethod)
|
||||
handleNoInitializers()
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
handleRecoverableError(ExtensionTypeDeclaresAbstractMember, this, this)
|
||||
endExtensionTypeMethod(null, this, (, null, ;)
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
endTopLevelDeclaration(})
|
||||
beginMetadataStar(extension)
|
||||
endMetadataStar(0)
|
||||
beginExtensionDeclarationPrelude(extension)
|
||||
handleNoTypeVariables(()
|
||||
beginExtensionTypeDeclaration(null, extension, E4)
|
||||
beginPrimaryConstructor(()
|
||||
beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(x)
|
||||
handleType(int, null)
|
||||
handleIdentifier(x, formalParameterDeclaration)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
endPrimaryConstructor((, null, false, true)
|
||||
handleImplements(null, 0)
|
||||
beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.ExtensionType, null, null, null, null, null, null, this, E4)
|
||||
handleNoType({)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
beginMetadataStar(this)
|
||||
endMetadataStar(0)
|
||||
beginFormalParameter(this, MemberKind.ExtensionTypeNonStaticMethod, null, null, null)
|
||||
handleNoType(()
|
||||
handleIdentifier(x, fieldInitializer)
|
||||
handleFormalParameterWithoutValue())
|
||||
endFormalParameter(null, this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
endFormalParameters(1, (, ), MemberKind.ExtensionTypeNonStaticMethod)
|
||||
beginInitializers(:)
|
||||
beginInitializer(assert)
|
||||
beginAssert(assert, Assert.Initializer)
|
||||
handleLiteralInt(1)
|
||||
beginBinaryExpression(>)
|
||||
handleLiteralInt(2)
|
||||
endBinaryExpression(>, 2)
|
||||
endAssert(assert, Assert.Initializer, (, null, ))
|
||||
endInitializer())
|
||||
endInitializers(1, :, ))
|
||||
handleAsyncModifier(null, null)
|
||||
handleEmptyFunctionBody(;)
|
||||
handleRecoverableError(ConstructorWithWrongName, this, this)
|
||||
endExtensionTypeConstructor(null, this, (, :, ;)
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
endTopLevelDeclaration(})
|
||||
endCompilationUnit(4, )
|
||||
+374
@@ -0,0 +1,374 @@
|
||||
parseUnit(extension)
|
||||
skipErrorTokens(extension)
|
||||
listener: beginCompilationUnit(extension)
|
||||
syntheticPreviousToken(extension)
|
||||
parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
|
||||
parseMetadataStar()
|
||||
listener: beginMetadataStar(extension)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(extension, , extension, null, null, null, null, DirectiveContext(DirectiveState.Unknown))
|
||||
parseExtension(extension, null, extension)
|
||||
listener: beginExtensionDeclarationPrelude(extension)
|
||||
parseExtensionTypeDeclaration(extension, type, null, extension, type)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginExtensionTypeDeclaration(null, extension, E1)
|
||||
parsePrimaryConstructorOpt(E1, null, true)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E1, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, true)
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.ExtensionType, E1)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.ExtensionType, E1)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parseMethod({, null, null, null, null, null, null, null, {, NoType(), null, this, DeclarationKind.ExtensionType, E1, false)
|
||||
listener: beginMethod(DeclarationKind.ExtensionType, null, null, null, null, null, null, this, E1)
|
||||
listener: handleNoType({)
|
||||
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(this, MemberKind.ExtensionTypeNonStaticMethod, null, null, null)
|
||||
listener: handleNoType(()
|
||||
ensureIdentifier(., fieldInitializer)
|
||||
listener: handleIdentifier(x, fieldInitializer)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
listener: endExtensionTypeMethod(null, this, (, null, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
listener: endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(extension)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(extension, }, extension, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseExtension(extension, null, extension)
|
||||
listener: beginExtensionDeclarationPrelude(extension)
|
||||
parseExtensionTypeDeclaration(extension, type, null, extension, type)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginExtensionTypeDeclaration(null, extension, E2)
|
||||
parsePrimaryConstructorOpt(E2, null, true)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E2, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, true)
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.ExtensionType, E2)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.ExtensionType, E2)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parseMethod({, null, null, null, null, null, null, null, {, NoType(), null, this, DeclarationKind.ExtensionType, E2, false)
|
||||
listener: beginMethod(DeclarationKind.ExtensionType, null, null, null, null, null, null, this, E2)
|
||||
listener: handleNoType({)
|
||||
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(this, MemberKind.ExtensionTypeNonStaticMethod, null, null, null)
|
||||
listener: handleNoType(()
|
||||
ensureIdentifier(., fieldInitializer)
|
||||
listener: handleIdentifier(x, fieldInitializer)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(0, {, })
|
||||
reportRecoverableError(this, ConstructorWithWrongName)
|
||||
listener: handleRecoverableError(ConstructorWithWrongName, this, this)
|
||||
listener: endExtensionTypeConstructor(null, this, (, :, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
listener: endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(extension)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(extension, }, extension, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseExtension(extension, null, extension)
|
||||
listener: beginExtensionDeclarationPrelude(extension)
|
||||
parseExtensionTypeDeclaration(extension, type, null, extension, type)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginExtensionTypeDeclaration(null, extension, E3)
|
||||
parsePrimaryConstructorOpt(E3, null, true)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E3, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, true)
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.ExtensionType, E3)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.ExtensionType, E3)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parseMethod({, null, null, null, null, null, null, null, {, NoType(), null, this, DeclarationKind.ExtensionType, E3, false)
|
||||
listener: beginMethod(DeclarationKind.ExtensionType, null, null, null, null, null, null, this, E3)
|
||||
listener: handleNoType({)
|
||||
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(this, MemberKind.ExtensionTypeNonStaticMethod, null, null, null)
|
||||
listener: handleNoType(()
|
||||
ensureIdentifier(., fieldInitializer)
|
||||
listener: handleIdentifier(x, fieldInitializer)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
reportRecoverableError(this, ExtensionTypeDeclaresAbstractMember)
|
||||
listener: handleRecoverableError(ExtensionTypeDeclaresAbstractMember, this, this)
|
||||
listener: endExtensionTypeMethod(null, this, (, null, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
listener: endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
|
||||
parseMetadataStar(})
|
||||
listener: beginMetadataStar(extension)
|
||||
listener: endMetadataStar(0)
|
||||
parseTopLevelKeywordDeclaration(extension, }, extension, null, null, null, null, DirectiveContext(DirectiveState.Declarations))
|
||||
parseExtension(extension, null, extension)
|
||||
listener: beginExtensionDeclarationPrelude(extension)
|
||||
parseExtensionTypeDeclaration(extension, type, null, extension, type)
|
||||
listener: handleNoTypeVariables(()
|
||||
listener: beginExtensionTypeDeclaration(null, extension, E4)
|
||||
parsePrimaryConstructorOpt(E4, null, true)
|
||||
listener: beginPrimaryConstructor(()
|
||||
parseFormalParameters(E4, MemberKind.PrimaryConstructor)
|
||||
parseFormalParametersRest((, MemberKind.PrimaryConstructor)
|
||||
listener: beginFormalParameters((, MemberKind.PrimaryConstructor)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.PrimaryConstructor, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.PrimaryConstructor)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.PrimaryConstructor)
|
||||
listener: endPrimaryConstructor((, null, false, true)
|
||||
parseClassOrMixinOrEnumImplementsOpt())
|
||||
listener: handleImplements(null, 0)
|
||||
parseClassOrMixinOrExtensionBody(), DeclarationKind.ExtensionType, E4)
|
||||
listener: beginClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, {)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, this)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.ExtensionType, E4)
|
||||
parseMetadataStar({)
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
parseMethod({, null, null, null, null, null, null, null, {, NoType(), null, this, DeclarationKind.ExtensionType, E4, false)
|
||||
listener: beginMethod(DeclarationKind.ExtensionType, null, null, null, null, null, null, this, E4)
|
||||
listener: handleNoType({)
|
||||
ensureIdentifierPotentiallyRecovered({, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(this)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(this, MemberKind.ExtensionTypeNonStaticMethod, null, null, null)
|
||||
listener: handleNoType(()
|
||||
ensureIdentifier(., fieldInitializer)
|
||||
listener: handleIdentifier(x, fieldInitializer)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, this, null, ., x, null, null, FormalParameterKind.requiredPositional, MemberKind.ExtensionTypeNonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.ExtensionTypeNonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
parseInitializers(:)
|
||||
listener: beginInitializers(:)
|
||||
parseInitializer(:)
|
||||
listener: beginInitializer(assert)
|
||||
parseAssert(:, Assert.Initializer)
|
||||
listener: beginAssert(assert, Assert.Initializer)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(()
|
||||
listener: handleLiteralInt(1)
|
||||
listener: beginBinaryExpression(>)
|
||||
parsePrecedenceExpression(>, 9, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(>, true, ConstantPatternContext.none)
|
||||
parsePrimary(>, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(>)
|
||||
listener: handleLiteralInt(2)
|
||||
listener: endBinaryExpression(>, 2)
|
||||
listener: endAssert(assert, Assert.Initializer, (, null, ))
|
||||
listener: endInitializer())
|
||||
listener: endInitializers(1, :, ))
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: handleEmptyFunctionBody(;)
|
||||
reportRecoverableError(this, ConstructorWithWrongName)
|
||||
listener: handleRecoverableError(ConstructorWithWrongName, this, this)
|
||||
listener: endExtensionTypeConstructor(null, this, (, :, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.ExtensionType, 1, {, })
|
||||
listener: endExtensionTypeDeclaration(extension, null, extension, type, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
reportAllErrorTokens(extension)
|
||||
listener: endCompilationUnit(4, )
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
extension type E1(int x) {
|
||||
this(this.x) {}
|
||||
}
|
||||
|
||||
extension type E2(int x) {
|
||||
this(this.x) : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
extension type E3(int x) {
|
||||
this(this.x) ;
|
||||
}
|
||||
|
||||
extension type E4(int x) {
|
||||
this(this.x) : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
extension[KeywordToken] type[StringToken] E1[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E2[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E3[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken] ;[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E4[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
extension type E1(int x) {
|
||||
this(this.x) {}
|
||||
}
|
||||
|
||||
extension type E2(int x) {
|
||||
this(this.x) : assert(1 > 2) {}
|
||||
}
|
||||
|
||||
extension type E3(int x) {
|
||||
this(this.x) ;
|
||||
}
|
||||
|
||||
extension type E4(int x) {
|
||||
this(this.x) : assert(1 > 2);
|
||||
}
|
||||
|
||||
|
||||
extension[KeywordToken] type[StringToken] E1[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E2[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken] {[BeginToken]}[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E3[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken] ;[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
extension[KeywordToken] type[StringToken] E4[StringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
this[KeywordToken]([BeginToken]this[KeywordToken].[SimpleToken]x[StringToken])[SimpleToken] :[SimpleToken] assert[KeywordToken]([BeginToken]1[StringToken] >[SimpleToken] 2[StringToken])[SimpleToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
[SimpleToken]
|
||||
+22
-23
@@ -1669,29 +1669,28 @@ parseUnit(class)
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
recoverFromInvalidMember(int, ;, null, null, null, null, null, null, null, ;, SimpleType(), null, DeclarationKind.Class, WrapperClass)
|
||||
parseFields(;, null, null, null, null, null, null, null, ;, SimpleType(), this, DeclarationKind.Class, WrapperClass, false)
|
||||
listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, ;)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(this)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, fieldDeclaration)
|
||||
parseFieldInitializerOpt(this, this, null, null, null, null, null, DeclarationKind.Class, WrapperClass)
|
||||
listener: beginFieldInitializer(=)
|
||||
parseExpression(=)
|
||||
looksLikeOuterPatternEquals(=)
|
||||
skipOuterPattern(=)
|
||||
parsePrecedenceExpression(=, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(=, true, ConstantPatternContext.none)
|
||||
parsePrimary(=, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(=)
|
||||
listener: handleLiteralInt(42)
|
||||
listener: endFieldInitializer(=, 42)
|
||||
listener: endClassFields(null, null, null, null, null, null, null, 1, int, ;)
|
||||
listener: endMember()
|
||||
parseFields(;, null, null, null, null, null, null, null, ;, SimpleType(), this, DeclarationKind.Class, WrapperClass, false)
|
||||
listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, ;)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(this)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, fieldDeclaration)
|
||||
parseFieldInitializerOpt(this, this, null, null, null, null, null, DeclarationKind.Class, WrapperClass)
|
||||
listener: beginFieldInitializer(=)
|
||||
parseExpression(=)
|
||||
looksLikeOuterPatternEquals(=)
|
||||
skipOuterPattern(=)
|
||||
parsePrecedenceExpression(=, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(=, true, ConstantPatternContext.none)
|
||||
parsePrimary(=, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(=)
|
||||
listener: handleLiteralInt(42)
|
||||
listener: endFieldInitializer(=, 42)
|
||||
listener: endClassFields(null, null, null, null, null, null, null, 1, int, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, int)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, WrapperClass)
|
||||
parseMetadataStar(;)
|
||||
|
||||
+4
-23
@@ -348,14 +348,6 @@ parser/error_recovery/keyword_named_class_methods:298:7: 'this' can't be used as
|
||||
int this(int x) {
|
||||
^^^^
|
||||
|
||||
parser/error_recovery/keyword_named_class_methods:298:7: Expected ';' after this.
|
||||
int this(int x) {
|
||||
^^^^
|
||||
|
||||
parser/error_recovery/keyword_named_class_methods:298:11: Expected an identifier, but got '('.
|
||||
int this(int x) {
|
||||
^
|
||||
|
||||
parser/error_recovery/keyword_named_class_methods:303:7: 'throw' can't be used as an identifier because it's a keyword.
|
||||
int throw(int x) {
|
||||
^^^^^
|
||||
@@ -4105,23 +4097,12 @@ beginCompilationUnit(class)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
|
||||
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, WrapperClass)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(this)
|
||||
handleType(int, null)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, fieldDeclaration)
|
||||
handleNoFieldInitializer(()
|
||||
handleRecoverableError(Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}], this, this)
|
||||
endClassFields(null, null, null, null, null, null, null, 1, int, ;)
|
||||
endMember()
|
||||
beginMetadataStar(()
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, (, WrapperClass)
|
||||
handleNoType(;)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifier), Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], (, ()
|
||||
handleIdentifier(, methodDeclaration)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
beginMetadataStar(int)
|
||||
@@ -4170,7 +4151,7 @@ beginCompilationUnit(class)
|
||||
endBinaryExpression(+, 1)
|
||||
endReturnStatement(true, return, ;)
|
||||
endBlockFunctionBody(2, {, })
|
||||
endClassMethod(null, , (, null, })
|
||||
endClassMethod(null, int, (, null, })
|
||||
endMember()
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
@@ -4778,7 +4759,7 @@ beginCompilationUnit(class)
|
||||
endBlockFunctionBody(2, {, })
|
||||
endClassMethod(null, int, (, null, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 71, {, })
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 70, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
endCompilationUnit(1, )
|
||||
|
||||
+132
-157
@@ -8915,163 +8915,138 @@ parseUnit(class)
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
recoverFromInvalidMember(int, }, null, null, null, null, null, null, null, }, SimpleType(), null, DeclarationKind.Class, WrapperClass)
|
||||
parseFields(}, null, null, null, null, null, null, null, }, SimpleType(), this, DeclarationKind.Class, WrapperClass, false)
|
||||
listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(this)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, fieldDeclaration)
|
||||
parseFieldInitializerOpt(this, this, null, null, null, null, null, DeclarationKind.Class, WrapperClass)
|
||||
listener: handleNoFieldInitializer(()
|
||||
ensureSemicolon(this)
|
||||
reportRecoverableError(this, Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}], this, this)
|
||||
rewriter()
|
||||
listener: endClassFields(null, null, null, null, null, null, null, 1, int, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, ()
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, WrapperClass)
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(()
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
recoverFromInvalidMember(;, ;, null, null, null, null, null, null, null, ;, NoType(), null, DeclarationKind.Class, WrapperClass)
|
||||
parseMethod(;, null, null, null, null, null, null, null, ;, NoType(), null, (, DeclarationKind.Class, WrapperClass, false)
|
||||
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, (, WrapperClass)
|
||||
listener: handleNoType(;)
|
||||
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
|
||||
insertSyntheticIdentifier(;, methodDeclaration, message: null, messageOnToken: null)
|
||||
reportRecoverableError((, Message[Template(ExpectedIdentifier), Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifier), Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], (, ()
|
||||
rewriter()
|
||||
listener: handleIdentifier(, methodDeclaration)
|
||||
parseQualifiedRestOpt(, methodDeclarationContinuation)
|
||||
parseMethodTypeVar()
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
|
||||
parseFormalParameters(, MemberKind.NonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.NonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
parseMethod(}, null, null, null, null, null, null, null, }, SimpleType(), null, this, DeclarationKind.Class, WrapperClass, false)
|
||||
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, WrapperClass)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(this)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.NonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.NonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.NonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, 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)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(==)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(==)
|
||||
listener: handleSend(x, x)
|
||||
listener: beginBinaryExpression(==)
|
||||
parsePrecedenceExpression(==, 8, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(==, true, ConstantPatternContext.none)
|
||||
parsePrimary(==, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(==)
|
||||
listener: handleLiteralInt(0)
|
||||
listener: endBinaryExpression(==, 0)
|
||||
ensureCloseParen(0, ()
|
||||
listener: handleParenthesizedCondition((, null, null)
|
||||
listener: beginThenStatement(return)
|
||||
parseStatement())
|
||||
parseStatementX())
|
||||
parseReturnStatement())
|
||||
listener: beginReturnStatement(return)
|
||||
parseExpression(return)
|
||||
parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(return, true, ConstantPatternContext.none)
|
||||
parsePrimary(return, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(return)
|
||||
listener: handleLiteralInt(42)
|
||||
ensureSemicolon(42)
|
||||
listener: endReturnStatement(true, return, ;)
|
||||
inGenerator()
|
||||
listener: endThenStatement(return, ;)
|
||||
listener: endIfStatement(if, null, ;)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, return)
|
||||
parseStatement(;)
|
||||
parseStatementX(;)
|
||||
parseReturnStatement(;)
|
||||
listener: beginReturnStatement(return)
|
||||
parseExpression(return)
|
||||
parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(return, true, ConstantPatternContext.none)
|
||||
parsePrimary(return, expression, ConstantPatternContext.none)
|
||||
parseThisExpression(return, expression)
|
||||
listener: handleThisExpression(this, expression)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArguments(this)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
allowedToShortcutParseExpression()
|
||||
parseExpression(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(-)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(-)
|
||||
listener: handleSend(x, x)
|
||||
listener: beginBinaryExpression(-)
|
||||
parsePrecedenceExpression(-, 14, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(-, true, ConstantPatternContext.none)
|
||||
parsePrimary(-, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(-)
|
||||
listener: handleLiteralInt(1)
|
||||
listener: endBinaryExpression(-, 1)
|
||||
listener: endArguments(1, (, ))
|
||||
listener: handleSend(this, ))
|
||||
listener: beginBinaryExpression(+)
|
||||
parsePrecedenceExpression(+, 14, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(+, true, ConstantPatternContext.none)
|
||||
parsePrimary(+, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(+)
|
||||
listener: handleLiteralInt(1)
|
||||
listener: endBinaryExpression(+, 1)
|
||||
ensureSemicolon(1)
|
||||
listener: endReturnStatement(true, return, ;)
|
||||
inGenerator()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(2, {, })
|
||||
listener: endClassMethod(null, , (, null, })
|
||||
listener: endMember()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, 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)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(==)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(==)
|
||||
listener: handleSend(x, x)
|
||||
listener: beginBinaryExpression(==)
|
||||
parsePrecedenceExpression(==, 8, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(==, true, ConstantPatternContext.none)
|
||||
parsePrimary(==, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(==)
|
||||
listener: handleLiteralInt(0)
|
||||
listener: endBinaryExpression(==, 0)
|
||||
ensureCloseParen(0, ()
|
||||
listener: handleParenthesizedCondition((, null, null)
|
||||
listener: beginThenStatement(return)
|
||||
parseStatement())
|
||||
parseStatementX())
|
||||
parseReturnStatement())
|
||||
listener: beginReturnStatement(return)
|
||||
parseExpression(return)
|
||||
parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(return, true, ConstantPatternContext.none)
|
||||
parsePrimary(return, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(return)
|
||||
listener: handleLiteralInt(42)
|
||||
ensureSemicolon(42)
|
||||
listener: endReturnStatement(true, return, ;)
|
||||
inGenerator()
|
||||
listener: endThenStatement(return, ;)
|
||||
listener: endIfStatement(if, null, ;)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, return)
|
||||
parseStatement(;)
|
||||
parseStatementX(;)
|
||||
parseReturnStatement(;)
|
||||
listener: beginReturnStatement(return)
|
||||
parseExpression(return)
|
||||
parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(return, true, ConstantPatternContext.none)
|
||||
parsePrimary(return, expression, ConstantPatternContext.none)
|
||||
parseThisExpression(return, expression)
|
||||
listener: handleThisExpression(this, expression)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArguments(this)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
allowedToShortcutParseExpression()
|
||||
parseExpression(()
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(-)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(-)
|
||||
listener: handleSend(x, x)
|
||||
listener: beginBinaryExpression(-)
|
||||
parsePrecedenceExpression(-, 14, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(-, true, ConstantPatternContext.none)
|
||||
parsePrimary(-, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(-)
|
||||
listener: handleLiteralInt(1)
|
||||
listener: endBinaryExpression(-, 1)
|
||||
listener: endArguments(1, (, ))
|
||||
listener: handleSend(this, ))
|
||||
listener: beginBinaryExpression(+)
|
||||
parsePrecedenceExpression(+, 14, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(+, true, ConstantPatternContext.none)
|
||||
parsePrimary(+, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(+)
|
||||
listener: handleLiteralInt(1)
|
||||
listener: endBinaryExpression(+, 1)
|
||||
ensureSemicolon(1)
|
||||
listener: endReturnStatement(true, return, ;)
|
||||
inGenerator()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(2, {, })
|
||||
listener: endClassMethod(null, int, (, null, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, int)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, WrapperClass)
|
||||
parseMetadataStar(})
|
||||
@@ -10613,7 +10588,7 @@ parseUnit(class)
|
||||
listener: endClassMethod(null, int, (, null, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 71, {, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 70, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
reportAllErrorTokens(class)
|
||||
|
||||
+2
-2
@@ -296,7 +296,7 @@ if (x == 0) return 42;
|
||||
return sync(x-1) + 1;
|
||||
}
|
||||
|
||||
int this;*synthetic*(int x) {
|
||||
int this(int x) {
|
||||
if (x == 0) return 42;
|
||||
return this(x-1) + 1;
|
||||
}
|
||||
@@ -644,7 +644,7 @@ if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[Sim
|
||||
return[KeywordToken] sync[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
int[StringToken] this[KeywordToken];[SyntheticToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
int[StringToken] this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
|
||||
return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
+4
-23
@@ -336,14 +336,6 @@ parser/error_recovery/keyword_named_class_methods_2:297:7: 'this' can't be used
|
||||
int this(int x) {
|
||||
^^^^
|
||||
|
||||
parser/error_recovery/keyword_named_class_methods_2:297:7: Expected ';' after this.
|
||||
int this(int x) {
|
||||
^^^^
|
||||
|
||||
parser/error_recovery/keyword_named_class_methods_2:297:11: Expected an identifier, but got '('.
|
||||
int this(int x) {
|
||||
^
|
||||
|
||||
parser/error_recovery/keyword_named_class_methods_2:302:7: 'throw' can't be used as an identifier because it's a keyword.
|
||||
int throw(int x) {
|
||||
^^^^^
|
||||
@@ -4081,23 +4073,12 @@ beginCompilationUnit(class)
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
|
||||
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, WrapperClass)
|
||||
handleIdentifier(int, typeReference)
|
||||
handleNoTypeArguments(this)
|
||||
handleType(int, null)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
handleIdentifier(this, fieldDeclaration)
|
||||
handleNoFieldInitializer(()
|
||||
handleRecoverableError(Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}], this, this)
|
||||
endClassFields(null, null, null, null, null, null, null, 1, int, ;)
|
||||
endMember()
|
||||
beginMetadataStar(()
|
||||
endMetadataStar(0)
|
||||
beginMember()
|
||||
beginMethod(DeclarationKind.Class, null, null, null, null, null, null, (, WrapperClass)
|
||||
handleNoType(;)
|
||||
handleRecoverableError(Message[Template(ExpectedIdentifier), Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], (, ()
|
||||
handleIdentifier(, methodDeclaration)
|
||||
handleIdentifier(this, methodDeclaration)
|
||||
handleNoTypeVariables(()
|
||||
beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
beginMetadataStar(int)
|
||||
@@ -4146,7 +4127,7 @@ beginCompilationUnit(class)
|
||||
endBinaryExpression(+, 1)
|
||||
endReturnStatement(true, return, ;)
|
||||
endBlockFunctionBody(2, {, })
|
||||
endClassMethod(null, , (, null, })
|
||||
endClassMethod(null, int, (, null, })
|
||||
endMember()
|
||||
beginMetadataStar(int)
|
||||
endMetadataStar(0)
|
||||
@@ -4754,7 +4735,7 @@ beginCompilationUnit(class)
|
||||
endBlockFunctionBody(2, {, })
|
||||
endClassMethod(null, int, (, null, })
|
||||
endMember()
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 71, {, })
|
||||
endClassOrMixinOrExtensionBody(DeclarationKind.Class, 70, {, })
|
||||
endClassDeclaration(class, })
|
||||
endTopLevelDeclaration(})
|
||||
endCompilationUnit(1, )
|
||||
|
||||
+142
-167
@@ -9518,173 +9518,148 @@ parseUnit(class)
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
recoverFromInvalidMember(int, }, null, null, null, null, null, null, null, }, SimpleType(), null, DeclarationKind.Class, WrapperClass)
|
||||
parseFields(}, null, null, null, null, null, null, null, }, SimpleType(), this, DeclarationKind.Class, WrapperClass, false)
|
||||
listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(this)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifierPotentiallyRecovered(int, fieldDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, fieldDeclaration)
|
||||
parseFieldInitializerOpt(this, this, null, null, null, null, null, DeclarationKind.Class, WrapperClass)
|
||||
listener: handleNoFieldInitializer(()
|
||||
ensureSemicolon(this)
|
||||
reportRecoverableError(this, Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedAfterButGot), Expected ';' after this., null, {string: ;}], this, this)
|
||||
rewriter()
|
||||
listener: endClassFields(null, null, null, null, null, null, null, 1, int, ;)
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, ()
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, WrapperClass)
|
||||
parseMetadataStar(;)
|
||||
listener: beginMetadataStar(()
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginMember()
|
||||
recoverFromInvalidMember(;, ;, null, null, null, null, null, null, null, ;, NoType(), null, DeclarationKind.Class, WrapperClass)
|
||||
parseMethod(;, null, null, null, null, null, null, null, ;, NoType(), null, (, DeclarationKind.Class, WrapperClass, false)
|
||||
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, (, WrapperClass)
|
||||
listener: handleNoType(;)
|
||||
ensureIdentifierPotentiallyRecovered(;, methodDeclaration, false)
|
||||
insertSyntheticIdentifier(;, methodDeclaration, message: null, messageOnToken: null)
|
||||
reportRecoverableError((, Message[Template(ExpectedIdentifier), Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}])
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifier), Expected an identifier, but got '('., Try inserting an identifier before '('., {lexeme: (}], (, ()
|
||||
rewriter()
|
||||
listener: handleIdentifier(, methodDeclaration)
|
||||
parseQualifiedRestOpt(, methodDeclarationContinuation)
|
||||
parseMethodTypeVar()
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(, (, false, MemberKind.NonStaticMethod)
|
||||
parseFormalParameters(, MemberKind.NonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.NonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
parseMethod(}, null, null, null, null, null, null, null, }, SimpleType(), null, this, DeclarationKind.Class, WrapperClass, false)
|
||||
listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, this, WrapperClass)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(this)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
|
||||
reportRecoverableErrorWithToken(this, Template(ExpectedIdentifierButGotKeyword))
|
||||
listener: handleRecoverableError(Message[Template(ExpectedIdentifierButGotKeyword), 'this' can't be used as an identifier because it's a keyword., Try renaming this to be an identifier that isn't a keyword., {lexeme: this}], this, this)
|
||||
listener: handleIdentifier(this, methodDeclaration)
|
||||
parseQualifiedRestOpt(this, methodDeclarationContinuation)
|
||||
parseMethodTypeVar(this)
|
||||
listener: handleNoTypeVariables(()
|
||||
parseGetterOrFormalParameters(this, this, false, MemberKind.NonStaticMethod)
|
||||
parseFormalParameters(this, MemberKind.NonStaticMethod)
|
||||
parseFormalParametersRest((, MemberKind.NonStaticMethod)
|
||||
listener: beginFormalParameters((, MemberKind.NonStaticMethod)
|
||||
parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
parseMetadataStar(()
|
||||
listener: beginMetadataStar(int)
|
||||
listener: endMetadataStar(0)
|
||||
listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
|
||||
listener: handleIdentifier(int, typeReference)
|
||||
listener: handleNoTypeArguments(x)
|
||||
listener: handleType(int, null)
|
||||
ensureIdentifier(int, formalParameterDeclaration)
|
||||
listener: handleIdentifier(x, formalParameterDeclaration)
|
||||
listener: handleFormalParameterWithoutValue())
|
||||
listener: endFormalParameter(null, null, null, null, x, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
|
||||
listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
|
||||
parseInitializersOpt())
|
||||
listener: handleNoInitializers()
|
||||
parseAsyncModifierOpt())
|
||||
listener: handleAsyncModifier(null, null)
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, if)
|
||||
parseStatement({)
|
||||
parseStatementX({)
|
||||
parseIfStatement({)
|
||||
listener: beginIfStatement(if)
|
||||
ensureParenthesizedCondition(if, allowCase: true)
|
||||
parseExpressionInParenthesisRest((, allowCase: true)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
skipObjectPatternRest(x)
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(==)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(==)
|
||||
listener: handleSend(x, x)
|
||||
listener: beginBinaryExpression(==)
|
||||
parsePrecedenceExpression(==, 8, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(==, true, ConstantPatternContext.none)
|
||||
parsePrimary(==, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(==)
|
||||
listener: handleLiteralInt(0)
|
||||
listener: endBinaryExpression(==, 0)
|
||||
ensureCloseParen(0, ()
|
||||
listener: handleParenthesizedCondition((, null, null)
|
||||
listener: beginThenStatement(return)
|
||||
parseStatement())
|
||||
parseStatementX())
|
||||
parseReturnStatement())
|
||||
listener: beginReturnStatement(return)
|
||||
parseExpression(return)
|
||||
looksLikeOuterPatternEquals(return)
|
||||
skipOuterPattern(return)
|
||||
parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(return, true, ConstantPatternContext.none)
|
||||
parsePrimary(return, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(return)
|
||||
listener: handleLiteralInt(42)
|
||||
ensureSemicolon(42)
|
||||
listener: endReturnStatement(true, return, ;)
|
||||
inGenerator()
|
||||
listener: endThenStatement(return, ;)
|
||||
listener: endIfStatement(if, null, ;)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, return)
|
||||
parseStatement(;)
|
||||
parseStatementX(;)
|
||||
parseReturnStatement(;)
|
||||
listener: beginReturnStatement(return)
|
||||
parseExpression(return)
|
||||
looksLikeOuterPatternEquals(return)
|
||||
skipOuterPattern(return)
|
||||
parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(return, true, ConstantPatternContext.none)
|
||||
parsePrimary(return, expression, ConstantPatternContext.none)
|
||||
parseThisExpression(return, expression)
|
||||
listener: handleThisExpression(this, expression)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArguments(this)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
allowedToShortcutParseExpression()
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
skipObjectPatternRest(x)
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(-)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(-)
|
||||
listener: handleSend(x, x)
|
||||
listener: beginBinaryExpression(-)
|
||||
parsePrecedenceExpression(-, 14, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(-, true, ConstantPatternContext.none)
|
||||
parsePrimary(-, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(-)
|
||||
listener: handleLiteralInt(1)
|
||||
listener: endBinaryExpression(-, 1)
|
||||
listener: endArguments(1, (, ))
|
||||
listener: handleSend(this, ))
|
||||
listener: beginBinaryExpression(+)
|
||||
parsePrecedenceExpression(+, 14, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(+, true, ConstantPatternContext.none)
|
||||
parsePrimary(+, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(+)
|
||||
listener: handleLiteralInt(1)
|
||||
listener: endBinaryExpression(+, 1)
|
||||
ensureSemicolon(1)
|
||||
listener: endReturnStatement(true, return, ;)
|
||||
inGenerator()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(2, {, })
|
||||
listener: endClassMethod(null, , (, null, })
|
||||
listener: endMember()
|
||||
inPlainSync()
|
||||
parseFunctionBody(), false, true)
|
||||
listener: beginBlockFunctionBody({)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, if)
|
||||
parseStatement({)
|
||||
parseStatementX({)
|
||||
parseIfStatement({)
|
||||
listener: beginIfStatement(if)
|
||||
ensureParenthesizedCondition(if, allowCase: true)
|
||||
parseExpressionInParenthesisRest((, allowCase: true)
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
skipObjectPatternRest(x)
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(==)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(==)
|
||||
listener: handleSend(x, x)
|
||||
listener: beginBinaryExpression(==)
|
||||
parsePrecedenceExpression(==, 8, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(==, true, ConstantPatternContext.none)
|
||||
parsePrimary(==, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(==)
|
||||
listener: handleLiteralInt(0)
|
||||
listener: endBinaryExpression(==, 0)
|
||||
ensureCloseParen(0, ()
|
||||
listener: handleParenthesizedCondition((, null, null)
|
||||
listener: beginThenStatement(return)
|
||||
parseStatement())
|
||||
parseStatementX())
|
||||
parseReturnStatement())
|
||||
listener: beginReturnStatement(return)
|
||||
parseExpression(return)
|
||||
looksLikeOuterPatternEquals(return)
|
||||
skipOuterPattern(return)
|
||||
parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(return, true, ConstantPatternContext.none)
|
||||
parsePrimary(return, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(return)
|
||||
listener: handleLiteralInt(42)
|
||||
ensureSemicolon(42)
|
||||
listener: endReturnStatement(true, return, ;)
|
||||
inGenerator()
|
||||
listener: endThenStatement(return, ;)
|
||||
listener: endIfStatement(if, null, ;)
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, return)
|
||||
parseStatement(;)
|
||||
parseStatementX(;)
|
||||
parseReturnStatement(;)
|
||||
listener: beginReturnStatement(return)
|
||||
parseExpression(return)
|
||||
looksLikeOuterPatternEquals(return)
|
||||
skipOuterPattern(return)
|
||||
parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(return, true, ConstantPatternContext.none)
|
||||
parsePrimary(return, expression, ConstantPatternContext.none)
|
||||
parseThisExpression(return, expression)
|
||||
listener: handleThisExpression(this, expression)
|
||||
listener: handleNoTypeArguments(()
|
||||
parseArguments(this)
|
||||
parseArgumentsRest(()
|
||||
listener: beginArguments(()
|
||||
allowedToShortcutParseExpression()
|
||||
parseExpression(()
|
||||
looksLikeOuterPatternEquals(()
|
||||
skipOuterPattern(()
|
||||
skipObjectPatternRest(x)
|
||||
parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression((, true, ConstantPatternContext.none)
|
||||
parsePrimary((, expression, ConstantPatternContext.none)
|
||||
parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
|
||||
parseSend((, expression, ConstantPatternContext.none)
|
||||
ensureIdentifier((, expression)
|
||||
listener: handleIdentifier(x, expression)
|
||||
listener: handleNoTypeArguments(-)
|
||||
parseArgumentsOpt(x)
|
||||
listener: handleNoArguments(-)
|
||||
listener: handleSend(x, x)
|
||||
listener: beginBinaryExpression(-)
|
||||
parsePrecedenceExpression(-, 14, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(-, true, ConstantPatternContext.none)
|
||||
parsePrimary(-, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(-)
|
||||
listener: handleLiteralInt(1)
|
||||
listener: endBinaryExpression(-, 1)
|
||||
listener: endArguments(1, (, ))
|
||||
listener: handleSend(this, ))
|
||||
listener: beginBinaryExpression(+)
|
||||
parsePrecedenceExpression(+, 14, true, ConstantPatternContext.none)
|
||||
parseUnaryExpression(+, true, ConstantPatternContext.none)
|
||||
parsePrimary(+, expression, ConstantPatternContext.none)
|
||||
parseLiteralInt(+)
|
||||
listener: handleLiteralInt(1)
|
||||
listener: endBinaryExpression(+, 1)
|
||||
ensureSemicolon(1)
|
||||
listener: endReturnStatement(true, return, ;)
|
||||
inGenerator()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endBlockFunctionBody(2, {, })
|
||||
listener: endClassMethod(null, int, (, null, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, int)
|
||||
parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, WrapperClass)
|
||||
parseMetadataStar(})
|
||||
@@ -11333,7 +11308,7 @@ parseUnit(class)
|
||||
listener: endClassMethod(null, int, (, null, })
|
||||
listener: endMember()
|
||||
notEofOrType(CLOSE_CURLY_BRACKET, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 71, {, })
|
||||
listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 70, {, })
|
||||
listener: endClassDeclaration(class, })
|
||||
listener: endTopLevelDeclaration(})
|
||||
reportAllErrorTokens(class)
|
||||
|
||||
+2
-2
@@ -296,7 +296,7 @@ if (x == 0) return 42;
|
||||
return sync(x-1) + 1;
|
||||
}
|
||||
|
||||
int this;*synthetic*(int x) {
|
||||
int this(int x) {
|
||||
if (x == 0) return 42;
|
||||
return this(x-1) + 1;
|
||||
}
|
||||
@@ -644,7 +644,7 @@ if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[Sim
|
||||
return[KeywordToken] sync[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
int[StringToken] this[KeywordToken];[SyntheticToken][SyntheticStringToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
int[StringToken] this[KeywordToken]([BeginToken]int[StringToken] x[StringToken])[SimpleToken] {[BeginToken]
|
||||
if[KeywordToken] ([BeginToken]x[StringToken] ==[SimpleToken] 0[StringToken])[SimpleToken] return[KeywordToken] 42[StringToken];[SimpleToken]
|
||||
return[KeywordToken] this[KeywordToken]([BeginToken]x[StringToken]-[SimpleToken]1[StringToken])[SimpleToken] +[SimpleToken] 1[StringToken];[SimpleToken]
|
||||
}[SimpleToken]
|
||||
|
||||
@@ -704,6 +704,15 @@ List<String> processItem(ParserAstNode item, List<int> data) {
|
||||
decl.endToken.offset + decl.endToken.length,
|
||||
),
|
||||
];
|
||||
} else if (item.isPrimaryConstructorBody()) {
|
||||
PrimaryConstructorBodyEnd decl = item.getPrimaryConstructorBody();
|
||||
return [
|
||||
getCutContent(
|
||||
data,
|
||||
decl.beginToken.offset,
|
||||
decl.endToken.offset + decl.endToken.length,
|
||||
),
|
||||
];
|
||||
} else {
|
||||
if (item.type == ParserAstType.BEGIN) return const [];
|
||||
if (item.type == ParserAstType.HANDLE) return const [];
|
||||
|
||||
@@ -596,6 +596,34 @@ class ParserTestListener implements Listener {
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void beginPrimaryConstructorBody(Token token) {
|
||||
seen(token);
|
||||
doPrint(
|
||||
'beginPrimaryConstructorBody('
|
||||
'$token)',
|
||||
);
|
||||
indent++;
|
||||
}
|
||||
|
||||
@override
|
||||
void endPrimaryConstructorBody(
|
||||
Token beginToken,
|
||||
Token? beginInitializers,
|
||||
Token endToken,
|
||||
) {
|
||||
indent--;
|
||||
seen(beginToken);
|
||||
seen(beginInitializers);
|
||||
seen(endToken);
|
||||
doPrint(
|
||||
'endPrimaryConstructorBody('
|
||||
'$beginToken, '
|
||||
'$beginInitializers, '
|
||||
'$endToken)',
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void beginCombinators(Token token) {
|
||||
seen(token);
|
||||
|
||||
@@ -1235,6 +1235,18 @@ class TestParser extends Parser {
|
||||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
Token parsePrimaryConstructorBody(Token token) {
|
||||
doPrint(
|
||||
'parsePrimaryConstructorBody('
|
||||
'$token)',
|
||||
);
|
||||
indent++;
|
||||
var result = super.parsePrimaryConstructorBody(token);
|
||||
indent--;
|
||||
return result;
|
||||
}
|
||||
|
||||
@override
|
||||
Token parseExtensionTypeDeclaration(
|
||||
Token beginToken,
|
||||
|
||||
@@ -2,45 +2,91 @@ library;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Expected a class member, but got 'this'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: 'this' can't be used as an identifier because it's a keyword.
|
||||
// Try renaming this to be an identifier that isn't a keyword.
|
||||
// this.y = 2;
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:13: Error: Expected a class member, but got '.'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: A method declaration needs an explicit list of parameters.
|
||||
// Try adding a parameter list to the method declaration.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:14: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
|
||||
// Try adding the name of the type of the variable or the keyword 'var'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Only factory constructor can specify '=' redirection.
|
||||
// Try making this a factory constructor, or remove the redirection.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:14: Error: 'y' is already declared in this scope.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Expected an identifier, but got '2'.
|
||||
// Try inserting an identifier before '2'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:7:13: Context: Previous declaration of 'y'.
|
||||
// final int y;
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Expected ';' after this.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: The name of a constructor must match the name of the enclosing class.
|
||||
// this.y = 2;
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Expected a class member, but got '2'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:19: Error: Expected a class member, but got ';'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:9:16: Error: A redirecting constructor can't have other initializers.
|
||||
// this.x = 1;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Expected a function body or '=>'.
|
||||
// Try adding {}.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Constructors can't have a return type.
|
||||
// Try removing the return type.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Final field 'x' is not initialized by this constructor.
|
||||
// Try to initialize the field using an initializing formal or a field initializer.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:6:13: Context: 'x' is defined here.
|
||||
// final int x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Final field 'y' is not initialized by this constructor.
|
||||
// Try to initialize the field using an initializing formal or a field initializer.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:7:13: Context: 'y' is defined here.
|
||||
// final int y;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class E extends core::Object {
|
||||
final field core::int x;
|
||||
final field core::int y;
|
||||
erroneous constructor y() → self::E
|
||||
: self::E::y = null, self::E::x = null, super core::Object::•()
|
||||
invalid-expression "pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Constructors can't have a return type.
|
||||
Try removing the return type.
|
||||
this.y = 2;
|
||||
^";
|
||||
erroneous constructor •() → self::E
|
||||
: final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:9:16: Error: A redirecting constructor can't have other initializers.
|
||||
this.x = 1;
|
||||
^", this self::E::named()
|
||||
;
|
||||
constructor named() → self::E
|
||||
: self::E::x = 5, final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:13:20: Error: Can't use 'y' because it is declared more than once.
|
||||
this.y = 6;
|
||||
^"
|
||||
: self::E::x = 5, self::E::y = 6, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
@@ -2,45 +2,91 @@ library;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Expected a class member, but got 'this'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: 'this' can't be used as an identifier because it's a keyword.
|
||||
// Try renaming this to be an identifier that isn't a keyword.
|
||||
// this.y = 2;
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:13: Error: Expected a class member, but got '.'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: A method declaration needs an explicit list of parameters.
|
||||
// Try adding a parameter list to the method declaration.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:14: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
|
||||
// Try adding the name of the type of the variable or the keyword 'var'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Only factory constructor can specify '=' redirection.
|
||||
// Try making this a factory constructor, or remove the redirection.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:14: Error: 'y' is already declared in this scope.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Expected an identifier, but got '2'.
|
||||
// Try inserting an identifier before '2'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:7:13: Context: Previous declaration of 'y'.
|
||||
// final int y;
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Expected ';' after this.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: The name of a constructor must match the name of the enclosing class.
|
||||
// this.y = 2;
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Expected a class member, but got '2'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:19: Error: Expected a class member, but got ';'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:9:16: Error: A redirecting constructor can't have other initializers.
|
||||
// this.x = 1;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Expected a function body or '=>'.
|
||||
// Try adding {}.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Constructors can't have a return type.
|
||||
// Try removing the return type.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Final field 'x' is not initialized by this constructor.
|
||||
// Try to initialize the field using an initializing formal or a field initializer.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:6:13: Context: 'x' is defined here.
|
||||
// final int x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Final field 'y' is not initialized by this constructor.
|
||||
// Try to initialize the field using an initializing formal or a field initializer.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:7:13: Context: 'y' is defined here.
|
||||
// final int y;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class E extends core::Object {
|
||||
final field core::int x;
|
||||
final field core::int y;
|
||||
erroneous constructor y() → self::E
|
||||
: self::E::y = null, self::E::x = null, super core::Object::•()
|
||||
invalid-expression "pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Constructors can't have a return type.
|
||||
Try removing the return type.
|
||||
this.y = 2;
|
||||
^";
|
||||
erroneous constructor •() → self::E
|
||||
: final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:9:16: Error: A redirecting constructor can't have other initializers.
|
||||
this.x = 1;
|
||||
^", this self::E::named()
|
||||
;
|
||||
constructor named() → self::E
|
||||
: self::E::x = 5, final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:13:20: Error: Can't use 'y' because it is declared more than once.
|
||||
this.y = 6;
|
||||
^"
|
||||
: self::E::x = 5, self::E::y = 6, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
@@ -2,25 +2,41 @@ library;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Expected a class member, but got 'this'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: 'this' can't be used as an identifier because it's a keyword.
|
||||
// Try renaming this to be an identifier that isn't a keyword.
|
||||
// this.y = 2;
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:13: Error: Expected a class member, but got '.'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: A method declaration needs an explicit list of parameters.
|
||||
// Try adding a parameter list to the method declaration.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:14: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
|
||||
// Try adding the name of the type of the variable or the keyword 'var'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Only factory constructor can specify '=' redirection.
|
||||
// Try making this a factory constructor, or remove the redirection.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:14: Error: 'y' is already declared in this scope.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Expected an identifier, but got '2'.
|
||||
// Try inserting an identifier before '2'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:7:13: Context: Previous declaration of 'y'.
|
||||
// final int y;
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Expected ';' after this.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: The name of a constructor must match the name of the enclosing class.
|
||||
// this.y = 2;
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Expected a class member, but got '2'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:19: Error: Expected a class member, but got ';'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
@@ -28,6 +44,8 @@ import "dart:core" as core;
|
||||
class E extends core::Object {
|
||||
final field core::int x;
|
||||
final field core::int y;
|
||||
constructor y() → self::E
|
||||
;
|
||||
constructor •() → self::E
|
||||
;
|
||||
constructor named() → self::E
|
||||
|
||||
@@ -2,45 +2,91 @@ library;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Expected a class member, but got 'this'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: 'this' can't be used as an identifier because it's a keyword.
|
||||
// Try renaming this to be an identifier that isn't a keyword.
|
||||
// this.y = 2;
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:13: Error: Expected a class member, but got '.'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: A method declaration needs an explicit list of parameters.
|
||||
// Try adding a parameter list to the method declaration.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:14: Error: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
|
||||
// Try adding the name of the type of the variable or the keyword 'var'.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Only factory constructor can specify '=' redirection.
|
||||
// Try making this a factory constructor, or remove the redirection.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:14: Error: 'y' is already declared in this scope.
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Expected an identifier, but got '2'.
|
||||
// Try inserting an identifier before '2'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:7:13: Context: Previous declaration of 'y'.
|
||||
// final int y;
|
||||
// ^
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Expected ';' after this.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: The name of a constructor must match the name of the enclosing class.
|
||||
// this.y = 2;
|
||||
// ^^^^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Expected a class member, but got '2'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:19: Error: Expected a class member, but got ';'.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:9:16: Error: A redirecting constructor can't have other initializers.
|
||||
// this.x = 1;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:16: Error: Expected a function body or '=>'.
|
||||
// Try adding {}.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Constructors can't have a return type.
|
||||
// Try removing the return type.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Final field 'x' is not initialized by this constructor.
|
||||
// Try to initialize the field using an initializing formal or a field initializer.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:6:13: Context: 'x' is defined here.
|
||||
// final int x;
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/issue43363.dart:10:9: Error: Final field 'y' is not initialized by this constructor.
|
||||
// Try to initialize the field using an initializing formal or a field initializer.
|
||||
// this.y = 2;
|
||||
// ^
|
||||
// pkg/front_end/testcases/general/issue43363.dart:7:13: Context: 'y' is defined here.
|
||||
// final int y;
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
class E extends core::Object {
|
||||
final field core::int x;
|
||||
final field core::int y;
|
||||
erroneous constructor y() → self::E
|
||||
: self::E::y = null, self::E::x = null, super core::Object::•()
|
||||
invalid-expression "pkg/front_end/testcases/general/issue43363.dart:10:18: Error: Constructors can't have a return type.
|
||||
Try removing the return type.
|
||||
this.y = 2;
|
||||
^";
|
||||
erroneous constructor •() → self::E
|
||||
: final dynamic #t1 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:9:16: Error: A redirecting constructor can't have other initializers.
|
||||
this.x = 1;
|
||||
^", this self::E::named()
|
||||
;
|
||||
constructor named() → self::E
|
||||
: self::E::x = 5, final dynamic #t2 = invalid-expression "pkg/front_end/testcases/general/issue43363.dart:13:20: Error: Can't use 'y' because it is declared more than once.
|
||||
this.y = 6;
|
||||
^"
|
||||
: self::E::x = 5, self::E::y = 6, super core::Object::•()
|
||||
;
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
|
||||
@@ -2,8 +2,8 @@ class E {
|
||||
final int x;
|
||||
final int y;
|
||||
E() : this.named(), this.x = 1;
|
||||
this.
|
||||
y = 2;
|
||||
this.y ()= ;
|
||||
2;
|
||||
E.named() : this.x = 5, this.y = 6;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user