[parser] Support 'augment super' as its own expression
This adds support for parsing `argument super` as its own expression
in augmentation libraries. This is not handled (correctly) by the
ast builders of analyzer and cfe yet.
Change-Id: Ibe67ad9daf56c82e8ec94f16d468e6b0d8f84d22
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/244922
Reviewed-by: Jens Johansen <jensj@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
index fc99416..35444e1 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -6333,6 +6333,15 @@
problemMessage: r"""Can't use string interpolation in a URI.""");
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeInvalidAugmentSuper = messageInvalidAugmentSuper;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageInvalidAugmentSuper = const MessageCode(
+ "InvalidAugmentSuper",
+ problemMessage:
+ r"""'augment super' is only allowed in member augmentations.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Null> codeInvalidAwaitFor = messageInvalidAwaitFor;
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
index 437ae8a..a10e793 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart
@@ -1748,6 +1748,12 @@
}
@override
+ void handleAugmentSuperExpression(
+ Token augmentToken, Token superToken, IdentifierContext context) {
+ listener?.handleAugmentSuperExpression(augmentToken, superToken, context);
+ }
+
+ @override
void handleSymbolVoid(Token token) {
listener?.handleSymbolVoid(token);
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
index f72d10b..107f7da 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/listener.dart
@@ -1770,6 +1770,11 @@
logEvent("SuperExpression");
}
+ void handleAugmentSuperExpression(
+ Token augmentToken, Token superToken, IdentifierContext context) {
+ logEvent("AugmentSuperExpression");
+ }
+
void beginSwitchCase(int labelCount, int expressionCount, Token firstToken) {}
void endSwitchCase(
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart b/pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart
index 99e4582..3946e24 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart
@@ -227,6 +227,7 @@
reportExtraneousModifier(externalToken);
reportExtraneousModifier(requiredToken);
reportExtraneousModifier(staticToken);
+ reportExtraneousModifier(augmentToken);
return token;
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
index 89a8755..0fd1cc0 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -5826,6 +5826,9 @@
return parseThisExpression(token, context);
} else if (identical(value, "super")) {
return parseSuperExpression(token, context);
+ } else if (identical(value, "augment") &&
+ optional('super', token.next!.next!)) {
+ return parseAugmentSuperExpression(token, context);
} else if (identical(value, "new")) {
return parseNewExpression(token);
} else if (identical(value, "const")) {
@@ -5965,6 +5968,21 @@
return token;
}
+ Token parseAugmentSuperExpression(Token token, IdentifierContext context) {
+ Token augmentToken = token = token.next!;
+ assert(optional('augment', token));
+ Token superToken = token = token.next!;
+ assert(optional('super', token));
+ listener.handleAugmentSuperExpression(augmentToken, superToken, context);
+ Token next = token.next!;
+ if (optional('(', next)) {
+ listener.handleNoTypeArguments(next);
+ token = parseArguments(token);
+ listener.handleSend(augmentToken, token.next!);
+ }
+ return token;
+ }
+
/// This method parses the portion of a list literal starting with the left
/// square bracket.
///
@@ -6948,7 +6966,9 @@
Token? varFinalOrConst;
if (isModifier(next)) {
- if (optional('var', next) ||
+ if (optional('augment', next) && optional('super', next.next!)) {
+ return parseExpressionStatement(start);
+ } else if (optional('var', next) ||
optional('final', next) ||
optional('const', next)) {
varFinalOrConst = token = token.next!;
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 878abf5..75532ee 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -2675,6 +2675,15 @@
}
@override
+ void handleAugmentSuperExpression(
+ Token augmentKeyword, Token superKeyword, IdentifierContext context) {
+ assert(optional('augment', augmentKeyword));
+ assert(optional('super', superKeyword));
+ debugEvent("AugmentSuperExpression");
+ throw UnimplementedError('AstBuilder.handleAugmentSuperExpression');
+ }
+
+ @override
void handleBreakStatement(
bool hasTarget, Token breakKeyword, Token semicolon) {
assert(optional('break', breakKeyword));
@@ -3937,7 +3946,6 @@
void handleSuperExpression(Token superKeyword, IdentifierContext context) {
assert(optional('super', superKeyword));
debugEvent("SuperExpression");
-
push(ast.superExpression(superKeyword));
}
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 61927d1..392e727 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -86,6 +86,7 @@
import '../source/source_field_builder.dart';
import '../source/source_function_builder.dart';
import '../source/source_library_builder.dart';
+import '../source/source_member_builder.dart';
import '../source/source_procedure_builder.dart';
import '../source/stack_listener_impl.dart'
show StackListenerImpl, offsetForToken;
@@ -5769,6 +5770,25 @@
}
@override
+ void handleAugmentSuperExpression(
+ Token augmentToken, Token superToken, IdentifierContext context) {
+ debugEvent("AugmentSuperExpression");
+ if (member is SourceMemberBuilder) {
+ SourceMemberBuilder sourceMemberBuilder = member as SourceMemberBuilder;
+ if (sourceMemberBuilder.isAugmentation) {
+ // TODO(johnniwinther): Implement augment super handling.
+ int fileOffset = augmentToken.charOffset;
+ push(forest.createAsExpression(fileOffset,
+ forest.createNullLiteral(fileOffset), const DynamicType(),
+ forNonNullableByDefault: libraryBuilder.isNonNullableByDefault));
+ return;
+ }
+ }
+ push(new IncompleteErrorGenerator(
+ this, augmentToken, fasta.messageInvalidAugmentSuper));
+ }
+
+ @override
void handleNamedArgument(Token colon) {
debugEvent("NamedArgument");
assert(checkState(colon, [
diff --git a/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart b/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
index d75672e..4984f92 100644
--- a/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/macro/annotation_parser.dart
@@ -1968,6 +1968,12 @@
}
@override
+ void handleAugmentSuperExpression(
+ Token augmentToken, Token superToken, IdentifierContext context) {
+ _unsupported();
+ }
+
+ @override
void handleSymbolVoid(Token token) {
_unhandled();
}
diff --git a/pkg/front_end/lib/src/fasta/source/source_function_builder.dart b/pkg/front_end/lib/src/fasta/source/source_function_builder.dart
index 082584c..fa2a828 100644
--- a/pkg/front_end/lib/src/fasta/source/source_function_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_function_builder.dart
@@ -119,7 +119,7 @@
void becomeNative(SourceLoader loader);
- bool checkPatch(FunctionBuilder patch);
+ bool checkPatch(SourceFunctionBuilder patch);
void reportPatchMismatch(Builder patch);
}
@@ -492,8 +492,8 @@
}
@override
- bool checkPatch(FunctionBuilder patch) {
- if (!isExternal) {
+ bool checkPatch(SourceFunctionBuilder patch) {
+ if (!isExternal && !patch.libraryBuilder.isAugmentation) {
patch.libraryBuilder.addProblem(
messagePatchNonExternal, patch.charOffset, noLength, patch.fileUri!,
context: [
diff --git a/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart b/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart
index 5137b17..7006708 100644
--- a/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart
+++ b/pkg/front_end/lib/src/fasta/util/parser_ast_helper.dart
@@ -2411,6 +2411,17 @@
}
@override
+ void handleAugmentSuperExpression(
+ Token augmentToken, Token superToken, IdentifierContext context) {
+ AugmentSuperExpressionHandle data = new AugmentSuperExpressionHandle(
+ ParserAstType.HANDLE,
+ augmentToken: augmentToken,
+ superToken: superToken,
+ context: context);
+ seen(data);
+ }
+
+ @override
void beginSwitchCase(int labelCount, int expressionCount, Token firstToken) {
SwitchCaseBegin data = new SwitchCaseBegin(ParserAstType.BEGIN,
labelCount: labelCount,
@@ -6926,6 +6937,25 @@
};
}
+class AugmentSuperExpressionHandle extends ParserAstNode {
+ final Token augmentToken;
+ final Token superToken;
+ final IdentifierContext context;
+
+ AugmentSuperExpressionHandle(ParserAstType type,
+ {required this.augmentToken,
+ required this.superToken,
+ required this.context})
+ : super("AugmentSuperExpression", type);
+
+ @override
+ Map<String, Object?> get deprecatedArguments => {
+ "augmentToken": augmentToken,
+ "superToken": superToken,
+ "context": context,
+ };
+}
+
class SwitchCaseBegin extends ParserAstNode {
final int labelCount;
final int expressionCount;
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index 125a09d..d7c85b5 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -490,6 +490,8 @@
InterpolationInUri/example: Fail
InvalidAssignmentWarning/analyzerCode: Fail
InvalidAssignmentWarning/example: Fail
+InvalidAugmentSuper/analyzerCode: Fail
+InvalidAugmentSuper/example: Fail
InvalidBreakTarget/analyzerCode: Fail
InvalidBreakTarget/example: Fail
InvalidCastFunctionExpr/example: Fail
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 745eead..7691707 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -3309,6 +3309,9 @@
problemMessage: "Expected identifier, but got 'super'."
analyzerCode: SUPER_AS_EXPRESSION
+InvalidAugmentSuper:
+ problemMessage: "'augment super' is only allowed in member augmentations."
+
SuperAsExpression:
problemMessage: "Can't use 'super' as an expression."
correctionMessage: "To delegate a constructor to a super constructor, put the super call as an initializer."
diff --git a/pkg/front_end/parser_testcases/augmentation/augment_super.dart b/pkg/front_end/parser_testcases/augmentation/augment_super.dart
new file mode 100644
index 0000000..ef21ddf
--- /dev/null
+++ b/pkg/front_end/parser_testcases/augmentation/augment_super.dart
@@ -0,0 +1,53 @@
+augment void topLevelMethod() {
+ augment super();
+}
+
+augment void topLevelMethodError() {
+ augment int local;
+ augment;
+}
+
+
+augment List<int> get topLevelProperty {
+ return [... augment super, augment super[0]];
+}
+
+augment void set topLevelProperty(List<int> value) {
+ augment super[0] = value[1];
+ augment super = value;
+}
+
+void injectedTopLevelMethod() {
+ augment super();
+ augment super;
+ augment int local;
+ augment;
+}
+
+augment class Class {
+ augment void instanceMethod() {
+ augment super();
+ }
+
+ augment void instanceMethodErrors() {
+ augment int local;
+ augment;
+ }
+
+ augment int get instanceProperty {
+ augment super++;
+ --augment super;
+ return -augment super;
+ }
+
+ augment void set instanceProperty(int value) {
+ augment super = value;
+ }
+
+ void injectedInstanceMethod() {
+ augment super();
+ augment super;
+ augment int local;
+ augment;
+ }
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/augmentation/augment_super.dart.expect b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.expect
new file mode 100644
index 0000000..19a8a3c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.expect
@@ -0,0 +1,348 @@
+Problems reported:
+
+parser/augmentation/augment_super:6:3: Can't have modifier 'augment' here.
+ augment int local;
+ ^^^^^^^
+
+parser/augmentation/augment_super:23:3: Can't have modifier 'augment' here.
+ augment int local;
+ ^^^^^^^
+
+parser/augmentation/augment_super:33:5: Can't have modifier 'augment' here.
+ augment int local;
+ ^^^^^^^
+
+parser/augmentation/augment_super:50:5: Can't have modifier 'augment' here.
+ augment int local;
+ ^^^^^^^
+
+beginCompilationUnit(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginTopLevelMember(augment)
+ beginTopLevelMethod(, augment, null)
+ handleVoidKeyword(void)
+ handleIdentifier(topLevelMethod, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ endArguments(0, (, ))
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(augment, null, })
+ endTopLevelDeclaration(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginTopLevelMember(augment)
+ beginTopLevelMethod(}, augment, null)
+ handleVoidKeyword(void)
+ handleIdentifier(topLevelMethodError, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(local)
+ handleType(int, null)
+ beginVariablesDeclaration(local, null, null)
+ handleIdentifier(local, localVariableDeclaration)
+ beginInitializedIdentifier(local)
+ handleNoVariableInitializer(local)
+ endInitializedIdentifier(local)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(2, {, })
+ endTopLevelMethod(augment, null, })
+ endTopLevelDeclaration(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginTopLevelMember(augment)
+ beginTopLevelMethod(}, augment, null)
+ handleIdentifier(List, typeReference)
+ beginTypeArguments(<)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(>)
+ handleType(int, null)
+ endTypeArguments(1, <, >)
+ handleType(List, null)
+ handleIdentifier(topLevelProperty, topLevelFunctionDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments([)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleSpreadExpression(...)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleLiteralInt(0)
+ handleIndexedExpression(null, [, ])
+ handleLiteralList(2, [, null, ])
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(augment, get, })
+ endTopLevelDeclaration(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginTopLevelMember(augment)
+ beginTopLevelMethod(}, augment, null)
+ handleVoidKeyword(void)
+ handleIdentifier(topLevelProperty, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ beginTypeArguments(<)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(>)
+ handleType(int, null)
+ endTypeArguments(1, <, >)
+ handleType(List, null)
+ handleIdentifier(value, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, value, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleLiteralInt(0)
+ handleIndexedExpression(null, [, ])
+ handleIdentifier(value, expression)
+ handleNoTypeArguments([)
+ handleNoArguments([)
+ handleSend(value, [)
+ handleLiteralInt(1)
+ handleIndexedExpression(null, [, ])
+ handleAssignmentExpression(=)
+ handleExpressionStatement(;)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleIdentifier(value, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(value, ;)
+ handleAssignmentExpression(=)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(2, {, })
+ endTopLevelMethod(augment, set, })
+ endTopLevelDeclaration(void)
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginTopLevelMember(void)
+ beginTopLevelMethod(}, null, null)
+ handleVoidKeyword(void)
+ handleIdentifier(injectedTopLevelMethod, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ endArguments(0, (, ))
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleExpressionStatement(;)
+ handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(local)
+ handleType(int, null)
+ beginVariablesDeclaration(local, null, null)
+ handleIdentifier(local, localVariableDeclaration)
+ beginInitializedIdentifier(local)
+ handleNoVariableInitializer(local)
+ endInitializedIdentifier(local)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(4, {, })
+ endTopLevelMethod(void, null, })
+ endTopLevelDeclaration(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginClassOrMixinOrNamedMixinApplicationPrelude(class)
+ handleIdentifier(Class, classOrMixinDeclaration)
+ handleNoTypeVariables({)
+ beginClassDeclaration(class, null, null, augment, Class)
+ handleNoType(Class)
+ handleClassExtends(null, 1)
+ handleClassNoWithClause()
+ handleImplements(null, 0)
+ handleClassHeader(class, class, null)
+ beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, augment, null, null, null, null, null, instanceMethod)
+ handleVoidKeyword(void)
+ handleIdentifier(instanceMethod, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ endArguments(0, (, ))
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, augment, (, null, })
+ endMember()
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, augment, null, null, null, null, null, instanceMethodErrors)
+ handleVoidKeyword(void)
+ handleIdentifier(instanceMethodErrors, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(local)
+ handleType(int, null)
+ beginVariablesDeclaration(local, null, null)
+ handleIdentifier(local, localVariableDeclaration)
+ beginInitializedIdentifier(local)
+ handleNoVariableInitializer(local)
+ endInitializedIdentifier(local)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, augment, (, null, })
+ endMember()
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, augment, null, null, null, null, get, instanceProperty)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(instanceProperty, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleUnaryPostfixAssignmentExpression(++)
+ handleExpressionStatement(;)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleUnaryPrefixAssignmentExpression(--)
+ handleExpressionStatement(;)
+ beginReturnStatement(return)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleUnaryPrefixExpression(-)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(3, {, })
+ endClassMethod(get, augment, {, null, })
+ endMember()
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, augment, null, null, null, null, set, instanceProperty)
+ handleVoidKeyword(void)
+ handleIdentifier(instanceProperty, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(value)
+ handleType(int, null)
+ handleIdentifier(value, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, value, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
+ endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleIdentifier(value, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(value, ;)
+ handleAssignmentExpression(=)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(set, augment, (, null, })
+ endMember()
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, null, null, null, null, null, null, injectedInstanceMethod)
+ handleVoidKeyword(void)
+ handleIdentifier(injectedInstanceMethod, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ endArguments(0, (, ))
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ handleAugmentSuperExpression(augment, super, expression)
+ handleExpressionStatement(;)
+ handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(local)
+ handleType(int, null)
+ beginVariablesDeclaration(local, null, null)
+ handleIdentifier(local, localVariableDeclaration)
+ beginInitializedIdentifier(local)
+ handleNoVariableInitializer(local)
+ endInitializedIdentifier(local)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(4, {, })
+ endClassMethod(null, void, (, null, })
+ endMember()
+ endClassOrMixinOrExtensionBody(DeclarationKind.Class, 5, {, })
+ endClassDeclaration(class, })
+ endTopLevelDeclaration()
+endCompilationUnit(6, )
diff --git a/pkg/front_end/parser_testcases/augmentation/augment_super.dart.intertwined.expect b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.intertwined.expect
new file mode 100644
index 0000000..eb29931
--- /dev/null
+++ b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.intertwined.expect
@@ -0,0 +1,826 @@
+parseUnit(augment)
+ skipErrorTokens(augment)
+ listener: beginCompilationUnit(augment)
+ syntheticPreviousToken(augment)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl()
+ listener: beginTopLevelMember(augment)
+ parseTopLevelMethod(, augment, null, augment, Instance of 'VoidType', null, topLevelMethod, false)
+ listener: beginTopLevelMethod(, augment, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(topLevelMethod, topLevelFunctionDeclaration)
+ parseMethodTypeVar(topLevelMethod)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(topLevelMethod, topLevelMethod, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(topLevelMethod, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclaration({, false)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseAugmentSuperExpression({, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ listener: handleNoTypeArguments(()
+ parseArguments(super)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ listener: endArguments(0, (, ))
+ listener: handleSend(augment, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(augment, null, })
+ listener: endTopLevelDeclaration(augment)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(augment)
+ parseTopLevelMethod(}, augment, null, augment, Instance of 'VoidType', null, topLevelMethodError, false)
+ listener: beginTopLevelMethod(}, augment, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(topLevelMethodError, topLevelFunctionDeclaration)
+ parseMethodTypeVar(topLevelMethodError)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(topLevelMethodError, topLevelMethodError, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(topLevelMethodError, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclaration({, false)
+ reportRecoverableErrorWithToken(augment, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
+ parseExpressionStatementOrDeclarationAfterModifiers(augment, {, null, null, null, false)
+ looksLikeLocalFunction(local)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(local)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(local, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(local, localVariableDeclaration)
+ listener: beginInitializedIdentifier(local)
+ parseVariableInitializerOpt(local)
+ listener: handleNoVariableInitializer(local)
+ listener: endInitializedIdentifier(local)
+ ensureSemicolon(local)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(augment)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ inPlainSync()
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ inPlainSync()
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(;)
+ listener: handleSend(augment, ;)
+ ensureSemicolon(augment)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endTopLevelMethod(augment, null, })
+ listener: endTopLevelDeclaration(augment)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(augment)
+ parseTopLevelMethod(}, augment, null, augment, Instance of 'SimpleTypeWith1Argument', get, topLevelProperty, false)
+ listener: beginTopLevelMethod(}, augment, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: beginTypeArguments(<)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(>)
+ listener: handleType(int, null)
+ listener: endTypeArguments(1, <, >)
+ listener: handleType(List, null)
+ ensureIdentifierPotentiallyRecovered(get, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(topLevelProperty, topLevelFunctionDeclaration)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(topLevelProperty, topLevelProperty, true, MemberKind.TopLevelMethod)
+ listener: handleNoFormalParameters({, MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt(topLevelProperty)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(topLevelProperty, false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ listener: handleNoTypeArguments([)
+ parseLiteralListSuffix(return, null)
+ parseExpression(...)
+ parsePrecedenceExpression(..., 1, true)
+ parseUnaryExpression(..., true)
+ parsePrimary(..., expression)
+ parseAugmentSuperExpression(..., expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ listener: handleSpreadExpression(...)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseAugmentSuperExpression(,, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ parseArgumentOrIndexStar(super, Instance of 'NoTypeParamOrArg', false)
+ parseExpression([)
+ parsePrecedenceExpression([, 1, true)
+ parseUnaryExpression([, true)
+ parsePrimary([, expression)
+ parseLiteralInt([)
+ listener: handleLiteralInt(0)
+ listener: handleIndexedExpression(null, [, ])
+ listener: handleLiteralList(2, [, null, ])
+ ensureSemicolon(])
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(augment, get, })
+ listener: endTopLevelDeclaration(augment)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(augment)
+ parseTopLevelMethod(}, augment, null, augment, Instance of 'VoidType', set, topLevelProperty, false)
+ listener: beginTopLevelMethod(}, augment, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(set, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(topLevelProperty, topLevelFunctionDeclaration)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(topLevelProperty, topLevelProperty, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(topLevelProperty, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: beginTypeArguments(<)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(>)
+ listener: handleType(int, null)
+ listener: endTypeArguments(1, <, >)
+ listener: handleType(List, null)
+ ensureIdentifier(>, formalParameterDeclaration)
+ listener: handleIdentifier(value, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, value, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclaration({, false)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseAugmentSuperExpression({, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ parseArgumentOrIndexStar(super, Instance of 'NoTypeParamOrArg', false)
+ parseExpression([)
+ parsePrecedenceExpression([, 1, true)
+ parseUnaryExpression([, true)
+ parsePrimary([, expression)
+ parseLiteralInt([)
+ listener: handleLiteralInt(0)
+ listener: handleIndexedExpression(null, [, ])
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ isNextIdentifier(=)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(value, expression)
+ listener: handleNoTypeArguments([)
+ parseArgumentsOpt(value)
+ listener: handleNoArguments([)
+ listener: handleSend(value, [)
+ parseArgumentOrIndexStar(value, Instance of 'NoTypeParamOrArg', false)
+ parseExpression([)
+ parsePrecedenceExpression([, 1, true)
+ parseUnaryExpression([, true)
+ parsePrimary([, expression)
+ parseLiteralInt([)
+ listener: handleLiteralInt(1)
+ listener: handleIndexedExpression(null, [, ])
+ listener: handleAssignmentExpression(=)
+ ensureSemicolon(])
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseAugmentSuperExpression(;, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ isNextIdentifier(=)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(value, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(value)
+ listener: handleNoArguments(;)
+ listener: handleSend(value, ;)
+ listener: handleAssignmentExpression(=)
+ ensureSemicolon(value)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endTopLevelMethod(augment, set, })
+ listener: endTopLevelDeclaration(void)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(void)
+ parseTopLevelMethod(}, null, null, }, Instance of 'VoidType', null, injectedTopLevelMethod, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(injectedTopLevelMethod, topLevelFunctionDeclaration)
+ parseMethodTypeVar(injectedTopLevelMethod)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(injectedTopLevelMethod, injectedTopLevelMethod, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(injectedTopLevelMethod, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclaration({, false)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseAugmentSuperExpression({, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ listener: handleNoTypeArguments(()
+ parseArguments(super)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ listener: endArguments(0, (, ))
+ listener: handleSend(augment, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseAugmentSuperExpression(;, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ ensureSemicolon(super)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ reportRecoverableErrorWithToken(augment, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
+ parseExpressionStatementOrDeclarationAfterModifiers(augment, ;, null, null, null, false)
+ looksLikeLocalFunction(local)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(local)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(local, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(local, localVariableDeclaration)
+ listener: beginInitializedIdentifier(local)
+ parseVariableInitializerOpt(local)
+ listener: handleNoVariableInitializer(local)
+ listener: endInitializedIdentifier(local)
+ ensureSemicolon(local)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(augment)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ inPlainSync()
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ inPlainSync()
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(;)
+ listener: handleSend(augment, ;)
+ ensureSemicolon(augment)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(4, {, })
+ listener: endTopLevelMethod(void, null, })
+ listener: endTopLevelDeclaration(augment)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelKeywordDeclaration(}, class, null, Instance of 'DirectiveContext')
+ parseClassOrNamedMixinApplication(null, null, augment, class)
+ listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
+ ensureIdentifier(class, classOrMixinDeclaration)
+ listener: handleIdentifier(Class, classOrMixinDeclaration)
+ listener: handleNoTypeVariables({)
+ listener: beginClassDeclaration(class, null, null, augment, Class)
+ parseClass(Class, class, class, Class)
+ parseClassHeaderOpt(Class, class, class)
+ parseClassExtendsOpt(Class)
+ listener: handleNoType(Class)
+ listener: handleClassExtends(null, 1)
+ parseClassWithClauseOpt(Class)
+ listener: handleClassNoWithClause()
+ parseClassOrMixinOrEnumImplementsOpt(Class)
+ listener: handleImplements(null, 0)
+ listener: handleClassHeader(class, class, null)
+ parseClassOrMixinOrExtensionBody(Class, DeclarationKind.Class, Class)
+ listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+ notEofOrValue(}, augment)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, Class)
+ parseMetadataStar({)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod({, null, augment, null, null, null, null, null, augment, Instance of 'VoidType', null, instanceMethod, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, augment, null, null, null, null, null, instanceMethod)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
+ listener: handleIdentifier(instanceMethod, methodDeclaration)
+ parseQualifiedRestOpt(instanceMethod, methodDeclarationContinuation)
+ parseMethodTypeVar(instanceMethod)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(instanceMethod, instanceMethod, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(instanceMethod, 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({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclaration({, false)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseAugmentSuperExpression({, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ listener: handleNoTypeArguments(()
+ parseArguments(super)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ listener: endArguments(0, (, ))
+ listener: handleSend(augment, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, augment, (, null, })
+ listener: endMember()
+ notEofOrValue(}, augment)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, Class)
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, augment, null, null, null, null, null, augment, Instance of 'VoidType', null, instanceMethodErrors, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, augment, null, null, null, null, null, instanceMethodErrors)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
+ listener: handleIdentifier(instanceMethodErrors, methodDeclaration)
+ parseQualifiedRestOpt(instanceMethodErrors, methodDeclarationContinuation)
+ parseMethodTypeVar(instanceMethodErrors)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(instanceMethodErrors, instanceMethodErrors, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(instanceMethodErrors, 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({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclaration({, false)
+ reportRecoverableErrorWithToken(augment, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
+ parseExpressionStatementOrDeclarationAfterModifiers(augment, {, null, null, null, false)
+ looksLikeLocalFunction(local)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(local)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(local, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(local, localVariableDeclaration)
+ listener: beginInitializedIdentifier(local)
+ parseVariableInitializerOpt(local)
+ listener: handleNoVariableInitializer(local)
+ listener: endInitializedIdentifier(local)
+ ensureSemicolon(local)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(augment)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ inPlainSync()
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ inPlainSync()
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(;)
+ listener: handleSend(augment, ;)
+ ensureSemicolon(augment)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, augment, (, null, })
+ listener: endMember()
+ notEofOrValue(}, augment)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, Class)
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, augment, null, null, null, null, null, augment, Instance of 'SimpleType', get, instanceProperty, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, augment, null, null, null, null, get, instanceProperty)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(instanceProperty, methodDeclaration)
+ parseQualifiedRestOpt(instanceProperty, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(instanceProperty, instanceProperty, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(instanceProperty)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(instanceProperty)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(instanceProperty, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclaration({, false)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseAugmentSuperExpression({, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ listener: handleUnaryPostfixAssignmentExpression(++)
+ ensureSemicolon(++)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, --)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(--)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrecedenceExpression(--, 16, true)
+ parseUnaryExpression(--, true)
+ parsePrimary(--, expression)
+ parseAugmentSuperExpression(--, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ listener: handleUnaryPrefixAssignmentExpression(--)
+ ensureSemicolon(super)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, return)
+ parseStatement(;)
+ parseStatementX(;)
+ parseReturnStatement(;)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrecedenceExpression(-, 16, true)
+ parseUnaryExpression(-, true)
+ parsePrimary(-, expression)
+ parseAugmentSuperExpression(-, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ listener: handleUnaryPrefixExpression(-)
+ ensureSemicolon(super)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(3, {, })
+ listener: endClassMethod(get, augment, {, null, })
+ listener: endMember()
+ notEofOrValue(}, augment)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, Class)
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, augment, null, null, null, null, null, augment, Instance of 'VoidType', set, instanceProperty, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, augment, null, null, null, null, set, instanceProperty)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
+ listener: handleIdentifier(instanceProperty, methodDeclaration)
+ parseQualifiedRestOpt(instanceProperty, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(instanceProperty, instanceProperty, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(instanceProperty, 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(value)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(value, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, value, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclaration({, false)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseAugmentSuperExpression({, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ isNextIdentifier(=)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(value, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(value)
+ listener: handleNoArguments(;)
+ listener: handleSend(value, ;)
+ listener: handleAssignmentExpression(=)
+ ensureSemicolon(value)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(set, augment, (, null, })
+ listener: endMember()
+ notEofOrValue(}, void)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, Class)
+ parseMetadataStar(})
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, null, }, Instance of 'VoidType', null, injectedInstanceMethod, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, injectedInstanceMethod)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
+ listener: handleIdentifier(injectedInstanceMethod, methodDeclaration)
+ parseQualifiedRestOpt(injectedInstanceMethod, methodDeclarationContinuation)
+ parseMethodTypeVar(injectedInstanceMethod)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(injectedInstanceMethod, injectedInstanceMethod, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(injectedInstanceMethod, 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({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclaration({, false)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseAugmentSuperExpression({, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ listener: handleNoTypeArguments(()
+ parseArguments(super)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ listener: endArguments(0, (, ))
+ listener: handleSend(augment, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseAugmentSuperExpression(;, expression)
+ listener: handleAugmentSuperExpression(augment, super, expression)
+ ensureSemicolon(super)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ reportRecoverableErrorWithToken(augment, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExtraneousModifier, Can't have modifier 'augment' here., Try removing 'augment'., {lexeme: augment}], augment, augment)
+ parseExpressionStatementOrDeclarationAfterModifiers(augment, ;, null, null, null, false)
+ looksLikeLocalFunction(local)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(local)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(local, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(local, localVariableDeclaration)
+ listener: beginInitializedIdentifier(local)
+ parseVariableInitializerOpt(local)
+ listener: handleNoVariableInitializer(local)
+ listener: endInitializedIdentifier(local)
+ ensureSemicolon(local)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(augment)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ inPlainSync()
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ inPlainSync()
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(;)
+ listener: handleSend(augment, ;)
+ ensureSemicolon(augment)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(4, {, })
+ listener: endClassMethod(null, void, (, null, })
+ listener: endMember()
+ notEofOrValue(}, })
+ listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 5, {, })
+ listener: endClassDeclaration(class, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(augment)
+ listener: endCompilationUnit(6, )
diff --git a/pkg/front_end/parser_testcases/augmentation/augment_super.dart.parser.expect b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.parser.expect
new file mode 100644
index 0000000..a85b796
--- /dev/null
+++ b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.parser.expect
@@ -0,0 +1,107 @@
+augment void topLevelMethod() {
+augment super();
+}
+
+augment void topLevelMethodError() {
+augment int local;
+augment;
+}
+
+
+augment List<int> get topLevelProperty {
+return [... augment super, augment super[0]];
+}
+
+augment void set topLevelProperty(List<int> value) {
+augment super[0] = value[1];
+augment super = value;
+}
+
+void injectedTopLevelMethod() {
+augment super();
+augment super;
+augment int local;
+augment;
+}
+
+augment class Class {
+augment void instanceMethod() {
+augment super();
+}
+
+augment void instanceMethodErrors() {
+augment int local;
+augment;
+}
+
+augment int get instanceProperty {
+augment super++;
+--augment super;
+return -augment super;
+}
+
+augment void set instanceProperty(int value) {
+augment super = value;
+}
+
+void injectedInstanceMethod() {
+augment super();
+augment super;
+augment int local;
+augment;
+}
+}
+
+augment[KeywordToken] void[KeywordToken] topLevelMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] void[KeywordToken] topLevelMethodError[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+
+augment[KeywordToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] get[KeywordToken] topLevelProperty[StringToken] {[BeginToken]
+return[KeywordToken] [[BeginToken]...[SimpleToken] augment[KeywordToken] super[KeywordToken],[SimpleToken] augment[KeywordToken] super[KeywordToken][[BeginToken]0[StringToken]][SimpleToken]][SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] void[KeywordToken] set[KeywordToken] topLevelProperty[StringToken]([BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] value[StringToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken][[BeginToken]0[StringToken]][SimpleToken] =[SimpleToken] value[StringToken][[BeginToken]1[StringToken]][SimpleToken];[SimpleToken]
+augment[KeywordToken] super[KeywordToken] =[SimpleToken] value[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] injectedTopLevelMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+augment[KeywordToken] super[KeywordToken];[SimpleToken]
+augment[KeywordToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] class[KeywordToken] Class[StringToken] {[BeginToken]
+augment[KeywordToken] void[KeywordToken] instanceMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] void[KeywordToken] instanceMethodErrors[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] int[StringToken] get[KeywordToken] instanceProperty[StringToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]++[SimpleToken];[SimpleToken]
+--[SimpleToken]augment[KeywordToken] super[KeywordToken];[SimpleToken]
+return[KeywordToken] -[SimpleToken]augment[KeywordToken] super[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] void[KeywordToken] set[KeywordToken] instanceProperty[StringToken]([BeginToken]int[StringToken] value[StringToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken] =[SimpleToken] value[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] injectedInstanceMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+augment[KeywordToken] super[KeywordToken];[SimpleToken]
+augment[KeywordToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/augmentation/augment_super.dart.scanner.expect b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.scanner.expect
new file mode 100644
index 0000000..a85b796
--- /dev/null
+++ b/pkg/front_end/parser_testcases/augmentation/augment_super.dart.scanner.expect
@@ -0,0 +1,107 @@
+augment void topLevelMethod() {
+augment super();
+}
+
+augment void topLevelMethodError() {
+augment int local;
+augment;
+}
+
+
+augment List<int> get topLevelProperty {
+return [... augment super, augment super[0]];
+}
+
+augment void set topLevelProperty(List<int> value) {
+augment super[0] = value[1];
+augment super = value;
+}
+
+void injectedTopLevelMethod() {
+augment super();
+augment super;
+augment int local;
+augment;
+}
+
+augment class Class {
+augment void instanceMethod() {
+augment super();
+}
+
+augment void instanceMethodErrors() {
+augment int local;
+augment;
+}
+
+augment int get instanceProperty {
+augment super++;
+--augment super;
+return -augment super;
+}
+
+augment void set instanceProperty(int value) {
+augment super = value;
+}
+
+void injectedInstanceMethod() {
+augment super();
+augment super;
+augment int local;
+augment;
+}
+}
+
+augment[KeywordToken] void[KeywordToken] topLevelMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] void[KeywordToken] topLevelMethodError[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+
+augment[KeywordToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] get[KeywordToken] topLevelProperty[StringToken] {[BeginToken]
+return[KeywordToken] [[BeginToken]...[SimpleToken] augment[KeywordToken] super[KeywordToken],[SimpleToken] augment[KeywordToken] super[KeywordToken][[BeginToken]0[StringToken]][SimpleToken]][SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] void[KeywordToken] set[KeywordToken] topLevelProperty[StringToken]([BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] value[StringToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken][[BeginToken]0[StringToken]][SimpleToken] =[SimpleToken] value[StringToken][[BeginToken]1[StringToken]][SimpleToken];[SimpleToken]
+augment[KeywordToken] super[KeywordToken] =[SimpleToken] value[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] injectedTopLevelMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+augment[KeywordToken] super[KeywordToken];[SimpleToken]
+augment[KeywordToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] class[KeywordToken] Class[StringToken] {[BeginToken]
+augment[KeywordToken] void[KeywordToken] instanceMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] void[KeywordToken] instanceMethodErrors[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] int[StringToken] get[KeywordToken] instanceProperty[StringToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]++[SimpleToken];[SimpleToken]
+--[SimpleToken]augment[KeywordToken] super[KeywordToken];[SimpleToken]
+return[KeywordToken] -[SimpleToken]augment[KeywordToken] super[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+augment[KeywordToken] void[KeywordToken] set[KeywordToken] instanceProperty[StringToken]([BeginToken]int[StringToken] value[StringToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken] =[SimpleToken] value[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] injectedInstanceMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[KeywordToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+augment[KeywordToken] super[KeywordToken];[SimpleToken]
+augment[KeywordToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[KeywordToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/augment_super.dart b/pkg/front_end/parser_testcases/general/augment_super.dart
new file mode 100644
index 0000000..ef21ddf
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/augment_super.dart
@@ -0,0 +1,53 @@
+augment void topLevelMethod() {
+ augment super();
+}
+
+augment void topLevelMethodError() {
+ augment int local;
+ augment;
+}
+
+
+augment List<int> get topLevelProperty {
+ return [... augment super, augment super[0]];
+}
+
+augment void set topLevelProperty(List<int> value) {
+ augment super[0] = value[1];
+ augment super = value;
+}
+
+void injectedTopLevelMethod() {
+ augment super();
+ augment super;
+ augment int local;
+ augment;
+}
+
+augment class Class {
+ augment void instanceMethod() {
+ augment super();
+ }
+
+ augment void instanceMethodErrors() {
+ augment int local;
+ augment;
+ }
+
+ augment int get instanceProperty {
+ augment super++;
+ --augment super;
+ return -augment super;
+ }
+
+ augment void set instanceProperty(int value) {
+ augment super = value;
+ }
+
+ void injectedInstanceMethod() {
+ augment super();
+ augment super;
+ augment int local;
+ augment;
+ }
+}
\ No newline at end of file
diff --git a/pkg/front_end/parser_testcases/general/augment_super.dart.expect b/pkg/front_end/parser_testcases/general/augment_super.dart.expect
new file mode 100644
index 0000000..6eeeb58
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/augment_super.dart.expect
@@ -0,0 +1,790 @@
+Problems reported:
+
+parser/general/augment_super:1:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+augment void topLevelMethod() {
+^^^^^^^
+
+parser/general/augment_super:1:1: Expected ';' after this.
+augment void topLevelMethod() {
+^^^^^^^
+
+parser/general/augment_super:2:11: 'super' can't be used as an identifier because it's a keyword.
+ augment super();
+ ^^^^^
+
+parser/general/augment_super:2:11: Expected ';' after this.
+ augment super();
+ ^^^^^
+
+parser/general/augment_super:2:17: Expected an identifier, but got ')'.
+ augment super();
+ ^
+
+parser/general/augment_super:5:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+augment void topLevelMethodError() {
+^^^^^^^
+
+parser/general/augment_super:5:1: Expected ';' after this.
+augment void topLevelMethodError() {
+^^^^^^^
+
+parser/general/augment_super:6:11: Expected ';' after this.
+ augment int local;
+ ^^^
+
+parser/general/augment_super:11:9: A function declaration needs an explicit list of parameters.
+augment List<int> get topLevelProperty {
+ ^^^^
+
+parser/general/augment_super:11:19: Expected a function body, but got 'get'.
+augment List<int> get topLevelProperty {
+ ^^^
+
+parser/general/augment_super:12:23: Expected ',' before this.
+ return [... augment super, augment super[0]];
+ ^^^^^
+
+parser/general/augment_super:12:38: Expected ',' before this.
+ return [... augment super, augment super[0]];
+ ^^^^^
+
+parser/general/augment_super:15:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+augment void set topLevelProperty(List<int> value) {
+^^^^^^^
+
+parser/general/augment_super:15:1: Expected ';' after this.
+augment void set topLevelProperty(List<int> value) {
+^^^^^^^
+
+parser/general/augment_super:16:11: 'super' can't be used as an identifier because it's a keyword.
+ augment super[0] = value[1];
+ ^^^^^
+
+parser/general/augment_super:16:11: Expected ';' after this.
+ augment super[0] = value[1];
+ ^^^^^
+
+parser/general/augment_super:17:11: 'super' can't be used as an identifier because it's a keyword.
+ augment super = value;
+ ^^^^^
+
+parser/general/augment_super:21:11: 'super' can't be used as an identifier because it's a keyword.
+ augment super();
+ ^^^^^
+
+parser/general/augment_super:21:11: Expected ';' after this.
+ augment super();
+ ^^^^^
+
+parser/general/augment_super:21:17: Expected an identifier, but got ')'.
+ augment super();
+ ^
+
+parser/general/augment_super:22:11: 'super' can't be used as an identifier because it's a keyword.
+ augment super;
+ ^^^^^
+
+parser/general/augment_super:23:11: Expected ';' after this.
+ augment int local;
+ ^^^
+
+parser/general/augment_super:27:1: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+augment class Class {
+^^^^^^^
+
+parser/general/augment_super:27:1: Expected ';' after this.
+augment class Class {
+^^^^^^^
+
+parser/general/augment_super:28:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+ augment void instanceMethod() {
+ ^^^^^^^
+
+parser/general/augment_super:28:3: Expected ';' after this.
+ augment void instanceMethod() {
+ ^^^^^^^
+
+parser/general/augment_super:29:13: 'super' can't be used as an identifier because it's a keyword.
+ augment super();
+ ^^^^^
+
+parser/general/augment_super:29:13: Expected ';' after this.
+ augment super();
+ ^^^^^
+
+parser/general/augment_super:29:19: Expected an identifier, but got ')'.
+ augment super();
+ ^
+
+parser/general/augment_super:32:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+ augment void instanceMethodErrors() {
+ ^^^^^^^
+
+parser/general/augment_super:32:3: Expected ';' after this.
+ augment void instanceMethodErrors() {
+ ^^^^^^^
+
+parser/general/augment_super:33:13: Expected ';' after this.
+ augment int local;
+ ^^^
+
+parser/general/augment_super:37:11: Expected ';' after this.
+ augment int get instanceProperty {
+ ^^^
+
+parser/general/augment_super:38:13: 'super' can't be used as an identifier because it's a keyword.
+ augment super++;
+ ^^^^^
+
+parser/general/augment_super:38:13: Expected ';' after this.
+ augment super++;
+ ^^^^^
+
+parser/general/augment_super:38:20: Expected an identifier, but got ';'.
+ augment super++;
+ ^
+
+parser/general/augment_super:39:7: Expected ';' after this.
+ --augment super;
+ ^^^^^^^
+
+parser/general/augment_super:40:13: Expected ';' after this.
+ return -augment super;
+ ^^^^^^^
+
+parser/general/augment_super:43:3: Variables must be declared using the keywords 'const', 'final', 'var' or a type name.
+ augment void set instanceProperty(int value) {
+ ^^^^^^^
+
+parser/general/augment_super:43:3: Expected ';' after this.
+ augment void set instanceProperty(int value) {
+ ^^^^^^^
+
+parser/general/augment_super:44:13: 'super' can't be used as an identifier because it's a keyword.
+ augment super = value;
+ ^^^^^
+
+parser/general/augment_super:48:13: 'super' can't be used as an identifier because it's a keyword.
+ augment super();
+ ^^^^^
+
+parser/general/augment_super:48:13: Expected ';' after this.
+ augment super();
+ ^^^^^
+
+parser/general/augment_super:48:19: Expected an identifier, but got ')'.
+ augment super();
+ ^
+
+parser/general/augment_super:49:13: 'super' can't be used as an identifier because it's a keyword.
+ augment super;
+ ^^^^^
+
+parser/general/augment_super:50:13: Expected ';' after this.
+ augment int local;
+ ^^^
+
+beginCompilationUnit(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginTopLevelMember(augment)
+ beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, )
+ handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ handleNoType()
+ handleIdentifier(augment, topLevelVariableDeclaration)
+ handleNoFieldInitializer(void)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ endTopLevelFields(null, null, null, null, null, 1, augment, ;)
+ endTopLevelDeclaration(void)
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginTopLevelMember(void)
+ beginTopLevelMethod(;, null, null)
+ handleVoidKeyword(void)
+ handleIdentifier(topLevelMethod, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ handleNoVariableInitializer(super)
+ endInitializedIdentifier(super)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ endVariablesDeclaration(1, ;)
+ handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., Try inserting an identifier before ')'., {lexeme: )}], ), ))
+ handleIdentifier(, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(, ))
+ handleParenthesizedExpression(()
+ handleExpressionStatement(;)
+ endBlockFunctionBody(2, {, })
+ endTopLevelMethod(void, null, })
+ endTopLevelDeclaration(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginTopLevelMember(augment)
+ beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, })
+ handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ handleNoType(})
+ handleIdentifier(augment, topLevelVariableDeclaration)
+ handleNoFieldInitializer(void)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ endTopLevelFields(null, null, null, null, null, 1, augment, ;)
+ endTopLevelDeclaration(void)
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginTopLevelMember(void)
+ beginTopLevelMethod(;, null, null)
+ handleVoidKeyword(void)
+ handleIdentifier(topLevelMethodError, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(int)
+ handleType(augment, null)
+ beginVariablesDeclaration(int, null, null)
+ handleIdentifier(int, localVariableDeclaration)
+ beginInitializedIdentifier(int)
+ handleNoVariableInitializer(int)
+ endInitializedIdentifier(int)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(local, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(local, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(3, {, })
+ endTopLevelMethod(void, null, })
+ endTopLevelDeclaration(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginTopLevelMember(augment)
+ beginTopLevelMethod(}, null, null)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(List)
+ handleType(augment, null)
+ handleIdentifier(List, topLevelFunctionDeclaration)
+ beginTypeVariables(<)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ handleIdentifier(int, typeVariableDeclaration)
+ beginTypeVariable(int)
+ handleTypeVariablesDefined(int, 1)
+ handleNoType(int)
+ endTypeVariable(>, 0, null, null)
+ endTypeVariables(<, >)
+ handleRecoverableError(MissingFunctionParameters, List, List)
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got 'get'., null, {lexeme: get}], get, get)
+ handleInvalidFunctionBody({)
+ endTopLevelMethod(augment, null, })
+ endTopLevelDeclaration(get)
+ beginMetadataStar(get)
+ endMetadataStar(0)
+ beginTopLevelMember(get)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(topLevelProperty, topLevelFunctionDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments([)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(super)
+ handleNoArguments(super)
+ handleSend(augment, super)
+ handleSpreadExpression(...)
+ handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], super, super)
+ handleSuperExpression(super, expression)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(super)
+ handleNoArguments(super)
+ handleSend(augment, super)
+ handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], super, super)
+ handleSuperExpression(super, expression)
+ handleLiteralInt(0)
+ handleIndexedExpression(null, [, ])
+ handleLiteralList(4, [, null, ])
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(get, get, })
+ endTopLevelDeclaration(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginTopLevelMember(augment)
+ beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, })
+ handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ handleNoType(})
+ handleIdentifier(augment, topLevelVariableDeclaration)
+ handleNoFieldInitializer(void)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ endTopLevelFields(null, null, null, null, null, 1, augment, ;)
+ endTopLevelDeclaration(void)
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginTopLevelMember(void)
+ beginTopLevelMethod(;, null, null)
+ handleVoidKeyword(void)
+ handleIdentifier(topLevelProperty, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ beginTypeArguments(<)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(>)
+ handleType(int, null)
+ endTypeArguments(1, <, >)
+ handleType(List, null)
+ handleIdentifier(value, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, value, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ handleNoVariableInitializer(super)
+ endInitializedIdentifier(super)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ endVariablesDeclaration(1, ;)
+ handleNoTypeArguments([)
+ handleLiteralInt(0)
+ handleLiteralList(1, [, null, ])
+ handleIdentifier(value, expression)
+ handleNoTypeArguments([)
+ handleNoArguments([)
+ handleSend(value, [)
+ handleLiteralInt(1)
+ handleIndexedExpression(null, [, ])
+ handleAssignmentExpression(=)
+ handleExpressionStatement(;)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ beginVariableInitializer(=)
+ handleIdentifier(value, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(value, ;)
+ endVariableInitializer(=)
+ endInitializedIdentifier(super)
+ endVariablesDeclaration(1, ;)
+ endBlockFunctionBody(3, {, })
+ endTopLevelMethod(void, set, })
+ endTopLevelDeclaration(void)
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginTopLevelMember(void)
+ beginTopLevelMethod(}, null, null)
+ handleVoidKeyword(void)
+ handleIdentifier(injectedTopLevelMethod, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ handleNoVariableInitializer(super)
+ endInitializedIdentifier(super)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ endVariablesDeclaration(1, ;)
+ handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., Try inserting an identifier before ')'., {lexeme: )}], ), ))
+ handleIdentifier(, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(, ))
+ handleParenthesizedExpression(()
+ handleExpressionStatement(;)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ handleNoVariableInitializer(super)
+ endInitializedIdentifier(super)
+ endVariablesDeclaration(1, ;)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(int)
+ handleType(augment, null)
+ beginVariablesDeclaration(int, null, null)
+ handleIdentifier(int, localVariableDeclaration)
+ beginInitializedIdentifier(int)
+ handleNoVariableInitializer(int)
+ endInitializedIdentifier(int)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(local, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(local, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(6, {, })
+ endTopLevelMethod(void, null, })
+ endTopLevelDeclaration(augment)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginTopLevelMember(augment)
+ beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, })
+ handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ handleNoType(})
+ handleIdentifier(augment, topLevelVariableDeclaration)
+ handleNoFieldInitializer(class)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ endTopLevelFields(null, null, null, null, null, 1, augment, ;)
+ endTopLevelDeclaration(class)
+ beginMetadataStar(class)
+ endMetadataStar(0)
+ beginClassOrMixinOrNamedMixinApplicationPrelude(class)
+ handleIdentifier(Class, classOrMixinDeclaration)
+ handleNoTypeVariables({)
+ beginClassDeclaration(class, null, null, null, Class)
+ handleNoType(Class)
+ handleClassExtends(null, 1)
+ handleClassNoWithClause()
+ handleImplements(null, 0)
+ handleClassHeader(class, class, null)
+ beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginMember()
+ beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
+ handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ handleNoType({)
+ handleIdentifier(augment, fieldDeclaration)
+ handleNoFieldInitializer(void)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ endClassFields(null, null, null, null, null, null, null, 1, augment, ;)
+ endMember()
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, null, null, null, null, null, null, instanceMethod)
+ handleVoidKeyword(void)
+ handleIdentifier(instanceMethod, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ handleNoVariableInitializer(super)
+ endInitializedIdentifier(super)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ endVariablesDeclaration(1, ;)
+ handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., Try inserting an identifier before ')'., {lexeme: )}], ), ))
+ handleIdentifier(, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(, ))
+ handleParenthesizedExpression(()
+ handleExpressionStatement(;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, void, (, null, })
+ endMember()
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginMember()
+ beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
+ handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ handleNoType(})
+ handleIdentifier(augment, fieldDeclaration)
+ handleNoFieldInitializer(void)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ endClassFields(null, null, null, null, null, null, null, 1, augment, ;)
+ endMember()
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, null, null, null, null, null, null, instanceMethodErrors)
+ handleVoidKeyword(void)
+ handleIdentifier(instanceMethodErrors, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(int)
+ handleType(augment, null)
+ beginVariablesDeclaration(int, null, null)
+ handleIdentifier(int, localVariableDeclaration)
+ beginInitializedIdentifier(int)
+ handleNoVariableInitializer(int)
+ endInitializedIdentifier(int)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(local, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(local, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(3, {, })
+ endClassMethod(null, void, (, null, })
+ endMember()
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginMember()
+ beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(int)
+ handleType(augment, null)
+ handleIdentifier(int, fieldDeclaration)
+ handleNoFieldInitializer(get)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ endClassFields(null, null, null, null, null, null, null, 1, augment, ;)
+ endMember()
+ beginMetadataStar(get)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, null, null, null, null, null, get, instanceProperty)
+ handleNoType(;)
+ handleIdentifier(instanceProperty, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ handleNoVariableInitializer(super)
+ endInitializedIdentifier(super)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ endVariablesDeclaration(1, ;)
+ handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
+ handleIdentifier(, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(, ;)
+ handleUnaryPrefixAssignmentExpression(++)
+ handleExpressionStatement(;)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(super)
+ handleNoArguments(super)
+ handleSend(augment, super)
+ handleUnaryPrefixAssignmentExpression(--)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ handleExpressionStatement(;)
+ handleSuperExpression(super, expression)
+ handleExpressionStatement(;)
+ beginReturnStatement(return)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(super)
+ handleNoArguments(super)
+ handleSend(augment, super)
+ handleUnaryPrefixExpression(-)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ endReturnStatement(true, return, ;)
+ handleSuperExpression(super, expression)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(6, {, })
+ endClassMethod(get, get, {, null, })
+ endMember()
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ beginMember()
+ beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
+ handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ handleNoType(})
+ handleIdentifier(augment, fieldDeclaration)
+ handleNoFieldInitializer(void)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ endClassFields(null, null, null, null, null, null, null, 1, augment, ;)
+ endMember()
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, null, null, null, null, null, set, instanceProperty)
+ handleVoidKeyword(void)
+ handleIdentifier(instanceProperty, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(value)
+ handleType(int, null)
+ handleIdentifier(value, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, value, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
+ endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ beginVariableInitializer(=)
+ handleIdentifier(value, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(value, ;)
+ endVariableInitializer(=)
+ endInitializedIdentifier(super)
+ endVariablesDeclaration(1, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(set, void, (, null, })
+ endMember()
+ beginMetadataStar(void)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(DeclarationKind.Class, null, null, null, null, null, null, injectedInstanceMethod)
+ handleVoidKeyword(void)
+ handleIdentifier(injectedInstanceMethod, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ endFormalParameters(0, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ handleNoVariableInitializer(super)
+ endInitializedIdentifier(super)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ endVariablesDeclaration(1, ;)
+ handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., Try inserting an identifier before ')'., {lexeme: )}], ), ))
+ handleIdentifier(, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(, ))
+ handleParenthesizedExpression(()
+ handleExpressionStatement(;)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(super)
+ handleType(augment, null)
+ beginVariablesDeclaration(super, null, null)
+ handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ handleIdentifier(super, localVariableDeclaration)
+ beginInitializedIdentifier(super)
+ handleNoVariableInitializer(super)
+ endInitializedIdentifier(super)
+ endVariablesDeclaration(1, ;)
+ beginMetadataStar(augment)
+ endMetadataStar(0)
+ handleIdentifier(augment, typeReference)
+ handleNoTypeArguments(int)
+ handleType(augment, null)
+ beginVariablesDeclaration(int, null, null)
+ handleIdentifier(int, localVariableDeclaration)
+ beginInitializedIdentifier(int)
+ handleNoVariableInitializer(int)
+ endInitializedIdentifier(int)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(local, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(local, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(augment, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(augment, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(6, {, })
+ endClassMethod(null, void, (, null, })
+ endMember()
+ endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
+ endClassDeclaration(class, })
+ endTopLevelDeclaration()
+endCompilationUnit(11, )
diff --git a/pkg/front_end/parser_testcases/general/augment_super.dart.intertwined.expect b/pkg/front_end/parser_testcases/general/augment_super.dart.intertwined.expect
new file mode 100644
index 0000000..4cb40bd
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/augment_super.dart.intertwined.expect
@@ -0,0 +1,1473 @@
+parseUnit(augment)
+ skipErrorTokens(augment)
+ listener: beginCompilationUnit(augment)
+ syntheticPreviousToken(augment)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl()
+ listener: beginTopLevelMember(augment)
+ isReservedKeyword(void)
+ indicatesMethodOrField(topLevelMethod)
+ parseFields(, null, null, null, null, null, null, null, , Instance of 'NoType', augment, DeclarationKind.TopLevel, null, false)
+ listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, )
+ reportRecoverableError(augment, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ listener: handleNoType()
+ ensureIdentifierPotentiallyRecovered(, topLevelVariableDeclaration, false)
+ listener: handleIdentifier(augment, topLevelVariableDeclaration)
+ parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.TopLevel, null)
+ listener: handleNoFieldInitializer(void)
+ ensureSemicolon(augment)
+ reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ rewriter()
+ listener: endTopLevelFields(null, null, null, null, null, 1, augment, ;)
+ listener: endTopLevelDeclaration(void)
+ parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+ parseMetadataStar(;)
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(;)
+ listener: beginTopLevelMember(void)
+ parseTopLevelMethod(;, null, null, ;, Instance of 'VoidType', null, topLevelMethod, false)
+ listener: beginTopLevelMethod(;, null, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(topLevelMethod, topLevelFunctionDeclaration)
+ parseMethodTypeVar(topLevelMethod)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(topLevelMethod, topLevelMethod, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(topLevelMethod, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: handleNoVariableInitializer(super)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(super)
+ reportRecoverableError(super, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, ()
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(()
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseParenthesizedExpressionOrFunctionLiteral(;)
+ parseParenthesizedExpression(;)
+ parseExpressionInParenthesis(;)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSend((, expression)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., Try inserting an identifier before ')'., {lexeme: )}], ), ))
+ rewriter()
+ listener: handleIdentifier(, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt()
+ listener: handleNoArguments())
+ listener: handleSend(, ))
+ ensureCloseParen(, ()
+ listener: handleParenthesizedExpression(()
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endTopLevelMethod(void, null, })
+ listener: endTopLevelDeclaration(augment)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(augment)
+ isReservedKeyword(void)
+ indicatesMethodOrField(topLevelMethodError)
+ parseFields(}, null, null, null, null, null, null, null, }, Instance of 'NoType', augment, DeclarationKind.TopLevel, null, false)
+ listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, })
+ reportRecoverableError(augment, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelVariableDeclaration, false)
+ listener: handleIdentifier(augment, topLevelVariableDeclaration)
+ parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.TopLevel, null)
+ listener: handleNoFieldInitializer(void)
+ ensureSemicolon(augment)
+ reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ rewriter()
+ listener: endTopLevelFields(null, null, null, null, null, 1, augment, ;)
+ listener: endTopLevelDeclaration(void)
+ parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+ parseMetadataStar(;)
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(;)
+ listener: beginTopLevelMember(void)
+ parseTopLevelMethod(;, null, null, ;, Instance of 'VoidType', null, topLevelMethodError, false)
+ listener: beginTopLevelMethod(;, null, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(topLevelMethodError, topLevelFunctionDeclaration)
+ parseMethodTypeVar(topLevelMethodError)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(topLevelMethodError, topLevelMethodError, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(topLevelMethodError, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(int)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(int)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(int, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ listener: handleIdentifier(int, localVariableDeclaration)
+ listener: beginInitializedIdentifier(int)
+ parseVariableInitializerOpt(int)
+ listener: handleNoVariableInitializer(int)
+ listener: endInitializedIdentifier(int)
+ ensureSemicolon(int)
+ reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, local)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(local)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(local, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(local)
+ listener: handleNoArguments(;)
+ listener: handleSend(local, ;)
+ ensureSemicolon(local)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(augment)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(;)
+ listener: handleSend(augment, ;)
+ ensureSemicolon(augment)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(3, {, })
+ listener: endTopLevelMethod(void, null, })
+ listener: endTopLevelDeclaration(augment)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(augment)
+ parseTopLevelMethod(}, null, null, }, Instance of 'SimpleType', null, List, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(List)
+ listener: handleType(augment, null)
+ ensureIdentifierPotentiallyRecovered(augment, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(List, topLevelFunctionDeclaration)
+ parseMethodTypeVar(List)
+ listener: beginTypeVariables(<)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeVariableDeclaration)
+ listener: beginTypeVariable(int)
+ listener: handleTypeVariablesDefined(int, 1)
+ listener: handleNoType(int)
+ listener: endTypeVariable(>, 0, null, null)
+ listener: endTypeVariables(<, >)
+ parseGetterOrFormalParameters(>, List, false, MemberKind.TopLevelMethod)
+ missingParameterMessage(MemberKind.TopLevelMethod)
+ reportRecoverableError(List, MissingFunctionParameters)
+ listener: handleRecoverableError(MissingFunctionParameters, List, List)
+ rewriter()
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ ensureBlock(), Instance of 'Template<(Token) => Message>', null)
+ reportRecoverableError(get, Message[ExpectedFunctionBody, Expected a function body, but got 'get'., null, {lexeme: get}])
+ listener: handleRecoverableError(Message[ExpectedFunctionBody, Expected a function body, but got 'get'., null, {lexeme: get}], get, get)
+ insertBlock())
+ rewriter()
+ rewriter()
+ listener: handleInvalidFunctionBody({)
+ listener: endTopLevelMethod(augment, null, })
+ listener: endTopLevelDeclaration(get)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(get)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(get)
+ isReservedKeyword({)
+ parseTopLevelMethod(}, null, null, }, Instance of 'NoType', get, topLevelProperty, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(get, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(topLevelProperty, topLevelFunctionDeclaration)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(topLevelProperty, topLevelProperty, true, MemberKind.TopLevelMethod)
+ listener: handleNoFormalParameters({, MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt(topLevelProperty)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(topLevelProperty, false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ listener: handleNoTypeArguments([)
+ parseLiteralListSuffix(return, null)
+ parseExpression(...)
+ parsePrecedenceExpression(..., 1, true)
+ parseUnaryExpression(..., true)
+ parsePrimary(..., expression)
+ parseSendOrFunctionLiteral(..., expression)
+ parseSend(..., expression)
+ isNextIdentifier(...)
+ ensureIdentifier(..., expression)
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(super)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(super)
+ listener: handleSend(augment, super)
+ listener: handleSpreadExpression(...)
+ rewriteAndRecover(augment, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
+ reportRecoverableError(super, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
+ listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], super, super)
+ rewriter()
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSuperExpression(,, expression)
+ listener: handleSuperExpression(super, expression)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ isNextIdentifier(,)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(super)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(super)
+ listener: handleSend(augment, super)
+ rewriteAndRecover(augment, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], ,)
+ reportRecoverableError(super, Message[ExpectedButGot, Expected ',' before this., null, {string: ,}])
+ listener: handleRecoverableError(Message[ExpectedButGot, Expected ',' before this., null, {string: ,}], super, super)
+ rewriter()
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSuperExpression(,, expression)
+ listener: handleSuperExpression(super, expression)
+ parseArgumentOrIndexStar(super, Instance of 'NoTypeParamOrArg', false)
+ parseExpression([)
+ parsePrecedenceExpression([, 1, true)
+ parseUnaryExpression([, true)
+ parsePrimary([, expression)
+ parseLiteralInt([)
+ listener: handleLiteralInt(0)
+ listener: handleIndexedExpression(null, [, ])
+ listener: handleLiteralList(4, [, null, ])
+ ensureSemicolon(])
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(get, get, })
+ listener: endTopLevelDeclaration(augment)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(augment)
+ isReservedKeyword(void)
+ indicatesMethodOrField(set)
+ parseFields(}, null, null, null, null, null, null, null, }, Instance of 'NoType', augment, DeclarationKind.TopLevel, null, false)
+ listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, })
+ reportRecoverableError(augment, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelVariableDeclaration, false)
+ listener: handleIdentifier(augment, topLevelVariableDeclaration)
+ parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.TopLevel, null)
+ listener: handleNoFieldInitializer(void)
+ ensureSemicolon(augment)
+ reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ rewriter()
+ listener: endTopLevelFields(null, null, null, null, null, 1, augment, ;)
+ listener: endTopLevelDeclaration(void)
+ parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+ parseMetadataStar(;)
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(;)
+ listener: beginTopLevelMember(void)
+ parseTopLevelMethod(;, null, null, ;, Instance of 'VoidType', set, topLevelProperty, false)
+ listener: beginTopLevelMethod(;, null, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(set, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(topLevelProperty, topLevelFunctionDeclaration)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(topLevelProperty, topLevelProperty, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(topLevelProperty, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: beginTypeArguments(<)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(>)
+ listener: handleType(int, null)
+ listener: endTypeArguments(1, <, >)
+ listener: handleType(List, null)
+ ensureIdentifier(>, formalParameterDeclaration)
+ listener: handleIdentifier(value, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, value, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(1, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: handleNoVariableInitializer(super)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(super)
+ reportRecoverableError(super, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, [)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction([)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ listener: handleNoTypeArguments([)
+ parseLiteralListSuffix(;, null)
+ parseExpression([)
+ parsePrecedenceExpression([, 1, true)
+ parseUnaryExpression([, true)
+ parsePrimary([, expression)
+ parseLiteralInt([)
+ listener: handleLiteralInt(0)
+ listener: handleLiteralList(1, [, null, ])
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ isNextIdentifier(=)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(value, expression)
+ listener: handleNoTypeArguments([)
+ parseArgumentsOpt(value)
+ listener: handleNoArguments([)
+ listener: handleSend(value, [)
+ parseArgumentOrIndexStar(value, Instance of 'NoTypeParamOrArg', false)
+ parseExpression([)
+ parsePrecedenceExpression([, 1, true)
+ parseUnaryExpression([, true)
+ parsePrimary([, expression)
+ parseLiteralInt([)
+ listener: handleLiteralInt(1)
+ listener: handleIndexedExpression(null, [, ])
+ listener: handleAssignmentExpression(=)
+ ensureSemicolon(])
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: beginVariableInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ isNextIdentifier(=)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(value, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(value)
+ listener: handleNoArguments(;)
+ listener: handleSend(value, ;)
+ listener: endVariableInitializer(=)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(value)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(3, {, })
+ listener: endTopLevelMethod(void, set, })
+ listener: endTopLevelDeclaration(void)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(void)
+ parseTopLevelMethod(}, null, null, }, Instance of 'VoidType', null, injectedTopLevelMethod, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(injectedTopLevelMethod, topLevelFunctionDeclaration)
+ parseMethodTypeVar(injectedTopLevelMethod)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(injectedTopLevelMethod, injectedTopLevelMethod, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(injectedTopLevelMethod, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(0, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: handleNoVariableInitializer(super)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(super)
+ reportRecoverableError(super, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, ()
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(()
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseParenthesizedExpressionOrFunctionLiteral(;)
+ parseParenthesizedExpression(;)
+ parseExpressionInParenthesis(;)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSend((, expression)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., Try inserting an identifier before ')'., {lexeme: )}], ), ))
+ rewriter()
+ listener: handleIdentifier(, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt()
+ listener: handleNoArguments())
+ listener: handleSend(, ))
+ ensureCloseParen(, ()
+ listener: handleParenthesizedExpression(()
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: handleNoVariableInitializer(super)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(super)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(int)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(int)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(int, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ listener: handleIdentifier(int, localVariableDeclaration)
+ listener: beginInitializedIdentifier(int)
+ parseVariableInitializerOpt(int)
+ listener: handleNoVariableInitializer(int)
+ listener: endInitializedIdentifier(int)
+ ensureSemicolon(int)
+ reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, local)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(local)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(local, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(local)
+ listener: handleNoArguments(;)
+ listener: handleSend(local, ;)
+ ensureSemicolon(local)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(augment)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(;)
+ listener: handleSend(augment, ;)
+ ensureSemicolon(augment)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(6, {, })
+ listener: endTopLevelMethod(void, null, })
+ listener: endTopLevelDeclaration(augment)
+ parseTopLevelDeclarationImpl(}, Instance of 'DirectiveContext')
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(augment)
+ isReservedKeyword(class)
+ indicatesMethodOrField(Class)
+ parseFields(}, null, null, null, null, null, null, null, }, Instance of 'NoType', augment, DeclarationKind.TopLevel, null, false)
+ listener: beginFields(DeclarationKind.TopLevel, null, null, null, null, null, null, null, })
+ reportRecoverableError(augment, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelVariableDeclaration, false)
+ listener: handleIdentifier(augment, topLevelVariableDeclaration)
+ parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.TopLevel, null)
+ listener: handleNoFieldInitializer(class)
+ ensureSemicolon(augment)
+ reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ rewriter()
+ listener: endTopLevelFields(null, null, null, null, null, 1, augment, ;)
+ listener: endTopLevelDeclaration(class)
+ parseTopLevelDeclarationImpl(;, Instance of 'DirectiveContext')
+ parseMetadataStar(;)
+ listener: beginMetadataStar(class)
+ listener: endMetadataStar(0)
+ parseTopLevelKeywordDeclaration(;, class, null, Instance of 'DirectiveContext')
+ parseClassOrNamedMixinApplication(null, null, null, class)
+ listener: beginClassOrMixinOrNamedMixinApplicationPrelude(class)
+ ensureIdentifier(class, classOrMixinDeclaration)
+ listener: handleIdentifier(Class, classOrMixinDeclaration)
+ listener: handleNoTypeVariables({)
+ listener: beginClassDeclaration(class, null, null, null, Class)
+ parseClass(Class, class, class, Class)
+ parseClassHeaderOpt(Class, class, class)
+ parseClassExtendsOpt(Class)
+ listener: handleNoType(Class)
+ listener: handleClassExtends(null, 1)
+ parseClassWithClauseOpt(Class)
+ listener: handleClassNoWithClause()
+ parseClassOrMixinOrEnumImplementsOpt(Class)
+ listener: handleImplements(null, 0)
+ listener: handleClassHeader(class, class, null)
+ parseClassOrMixinOrExtensionBody(Class, DeclarationKind.Class, Class)
+ listener: beginClassOrMixinOrExtensionBody(DeclarationKind.Class, {)
+ notEofOrValue(}, augment)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl({, DeclarationKind.Class, Class)
+ parseMetadataStar({)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(void)
+ indicatesMethodOrField(instanceMethod)
+ parseFields({, null, null, null, null, null, null, null, {, Instance of 'NoType', augment, DeclarationKind.Class, Class, false)
+ listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, {)
+ reportRecoverableError(augment, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ listener: handleNoType({)
+ ensureIdentifierPotentiallyRecovered({, fieldDeclaration, false)
+ listener: handleIdentifier(augment, fieldDeclaration)
+ parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.Class, Class)
+ listener: handleNoFieldInitializer(void)
+ ensureSemicolon(augment)
+ reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ rewriter()
+ listener: endClassFields(null, null, null, null, null, null, null, 1, augment, ;)
+ listener: endMember()
+ notEofOrValue(}, void)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Class)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'VoidType', null, instanceMethod, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, instanceMethod)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
+ listener: handleIdentifier(instanceMethod, methodDeclaration)
+ parseQualifiedRestOpt(instanceMethod, methodDeclarationContinuation)
+ parseMethodTypeVar(instanceMethod)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(instanceMethod, instanceMethod, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(instanceMethod, 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({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: handleNoVariableInitializer(super)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(super)
+ reportRecoverableError(super, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, ()
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(()
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseParenthesizedExpressionOrFunctionLiteral(;)
+ parseParenthesizedExpression(;)
+ parseExpressionInParenthesis(;)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSend((, expression)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., Try inserting an identifier before ')'., {lexeme: )}], ), ))
+ rewriter()
+ listener: handleIdentifier(, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt()
+ listener: handleNoArguments())
+ listener: handleSend(, ))
+ ensureCloseParen(, ()
+ listener: handleParenthesizedExpression(()
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, void, (, null, })
+ listener: endMember()
+ notEofOrValue(}, augment)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, Class)
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(void)
+ indicatesMethodOrField(instanceMethodErrors)
+ parseFields(}, null, null, null, null, null, null, null, }, Instance of 'NoType', augment, DeclarationKind.Class, Class, false)
+ listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
+ reportRecoverableError(augment, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, fieldDeclaration, false)
+ listener: handleIdentifier(augment, fieldDeclaration)
+ parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.Class, Class)
+ listener: handleNoFieldInitializer(void)
+ ensureSemicolon(augment)
+ reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ rewriter()
+ listener: endClassFields(null, null, null, null, null, null, null, 1, augment, ;)
+ listener: endMember()
+ notEofOrValue(}, void)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Class)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'VoidType', null, instanceMethodErrors, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, instanceMethodErrors)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
+ listener: handleIdentifier(instanceMethodErrors, methodDeclaration)
+ parseQualifiedRestOpt(instanceMethodErrors, methodDeclarationContinuation)
+ parseMethodTypeVar(instanceMethodErrors)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(instanceMethodErrors, instanceMethodErrors, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(instanceMethodErrors, 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({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(int)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(int)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(int, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ listener: handleIdentifier(int, localVariableDeclaration)
+ listener: beginInitializedIdentifier(int)
+ parseVariableInitializerOpt(int)
+ listener: handleNoVariableInitializer(int)
+ listener: endInitializedIdentifier(int)
+ ensureSemicolon(int)
+ reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, local)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(local)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(local, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(local)
+ listener: handleNoArguments(;)
+ listener: handleSend(local, ;)
+ ensureSemicolon(local)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(augment)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(;)
+ listener: handleSend(augment, ;)
+ ensureSemicolon(augment)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(3, {, })
+ listener: endClassMethod(null, void, (, null, })
+ listener: endMember()
+ notEofOrValue(}, augment)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, Class)
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseFields(}, null, null, null, null, null, null, null, }, Instance of 'SimpleType', int, DeclarationKind.Class, Class, false)
+ listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(int)
+ listener: handleType(augment, null)
+ ensureIdentifierPotentiallyRecovered(augment, fieldDeclaration, false)
+ listener: handleIdentifier(int, fieldDeclaration)
+ parseFieldInitializerOpt(int, int, null, null, null, null, null, DeclarationKind.Class, Class)
+ listener: handleNoFieldInitializer(get)
+ ensureSemicolon(int)
+ reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ rewriter()
+ listener: endClassFields(null, null, null, null, null, null, null, 1, augment, ;)
+ listener: endMember()
+ notEofOrValue(}, get)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Class)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(get)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'NoType', get, instanceProperty, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, get, instanceProperty)
+ listener: handleNoType(;)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(instanceProperty, methodDeclaration)
+ parseQualifiedRestOpt(instanceProperty, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(instanceProperty, instanceProperty, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(instanceProperty)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(instanceProperty)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(instanceProperty, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: handleNoVariableInitializer(super)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(super)
+ reportRecoverableError(super, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, ++)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(++)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrecedenceExpression(++, 16, true)
+ parseUnaryExpression(++, true)
+ parsePrimary(++, expression)
+ parseSend(++, expression)
+ isNextIdentifier(++)
+ ensureIdentifier(++, expression)
+ reportRecoverableErrorWithToken(;, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ';'., Try inserting an identifier before ';'., {lexeme: ;}], ;, ;)
+ rewriter()
+ listener: handleIdentifier(, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt()
+ listener: handleNoArguments(;)
+ listener: handleSend(, ;)
+ listener: handleUnaryPrefixAssignmentExpression(++)
+ ensureSemicolon()
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, --)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(--)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrecedenceExpression(--, 16, true)
+ parseUnaryExpression(--, true)
+ parsePrimary(--, expression)
+ parseSendOrFunctionLiteral(--, expression)
+ parseSend(--, expression)
+ isNextIdentifier(--)
+ ensureIdentifier(--, expression)
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(super)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(super)
+ listener: handleSend(augment, super)
+ listener: handleUnaryPrefixAssignmentExpression(--)
+ ensureSemicolon(augment)
+ reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ rewriter()
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, super)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(super)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSuperExpression(;, expression)
+ listener: handleSuperExpression(super, expression)
+ ensureSemicolon(super)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, return)
+ parseStatement(;)
+ parseStatementX(;)
+ parseReturnStatement(;)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrecedenceExpression(-, 16, true)
+ parseUnaryExpression(-, true)
+ parsePrimary(-, expression)
+ parseSendOrFunctionLiteral(-, expression)
+ parseSend(-, expression)
+ isNextIdentifier(-)
+ ensureIdentifier(-, expression)
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(super)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(super)
+ listener: handleSend(augment, super)
+ listener: handleUnaryPrefixExpression(-)
+ ensureSemicolon(augment)
+ reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ rewriter()
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, super)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(super)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSuperExpression(;, expression)
+ listener: handleSuperExpression(super, expression)
+ ensureSemicolon(super)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(6, {, })
+ listener: endClassMethod(get, get, {, null, })
+ listener: endMember()
+ notEofOrValue(}, augment)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, Class)
+ parseMetadataStar(})
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(void)
+ indicatesMethodOrField(set)
+ parseFields(}, null, null, null, null, null, null, null, }, Instance of 'NoType', augment, DeclarationKind.Class, Class, false)
+ listener: beginFields(DeclarationKind.Class, null, null, null, null, null, null, null, })
+ reportRecoverableError(augment, MissingConstFinalVarOrType)
+ listener: handleRecoverableError(MissingConstFinalVarOrType, augment, augment)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, fieldDeclaration, false)
+ listener: handleIdentifier(augment, fieldDeclaration)
+ parseFieldInitializerOpt(augment, augment, null, null, null, null, null, DeclarationKind.Class, Class)
+ listener: handleNoFieldInitializer(void)
+ ensureSemicolon(augment)
+ reportRecoverableError(augment, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], augment, augment)
+ rewriter()
+ listener: endClassFields(null, null, null, null, null, null, null, 1, augment, ;)
+ listener: endMember()
+ notEofOrValue(}, void)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(;, DeclarationKind.Class, Class)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, null, ;, Instance of 'VoidType', set, instanceProperty, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, set, instanceProperty)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(set, methodDeclaration, false)
+ listener: handleIdentifier(instanceProperty, methodDeclaration)
+ parseQualifiedRestOpt(instanceProperty, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(instanceProperty, instanceProperty, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(instanceProperty, 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(value)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(value, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, value, null, null, FormalParameterKind.requiredPositional, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(1, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: beginVariableInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ isNextIdentifier(=)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(value, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(value)
+ listener: handleNoArguments(;)
+ listener: handleSend(value, ;)
+ listener: endVariableInitializer(=)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(value)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(set, void, (, null, })
+ listener: endMember()
+ notEofOrValue(}, void)
+ parseClassOrMixinOrExtensionOrEnumMemberImpl(}, DeclarationKind.Class, Class)
+ parseMetadataStar(})
+ listener: beginMetadataStar(void)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, null, }, Instance of 'VoidType', null, injectedInstanceMethod, DeclarationKind.Class, Class, false)
+ listener: beginMethod(DeclarationKind.Class, null, null, null, null, null, null, injectedInstanceMethod)
+ listener: handleVoidKeyword(void)
+ ensureIdentifierPotentiallyRecovered(void, methodDeclaration, false)
+ listener: handleIdentifier(injectedInstanceMethod, methodDeclaration)
+ parseQualifiedRestOpt(injectedInstanceMethod, methodDeclarationContinuation)
+ parseMethodTypeVar(injectedInstanceMethod)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(injectedInstanceMethod, injectedInstanceMethod, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(injectedInstanceMethod, 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({)
+ notEofOrValue(}, augment)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: handleNoVariableInitializer(super)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(super)
+ reportRecoverableError(super, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], super, super)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, ()
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclaration(;, false)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(()
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseParenthesizedExpressionOrFunctionLiteral(;)
+ parseParenthesizedExpression(;)
+ parseExpressionInParenthesis(;)
+ parseExpressionInParenthesisRest(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSend((, expression)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ reportRecoverableErrorWithToken(), Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifier, Expected an identifier, but got ')'., Try inserting an identifier before ')'., {lexeme: )}], ), ))
+ rewriter()
+ listener: handleIdentifier(, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt()
+ listener: handleNoArguments())
+ listener: handleSend(, ))
+ ensureCloseParen(, ()
+ listener: handleParenthesizedExpression(()
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(super)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(super)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(super, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ reportRecoverableErrorWithToken(super, Instance of 'Template<(Token) => Message>')
+ listener: handleRecoverableError(Message[ExpectedIdentifierButGotKeyword, 'super' 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: super}], super, super)
+ listener: handleIdentifier(super, localVariableDeclaration)
+ listener: beginInitializedIdentifier(super)
+ parseVariableInitializerOpt(super)
+ listener: handleNoVariableInitializer(super)
+ listener: endInitializedIdentifier(super)
+ ensureSemicolon(super)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(int)
+ listener: beginMetadataStar(augment)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(augment, typeReference)
+ listener: handleNoTypeArguments(int)
+ listener: handleType(augment, null)
+ listener: beginVariablesDeclaration(int, null, null)
+ parseVariablesDeclarationRest(augment, true)
+ parseOptionallyInitializedIdentifier(augment)
+ ensureIdentifier(augment, localVariableDeclaration)
+ listener: handleIdentifier(int, localVariableDeclaration)
+ listener: beginInitializedIdentifier(int)
+ parseVariableInitializerOpt(int)
+ listener: handleNoVariableInitializer(int)
+ listener: endInitializedIdentifier(int)
+ ensureSemicolon(int)
+ reportRecoverableError(int, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], int, int)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, local)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(local)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(local, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(local)
+ listener: handleNoArguments(;)
+ listener: handleSend(local, ;)
+ ensureSemicolon(local)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, augment)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(augment)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ isNextIdentifier(;)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(augment, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(augment)
+ listener: handleNoArguments(;)
+ listener: handleSend(augment, ;)
+ ensureSemicolon(augment)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(6, {, })
+ listener: endClassMethod(null, void, (, null, })
+ listener: endMember()
+ notEofOrValue(}, })
+ listener: endClassOrMixinOrExtensionBody(DeclarationKind.Class, 9, {, })
+ listener: endClassDeclaration(class, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(augment)
+ listener: endCompilationUnit(11, )
diff --git a/pkg/front_end/parser_testcases/general/augment_super.dart.parser.expect b/pkg/front_end/parser_testcases/general/augment_super.dart.parser.expect
new file mode 100644
index 0000000..0e2e061
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/augment_super.dart.parser.expect
@@ -0,0 +1,109 @@
+NOTICE: Stream was rewritten by parser!
+
+augment ;void topLevelMethod() {
+augment super;(*synthetic*);
+}
+
+augment ;void topLevelMethodError() {
+augment int ;local;
+augment;
+}
+
+
+augment List<int> (){}get topLevelProperty {
+return [... augment ,super, augment ,super[0]];
+}
+
+augment ;void set topLevelProperty(List<int> value) {
+augment super;[0] = value[1];
+augment super = value;
+}
+
+void injectedTopLevelMethod() {
+augment super;(*synthetic*);
+augment super;
+augment int ;local;
+augment;
+}
+
+augment ;class Class {
+augment ;void instanceMethod() {
+augment super;(*synthetic*);
+}
+
+augment ;void instanceMethodErrors() {
+augment int ;local;
+augment;
+}
+
+augment int ;get instanceProperty {
+augment super;++*synthetic*;
+--augment ;super;
+return -augment ;super;
+}
+
+augment ;void set instanceProperty(int value) {
+augment super = value;
+}
+
+void injectedInstanceMethod() {
+augment super;(*synthetic*);
+augment super;
+augment int ;local;
+augment;
+}
+}
+
+augment[StringToken] ;[SyntheticToken]void[KeywordToken] topLevelMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken];[SyntheticToken]([BeginToken][SyntheticStringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] ;[SyntheticToken]void[KeywordToken] topLevelMethodError[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] int[StringToken] ;[SyntheticToken]local[StringToken];[SimpleToken]
+augment[StringToken];[SimpleToken]
+}[SimpleToken]
+
+
+augment[StringToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] ([SyntheticBeginToken])[SyntheticToken]{[SyntheticBeginToken]}[SyntheticToken]get[KeywordToken] topLevelProperty[StringToken] {[BeginToken]
+return[KeywordToken] [[BeginToken]...[SimpleToken] augment[StringToken] ,[SyntheticToken]super[KeywordToken],[SimpleToken] augment[StringToken] ,[SyntheticToken]super[KeywordToken][[BeginToken]0[StringToken]][SimpleToken]][SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] ;[SyntheticToken]void[KeywordToken] set[KeywordToken] topLevelProperty[StringToken]([BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] value[StringToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken];[SyntheticToken][[BeginToken]0[StringToken]][SimpleToken] =[SimpleToken] value[StringToken][[BeginToken]1[StringToken]][SimpleToken];[SimpleToken]
+augment[StringToken] super[KeywordToken] =[SimpleToken] value[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] injectedTopLevelMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken];[SyntheticToken]([BeginToken][SyntheticStringToken])[SimpleToken];[SimpleToken]
+augment[StringToken] super[KeywordToken];[SimpleToken]
+augment[StringToken] int[StringToken] ;[SyntheticToken]local[StringToken];[SimpleToken]
+augment[StringToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] ;[SyntheticToken]class[KeywordToken] Class[StringToken] {[BeginToken]
+augment[StringToken] ;[SyntheticToken]void[KeywordToken] instanceMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken];[SyntheticToken]([BeginToken][SyntheticStringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] ;[SyntheticToken]void[KeywordToken] instanceMethodErrors[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] int[StringToken] ;[SyntheticToken]local[StringToken];[SimpleToken]
+augment[StringToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] int[StringToken] ;[SyntheticToken]get[KeywordToken] instanceProperty[StringToken] {[BeginToken]
+augment[StringToken] super[KeywordToken];[SyntheticToken]++[SimpleToken][SyntheticStringToken];[SimpleToken]
+--[SimpleToken]augment[StringToken] ;[SyntheticToken]super[KeywordToken];[SimpleToken]
+return[KeywordToken] -[SimpleToken]augment[StringToken] ;[SyntheticToken]super[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] ;[SyntheticToken]void[KeywordToken] set[KeywordToken] instanceProperty[StringToken]([BeginToken]int[StringToken] value[StringToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken] =[SimpleToken] value[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] injectedInstanceMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken];[SyntheticToken]([BeginToken][SyntheticStringToken])[SimpleToken];[SimpleToken]
+augment[StringToken] super[KeywordToken];[SimpleToken]
+augment[StringToken] int[StringToken] ;[SyntheticToken]local[StringToken];[SimpleToken]
+augment[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/parser_testcases/general/augment_super.dart.scanner.expect b/pkg/front_end/parser_testcases/general/augment_super.dart.scanner.expect
new file mode 100644
index 0000000..b6d4e43
--- /dev/null
+++ b/pkg/front_end/parser_testcases/general/augment_super.dart.scanner.expect
@@ -0,0 +1,107 @@
+augment void topLevelMethod() {
+augment super();
+}
+
+augment void topLevelMethodError() {
+augment int local;
+augment;
+}
+
+
+augment List<int> get topLevelProperty {
+return [... augment super, augment super[0]];
+}
+
+augment void set topLevelProperty(List<int> value) {
+augment super[0] = value[1];
+augment super = value;
+}
+
+void injectedTopLevelMethod() {
+augment super();
+augment super;
+augment int local;
+augment;
+}
+
+augment class Class {
+augment void instanceMethod() {
+augment super();
+}
+
+augment void instanceMethodErrors() {
+augment int local;
+augment;
+}
+
+augment int get instanceProperty {
+augment super++;
+--augment super;
+return -augment super;
+}
+
+augment void set instanceProperty(int value) {
+augment super = value;
+}
+
+void injectedInstanceMethod() {
+augment super();
+augment super;
+augment int local;
+augment;
+}
+}
+
+augment[StringToken] void[KeywordToken] topLevelMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] void[KeywordToken] topLevelMethodError[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[StringToken];[SimpleToken]
+}[SimpleToken]
+
+
+augment[StringToken] List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] get[KeywordToken] topLevelProperty[StringToken] {[BeginToken]
+return[KeywordToken] [[BeginToken]...[SimpleToken] augment[StringToken] super[KeywordToken],[SimpleToken] augment[StringToken] super[KeywordToken][[BeginToken]0[StringToken]][SimpleToken]][SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] void[KeywordToken] set[KeywordToken] topLevelProperty[StringToken]([BeginToken]List[StringToken]<[BeginToken]int[StringToken]>[SimpleToken] value[StringToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken][[BeginToken]0[StringToken]][SimpleToken] =[SimpleToken] value[StringToken][[BeginToken]1[StringToken]][SimpleToken];[SimpleToken]
+augment[StringToken] super[KeywordToken] =[SimpleToken] value[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] injectedTopLevelMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+augment[StringToken] super[KeywordToken];[SimpleToken]
+augment[StringToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[StringToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] class[KeywordToken] Class[StringToken] {[BeginToken]
+augment[StringToken] void[KeywordToken] instanceMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] void[KeywordToken] instanceMethodErrors[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[StringToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] int[StringToken] get[KeywordToken] instanceProperty[StringToken] {[BeginToken]
+augment[StringToken] super[KeywordToken]++[SimpleToken];[SimpleToken]
+--[SimpleToken]augment[StringToken] super[KeywordToken];[SimpleToken]
+return[KeywordToken] -[SimpleToken]augment[StringToken] super[KeywordToken];[SimpleToken]
+}[SimpleToken]
+
+augment[StringToken] void[KeywordToken] set[KeywordToken] instanceProperty[StringToken]([BeginToken]int[StringToken] value[StringToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken] =[SimpleToken] value[StringToken];[SimpleToken]
+}[SimpleToken]
+
+void[KeywordToken] injectedInstanceMethod[StringToken]([BeginToken])[SimpleToken] {[BeginToken]
+augment[StringToken] super[KeywordToken]([BeginToken])[SimpleToken];[SimpleToken]
+augment[StringToken] super[KeywordToken];[SimpleToken]
+augment[StringToken] int[StringToken] local[StringToken];[SimpleToken]
+augment[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken][SimpleToken]
diff --git a/pkg/front_end/test/parser_test_listener.dart b/pkg/front_end/test/parser_test_listener.dart
index 0e1788a..70eba07 100644
--- a/pkg/front_end/test/parser_test_listener.dart
+++ b/pkg/front_end/test/parser_test_listener.dart
@@ -2553,6 +2553,17 @@
}
@override
+ void handleAugmentSuperExpression(
+ Token augmentToken, Token superToken, IdentifierContext context) {
+ seen(augmentToken);
+ seen(superToken);
+ doPrint('handleAugmentSuperExpression('
+ '$augmentToken, '
+ '$superToken, '
+ '$context)');
+ }
+
+ @override
void beginSwitchCase(int labelCount, int expressionCount, Token firstToken) {
seen(firstToken);
doPrint(
diff --git a/pkg/front_end/test/parser_test_parser.dart b/pkg/front_end/test/parser_test_parser.dart
index c270e56..d29de47 100644
--- a/pkg/front_end/test/parser_test_parser.dart
+++ b/pkg/front_end/test/parser_test_parser.dart
@@ -1619,6 +1619,15 @@
}
@override
+ Token parseAugmentSuperExpression(Token token, IdentifierContext context) {
+ doPrint('parseAugmentSuperExpression(' '$token, ' '$context)');
+ indent++;
+ var result = super.parseAugmentSuperExpression(token, context);
+ indent--;
+ return result;
+ }
+
+ @override
Token parseLiteralListSuffix(Token token, Token? constKeyword) {
doPrint('parseLiteralListSuffix(' '$token, ' '$constKeyword)');
indent++;
diff --git a/pkg/front_end/test/spell_checking_list_messages.txt b/pkg/front_end/test/spell_checking_list_messages.txt
index 00b69d3..bfbafd0 100644
--- a/pkg/front_end/test/spell_checking_list_messages.txt
+++ b/pkg/front_end/test/spell_checking_list_messages.txt
@@ -18,6 +18,7 @@
assigning
augment
augmentation
+augmentations
augmented
b
c
diff --git a/pkg/front_end/testcases/macros/augment_super.dart b/pkg/front_end/testcases/macros/augment_super.dart
new file mode 100644
index 0000000..ff7d4a8
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_super.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import augment 'augment_super_lib.dart';
+
+void topLevelMethod() {}
+void topLevelMethodErrors() {}
+List<int> get topLevelProperty => [42];
+void set topLevelProperty(List<int> value) {}
+
+class Class {
+ void instanceMethod() {}
+ void instanceMethodErrors() {}
+ int get instanceProperty => 42;
+ void set instanceProperty(int value) {}
+}
+
+main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.strong.expect b/pkg/front_end/testcases/macros/augment_super.dart.strong.expect
new file mode 100644
index 0000000..d309789
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_super.dart.strong.expect
@@ -0,0 +1,164 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:10:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:27:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:37:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+// augment super++;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+// --augment super;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:54:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_super.dart";
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethodErrors() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+ get /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty() → core::int {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+ augment super++;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+ --augment super;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ return (null as{ForNonNullableByDefault} dynamic){dynamic}.unary-() as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+ }
+ set /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty(core::int value) → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+ augment super = value;
+ ^";
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedInstanceMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+}
+static method topLevelMethodErrors() → void {}
+static get /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty() → core::List<core::int> {
+ return block {
+ final core::List<core::int> #t1 = <core::int>[];
+ for (final has-declared-initializer dynamic #t2 in (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
+ final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
+ #t1.{core::List::add}{Invariant}(#t3){(core::int) → void};
+ }
+ #t1.{core::List::add}{Invariant}((null as{ForNonNullableByDefault} dynamic){dynamic}.[](0) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int){(core::int) → void};
+ } =>#t1;
+}
+static set /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty(core::List<core::int> value) → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.[]=(0, value.{core::List::[]}(1){(core::int) → core::int});
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+ augment super = value;
+ ^";
+}
+static method main() → dynamic {}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethodError() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedTopLevelMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.strong.transformed.expect b/pkg/front_end/testcases/macros/augment_super.dart.strong.transformed.expect
new file mode 100644
index 0000000..e1236aa
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_super.dart.strong.transformed.expect
@@ -0,0 +1,180 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:10:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:27:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:37:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+// augment super++;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+// --augment super;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:54:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_super.dart";
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethodErrors() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+ get /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty() → core::int {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+ augment super++;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+ --augment super;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ return (null as{ForNonNullableByDefault} dynamic){dynamic}.unary-() as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+ }
+ set /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty(core::int value) → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+ augment super = value;
+ ^";
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedInstanceMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+}
+static method topLevelMethodErrors() → void {}
+static get /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty() → core::List<core::int> {
+ return block {
+ final core::List<core::int> #t1 = core::_GrowableList::•<core::int>(0);
+ {
+ core::Iterator<dynamic> :sync-for-iterator = ((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
+ {
+ final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
+ #t1.{core::List::add}{Invariant}(#t3){(core::int) → void};
+ }
+ }
+ }
+ #t1.{core::List::add}{Invariant}((null as{ForNonNullableByDefault} dynamic){dynamic}.[](0) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int){(core::int) → void};
+ } =>#t1;
+}
+static set /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty(core::List<core::int> value) → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.[]=(0, value.{core::List::[]}(1){(core::int) → core::int});
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+ augment super = value;
+ ^";
+}
+static method main() → dynamic {}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethodError() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedTopLevelMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
+
+
+Extra constant evaluation status:
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:33:5 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:44:13 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:6:3 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:16:15 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:16:30 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:20:3 -> NullConstant(null)
+Extra constant evaluation: evaluated: 31, effectively constant: 6
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.textual_outline.expect b/pkg/front_end/testcases/macros/augment_super.dart.textual_outline.expect
new file mode 100644
index 0000000..ba14962
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_super.dart.textual_outline.expect
@@ -0,0 +1,12 @@
+import augment 'augment_super_lib.dart';
+void topLevelMethod() {}
+void topLevelMethodErrors() {}
+List<int> get topLevelProperty => [42];
+void set topLevelProperty(List<int> value) {}
+class Class {
+ void instanceMethod() {}
+ void instanceMethodErrors() {}
+ int get instanceProperty => 42;
+ void set instanceProperty(int value) {}
+}
+main() {}
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.weak.expect b/pkg/front_end/testcases/macros/augment_super.dart.weak.expect
new file mode 100644
index 0000000..d309789
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_super.dart.weak.expect
@@ -0,0 +1,164 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:10:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:27:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:37:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+// augment super++;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+// --augment super;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:54:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_super.dart";
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethodErrors() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+ get /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty() → core::int {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+ augment super++;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+ --augment super;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ return (null as{ForNonNullableByDefault} dynamic){dynamic}.unary-() as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+ }
+ set /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty(core::int value) → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+ augment super = value;
+ ^";
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedInstanceMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+}
+static method topLevelMethodErrors() → void {}
+static get /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty() → core::List<core::int> {
+ return block {
+ final core::List<core::int> #t1 = <core::int>[];
+ for (final has-declared-initializer dynamic #t2 in (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
+ final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
+ #t1.{core::List::add}{Invariant}(#t3){(core::int) → void};
+ }
+ #t1.{core::List::add}{Invariant}((null as{ForNonNullableByDefault} dynamic){dynamic}.[](0) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int){(core::int) → void};
+ } =>#t1;
+}
+static set /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty(core::List<core::int> value) → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.[]=(0, value.{core::List::[]}(1){(core::int) → core::int});
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+ augment super = value;
+ ^";
+}
+static method main() → dynamic {}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethodError() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedTopLevelMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.weak.modular.expect b/pkg/front_end/testcases/macros/augment_super.dart.weak.modular.expect
new file mode 100644
index 0000000..d309789
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_super.dart.weak.modular.expect
@@ -0,0 +1,164 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:10:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:27:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:37:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+// augment super++;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+// --augment super;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:54:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_super.dart";
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethodErrors() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+ get /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty() → core::int {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+ augment super++;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+ --augment super;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ return (null as{ForNonNullableByDefault} dynamic){dynamic}.unary-() as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+ }
+ set /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty(core::int value) → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+ augment super = value;
+ ^";
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedInstanceMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+}
+static method topLevelMethodErrors() → void {}
+static get /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty() → core::List<core::int> {
+ return block {
+ final core::List<core::int> #t1 = <core::int>[];
+ for (final has-declared-initializer dynamic #t2 in (null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>) {
+ final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
+ #t1.{core::List::add}{Invariant}(#t3){(core::int) → void};
+ }
+ #t1.{core::List::add}{Invariant}((null as{ForNonNullableByDefault} dynamic){dynamic}.[](0) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int){(core::int) → void};
+ } =>#t1;
+}
+static set /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty(core::List<core::int> value) → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.[]=(0, value.{core::List::[]}(1){(core::int) → core::int});
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+ augment super = value;
+ ^";
+}
+static method main() → dynamic {}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethodError() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedTopLevelMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.weak.outline.expect b/pkg/front_end/testcases/macros/augment_super.dart.weak.outline.expect
new file mode 100644
index 0000000..ac6c7af
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_super.dart.weak.outline.expect
@@ -0,0 +1,34 @@
+library /*isNonNullableByDefault*/;
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_super.dart";
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ ;
+ method instanceMethod() → void
+ ;
+ method instanceMethodErrors() → void
+ ;
+ get instanceProperty() → core::int
+ ;
+ set instanceProperty(core::int value) → void
+ ;
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedInstanceMethod() → void
+ ;
+}
+static method topLevelMethod() → void
+ ;
+static method topLevelMethodErrors() → void
+ ;
+static get topLevelProperty() → core::List<core::int>
+ ;
+static set topLevelProperty(core::List<core::int> value) → void
+ ;
+static method main() → dynamic
+ ;
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethodError() → void
+ ;
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedTopLevelMethod() → void
+ ;
diff --git a/pkg/front_end/testcases/macros/augment_super.dart.weak.transformed.expect b/pkg/front_end/testcases/macros/augment_super.dart.weak.transformed.expect
new file mode 100644
index 0000000..6d9c5f8
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_super.dart.weak.transformed.expect
@@ -0,0 +1,180 @@
+library /*isNonNullableByDefault*/;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:10:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:27:3: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:37:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+// augment super++;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+// --augment super;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+// augment super = value;
+// ^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super(); // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+// augment super; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:54:5: Error: Can't have modifier 'augment' here.
+// Try removing 'augment'.
+// augment int local; // Error
+// ^^^^^^^
+//
+// pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+// - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+// Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+// augment; // Error
+// ^^^^^^^
+//
+import self as self;
+import "dart:core" as core;
+
+import "org-dartlang-testcase:///augment_super.dart";
+
+class Class extends core::Object {
+ synthetic constructor •() → self::Class
+ : super core::Object::•()
+ ;
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceMethodErrors() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:38:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+ get /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty() → core::int {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:42:5: Error: Can't assign to this.
+ augment super++;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:43:7: Error: Can't assign to this.
+ --augment super;
+ ^" in null as{ForNonNullableByDefault} dynamic;
+ return (null as{ForNonNullableByDefault} dynamic){dynamic}.unary-() as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
+ }
+ set /* from org-dartlang-testcase:///augment_super_lib.dart */ instanceProperty(core::int value) → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:48:19: Error: Can't assign to this.
+ augment super = value;
+ ^";
+ }
+ method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedInstanceMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:52:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:53:5: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:55:5: Error: The getter 'augment' isn't defined for the class 'Class'.
+ - 'Class' is from 'pkg/front_end/testcases/macros/augment_super.dart'.
+Try correcting the name to the name of an existing getter, or defining a getter or field named 'augment'.
+ augment; // Error
+ ^^^^^^^" in this{<unresolved>}.augment;
+ }
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethod() → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.call();
+}
+static method topLevelMethodErrors() → void {}
+static get /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty() → core::List<core::int> {
+ return block {
+ final core::List<core::int> #t1 = core::_GrowableList::•<core::int>(0);
+ {
+ core::Iterator<dynamic> :sync-for-iterator = ((null as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
+ {
+ final core::int #t3 = #t2 as{TypeError,ForNonNullableByDefault} core::int;
+ #t1.{core::List::add}{Invariant}(#t3){(core::int) → void};
+ }
+ }
+ }
+ #t1.{core::List::add}{Invariant}((null as{ForNonNullableByDefault} dynamic){dynamic}.[](0) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int){(core::int) → void};
+ } =>#t1;
+}
+static set /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelProperty(core::List<core::int> value) → void {
+ (null as{ForNonNullableByDefault} dynamic){dynamic}.[]=(0, value.{core::List::[]}(1){(core::int) → core::int});
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:21:17: Error: Can't assign to this.
+ augment super = value;
+ ^";
+}
+static method main() → dynamic {}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ topLevelMethodError() → void {
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:11:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
+static method /* from org-dartlang-testcase:///augment_super_lib.dart */ injectedTopLevelMethod() → void {
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:25:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super(); // Error
+ ^^^^^^^";
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:26:3: Error: 'augment super' is only allowed in member augmentations.
+ augment super; // Error
+ ^^^^^^^";
+ core::int local;
+ invalid-expression "pkg/front_end/testcases/macros/augment_super_lib.dart:28:3: Error: Undefined name 'augment'.
+ augment; // Error
+ ^^^^^^^";
+}
+
+
+Extra constant evaluation status:
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:33:5 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:44:13 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:6:3 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:16:15 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:16:30 -> NullConstant(null)
+Evaluated: AsExpression @ org-dartlang-testcase:///augment_super_lib.dart:20:3 -> NullConstant(null)
+Extra constant evaluation: evaluated: 30, effectively constant: 6
diff --git a/pkg/front_end/testcases/macros/augment_super_lib.dart b/pkg/front_end/testcases/macros/augment_super_lib.dart
new file mode 100644
index 0000000..4922d49
--- /dev/null
+++ b/pkg/front_end/testcases/macros/augment_super_lib.dart
@@ -0,0 +1,57 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+augment void topLevelMethod() {
+ augment super();
+}
+
+augment void topLevelMethodError() {
+ augment int local; // Error
+ augment; // Error
+}
+
+
+augment List<int> get topLevelProperty {
+ return [... augment super, augment super[0]];
+}
+
+augment void set topLevelProperty(List<int> value) {
+ augment super[0] = value[1];
+ augment super = value;
+}
+
+void injectedTopLevelMethod() {
+ augment super(); // Error
+ augment super; // Error
+ augment int local; // Error
+ augment; // Error
+}
+
+augment class Class {
+ augment void instanceMethod() {
+ augment super();
+ }
+
+ augment void instanceMethodErrors() {
+ augment int local; // Error
+ augment; // Error
+ }
+
+ augment int get instanceProperty {
+ augment super++;
+ --augment super;
+ return -augment super;
+ }
+
+ augment void set instanceProperty(int value) {
+ augment super = value;
+ }
+
+ void injectedInstanceMethod() {
+ augment super(); // Error
+ augment super; // Error
+ augment int local; // Error
+ augment; // Error
+ }
+}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status
index 7f8673a..24f427a 100644
--- a/pkg/front_end/testcases/textual_outline.status
+++ b/pkg/front_end/testcases/textual_outline.status
@@ -153,6 +153,7 @@
late_lowering/skip_late_final_uninitialized_instance_fields/main: FormatterCrash
late_lowering/uninitialized_non_nullable_late_fields: FormatterCrash
macros/augment_class: FormatterCrash
+macros/augment_super: FormatterCrash
macros/class_members: FormatterCrash
macros/inject_constructor: FormatterCrash
macros/macro_class: FormatterCrash