Version 2.10.0-112.0.dev
Merge commit '3d77741666cccad0be7e63582dfe1b1df1037f38' into 'dev'
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 afd418a..9c8d78d 100644
--- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart
@@ -295,6 +295,36 @@
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<
Message Function(
+ String string,
+ String
+ string2)> templateBinaryOperatorWrittenOut = const Template<
+ Message Function(String string, String string2)>(
+ messageTemplate:
+ r"""Binary operator '#string' is written as '#string2' instead of the written out word.""",
+ tipTemplate: r"""Try replacing '#string' with '#string2'.""",
+ withArguments: _withArgumentsBinaryOperatorWrittenOut);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String string, String string2)>
+ codeBinaryOperatorWrittenOut =
+ const Code<Message Function(String string, String string2)>(
+ "BinaryOperatorWrittenOut", templateBinaryOperatorWrittenOut,
+ index: 112);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsBinaryOperatorWrittenOut(String string, String string2) {
+ if (string.isEmpty) throw 'No string provided';
+ if (string2.isEmpty) throw 'No string provided';
+ return new Message(codeBinaryOperatorWrittenOut,
+ message:
+ """Binary operator '${string}' is written as '${string2}' instead of the written out word.""",
+ tip: """Try replacing '${string}' with '${string2}'.""",
+ arguments: {'string': string, 'string2': string2});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+ Message Function(
String name,
String
name2)> templateBoundIssueViaCycleNonSimplicity = const Template<
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 09d8ad1..f7a1317 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart
@@ -4615,13 +4615,22 @@
token = typeArg.parseArguments(bangToken, this);
assert(optional('(', token.next));
}
+
+ return _parsePrecedenceExpressionLoop(
+ precedence, allowCascades, typeArg, token);
+ }
+
+ Token _parsePrecedenceExpressionLoop(int precedence, bool allowCascades,
+ TypeParamOrArgInfo typeArg, Token token) {
Token next = token.next;
TokenType type = next.type;
int tokenLevel = _computePrecedence(next);
+ bool enteredLoop = false;
for (int level = tokenLevel; level >= precedence; --level) {
int lastBinaryExpressionLevel = -1;
Token lastCascade;
while (identical(tokenLevel, level)) {
+ enteredLoop = true;
Token operator = next;
if (identical(tokenLevel, CASCADE_PRECEDENCE)) {
if (!allowCascades) {
@@ -4725,10 +4734,103 @@
type = next.type;
tokenLevel = _computePrecedence(next);
}
+ if (_recoverAtPrecedenceLevel && !_currentlyRecovering) {
+ // Attempt recovery
+ if (_attemptPrecedenceLevelRecovery(
+ token, precedence, level, allowCascades, typeArg)) {
+ // Recovered - try again at same level with the replacement token.
+ level++;
+ next = token.next;
+ type = next.type;
+ tokenLevel = _computePrecedence(next);
+ }
+ }
+ }
+
+ if (!enteredLoop && _recoverAtPrecedenceLevel && !_currentlyRecovering) {
+ // Attempt recovery
+ if (_attemptPrecedenceLevelRecovery(
+ token, precedence, /*currentLevel = */ -1, allowCascades, typeArg)) {
+ return _parsePrecedenceExpressionLoop(
+ precedence, allowCascades, typeArg, token);
+ }
}
return token;
}
+ /// Attempt a recovery where [token.next] is replaced.
+ bool _attemptPrecedenceLevelRecovery(Token token, int precedence,
+ int currentLevel, bool allowCascades, TypeParamOrArgInfo typeArg) {
+ // Attempt recovery.
+ assert(_token_recovery_replacements.containsKey(token.next.lexeme));
+ TokenType replacement = _token_recovery_replacements[token.next.lexeme];
+ if (currentLevel >= 0) {
+ // Check that the new precedence and currentLevel would have accepted this
+ // replacement here.
+ int newLevel = replacement.precedence;
+ // The loop it would normally have gone through is something like
+ // for (; ; --level) {
+ // while (identical(tokenLevel, level)) {
+ // }
+ // }
+ // So if the new tokens level <= the "old" (current) level, [level] (in
+ // the above code snippet) would get down to it and accept it.
+ // But if the new tokens level > the "old" (current) level, normally we
+ // would never get to it - so we shouldn't here either. As the loop starts
+ // by taking the first tokens tokenLevel as level, recursing below won't
+ // weed that out so we need to do it here.
+ if (newLevel > currentLevel) return false;
+ }
+
+ _currentlyRecovering = true;
+ _recoverAtPrecedenceLevel = false;
+ Listener originalListener = listener;
+ TokenStreamRewriter originalRewriter = cachedRewriter;
+ NullListener nullListener = listener = new NullListener();
+ UndoableTokenStreamRewriter undoableTokenStreamRewriter =
+ new UndoableTokenStreamRewriter();
+ cachedRewriter = undoableTokenStreamRewriter;
+ rewriter.replaceNextTokenWithSyntheticToken(token, replacement);
+ bool acceptRecovery = false;
+ Token afterExpression = _parsePrecedenceExpressionLoop(
+ precedence, allowCascades, typeArg, token);
+
+ if (!nullListener.hasErrors &&
+ isOneOfOrEof(afterExpression.next, const [';', ',', ')', '{', '}'])) {
+ // Seems good!
+ acceptRecovery = true;
+ }
+
+ // Undo all changes and reset.
+ _currentlyRecovering = false;
+ undoableTokenStreamRewriter.undo();
+ listener = originalListener;
+ cachedRewriter = originalRewriter;
+
+ if (acceptRecovery) {
+ // Report and redo recovery.
+ reportRecoverableError(
+ token.next,
+ codes.templateBinaryOperatorWrittenOut
+ .withArguments(token.next.lexeme, replacement.lexeme));
+ rewriter.replaceNextTokenWithSyntheticToken(token, replacement);
+ return true;
+ }
+ return false;
+ }
+
+ bool _recoverAtPrecedenceLevel = false;
+ bool _currentlyRecovering = false;
+ static const Map<String, TokenType> _token_recovery_replacements = const {
+ // E.g. in Kotlin these are written out, see.
+ // https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/.
+ "xor": TokenType.CARET,
+ "and": TokenType.AMPERSAND,
+ "or": TokenType.BAR,
+ "shl": TokenType.LT_LT,
+ "shr": TokenType.GT_GT,
+ };
+
int _computePrecedence(Token token) {
TokenType type = token.type;
if (identical(type, TokenType.BANG)) {
@@ -4751,7 +4853,15 @@
if (!isConditional) {
return SELECTOR_PRECEDENCE;
}
+ } else if (identical(type, TokenType.IDENTIFIER)) {
+ // An identifier at this point is not right. So some recovery is going to
+ // happen soon. The question is, if we can do a better recovery here.
+ if (!_currentlyRecovering &&
+ _token_recovery_replacements.containsKey(token.lexeme)) {
+ _recoverAtPrecedenceLevel = true;
+ }
}
+
return type.precedence;
}
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart b/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
index cc5cbce..c3e261a 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart
@@ -9,6 +9,7 @@
BeginToken,
CommentToken,
Keyword,
+ ReplacementToken,
SimpleToken,
SyntheticBeginToken,
SyntheticKeywordToken,
@@ -113,6 +114,27 @@
return current;
}
+ /// Insert a new simple synthetic token of [newTokenType] after
+ /// [previousToken] instead of the token actually coming after it and return
+ /// the new token.
+ /// The old token will be linked from the new one though, so it's not totally
+ /// gone.
+ ReplacementToken replaceNextTokenWithSyntheticToken(
+ Token previousToken, TokenType newTokenType) {
+ assert(newTokenType is! Keyword,
+ 'use an unwritten variation of insertSyntheticKeyword instead');
+
+ // [token] <--> [a] <--> [b]
+ ReplacementToken replacement =
+ new ReplacementToken(newTokenType, previousToken.next);
+ insertToken(previousToken, replacement);
+ // [token] <--> [replacement] <--> [a] <--> [b]
+ _setNext(replacement, replacement.next.next);
+ // [token] <--> [replacement] <--> [b]
+
+ return replacement;
+ }
+
Token _setNext(Token setOn, Token nextToken);
void _setEndGroup(BeginToken setOn, Token endGroup);
void _setOffset(Token setOn, int offset);
@@ -248,6 +270,12 @@
void _setPrevious(Token setOn, Token previous) {
throw new UnimplementedError("_setPrevious");
}
+
+ @override
+ ReplacementToken replaceNextTokenWithSyntheticToken(
+ Token previousToken, TokenType newTokenType) {
+ throw new UnimplementedError("replaceWithSyntheticToken");
+ }
}
mixin _TokenStreamMixin {
diff --git a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
index 9f501af..38f0335 100644
--- a/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/scanner/token.dart
@@ -804,6 +804,32 @@
Token copy() => new SyntheticToken(type, offset);
}
+/// A token used to replace another token in the stream, while still keeping the
+/// old token around (in [replacedToken]). Automatically sets the offset and
+/// precedingComments from the data available on [replacedToken].
+class ReplacementToken extends SyntheticToken {
+ /// The token that this token replaces. This will normally be the token
+ /// representing what the user actually wrote.
+ final Token replacedToken;
+
+ ReplacementToken(TokenType type, this.replacedToken)
+ : super(type, replacedToken.offset) {
+ precedingComments = replacedToken.precedingComments;
+ }
+
+ @override
+ Token beforeSynthetic;
+
+ @override
+ bool get isSynthetic => true;
+
+ @override
+ int get length => 0;
+
+ @override
+ Token copy() => new ReplacementToken(type, replacedToken);
+}
+
/**
* A token that was scanned from the input. Each token knows which tokens
* precede and follow it, acting as a link in a doubly linked list of tokens.
diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
index 5d9f60a..0d443de 100644
--- a/pkg/analyzer/lib/error/error.dart
+++ b/pkg/analyzer/lib/error/error.dart
@@ -597,6 +597,7 @@
ParserErrorCode.ANNOTATION_ON_TYPE_ARGUMENT,
ParserErrorCode.ANNOTATION_WITH_TYPE_ARGUMENTS,
ParserErrorCode.ASYNC_KEYWORD_USED_AS_IDENTIFIER,
+ ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT,
ParserErrorCode.BREAK_OUTSIDE_OF_LOOP,
ParserErrorCode.CATCH_SYNTAX,
ParserErrorCode.CATCH_SYNTAX_EXTRA_PARAMETERS,
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
index adc7492..f9dd391 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
@@ -72,6 +72,9 @@
"The keywords 'await' and 'yield' can't be used as "
"identifiers in an asynchronous or generator function.");
+ static const ParserErrorCode BINARY_OPERATOR_WRITTEN_OUT =
+ _BINARY_OPERATOR_WRITTEN_OUT;
+
static const ParserErrorCode BREAK_OUTSIDE_OF_LOOP = _BREAK_OUTSIDE_OF_LOOP;
static const ParserErrorCode CATCH_SYNTAX = _CATCH_SYNTAX;
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
index 0698c8b..be1de3a 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
@@ -119,6 +119,7 @@
_EXTERNAL_LATE_FIELD,
_ABSTRACT_EXTERNAL_FIELD,
_ANNOTATION_ON_TYPE_ARGUMENT,
+ _BINARY_OPERATOR_WRITTEN_OUT,
];
const ParserErrorCode _ABSTRACT_CLASS_MEMBER = ParserErrorCode(
@@ -148,6 +149,11 @@
'ANNOTATION_WITH_TYPE_ARGUMENTS',
r"An annotation (metadata) can't use type arguments.");
+const ParserErrorCode _BINARY_OPERATOR_WRITTEN_OUT = ParserErrorCode(
+ 'BINARY_OPERATOR_WRITTEN_OUT',
+ r"Binary operator '#string' is written as '#string2' instead of the written out word.",
+ correction: "Try replacing '#string' with '#string2'.");
+
const ParserErrorCode _BREAK_OUTSIDE_OF_LOOP = ParserErrorCode(
'BREAK_OUTSIDE_OF_LOOP',
r"A break statement can't be used outside of a loop or switch statement.",
diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart
index fa9fb23..e4b80d0 100644
--- a/pkg/analyzer/test/generated/parser_fasta_test.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_test.dart
@@ -1114,6 +1114,17 @@
@reflectiveTest
class ComplexParserTest_Fasta extends FastaParserTestCase
with ComplexParserTestMixin {
+ void test_binary_operator_written_out_expression() {
+ BinaryExpression expression = parseExpression('x xor y', errors: [
+ expectedError(ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT, 2, 3),
+ ]);
+ SimpleIdentifier lhs = expression.leftOperand;
+ expect(lhs.name, 'x');
+ expect(expression.operator.lexeme, '^');
+ SimpleIdentifier rhs = expression.rightOperand;
+ expect(rhs.name, 'y');
+ }
+
void test_conditionalExpression_precedence_nullableType_as2() {
ExpressionStatement statement = parseStatement('x as bool? ? (x + y) : z;');
ConditionalExpression expression = statement.expression;
diff --git a/pkg/analyzer/test/src/diagnostics/binary_operator_written_out_test.dart b/pkg/analyzer/test/src/diagnostics/binary_operator_written_out_test.dart
new file mode 100644
index 0000000..a669585
--- /dev/null
+++ b/pkg/analyzer/test/src/diagnostics/binary_operator_written_out_test.dart
@@ -0,0 +1,107 @@
+// Copyright (c) 2020, 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 'package:analyzer/src/dart/error/syntactic_errors.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import '../dart/resolution/context_collection_resolution.dart';
+
+main() {
+ defineReflectiveSuite(() {
+ defineReflectiveTests(BinaryOperatorWrittenOutTest);
+ });
+}
+
+@reflectiveTest
+class BinaryOperatorWrittenOutTest extends PubPackageResolutionTest {
+ test_using_and() async {
+ await assertErrorsInCode(r'''
+f(var x, var y) {
+ return x and y;
+}
+''', [
+ error(ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT, 29, 3),
+ ]);
+ }
+
+ test_using_and_no_error() async {
+ await assertErrorsInCode(r'''
+f(var x, var y) {
+ return x & y;
+}
+''', []);
+ }
+
+ test_using_or() async {
+ await assertErrorsInCode(r'''
+f(var x, var y) {
+ return x or y;
+}
+''', [
+ error(ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT, 29, 2),
+ ]);
+ }
+
+ test_using_or_no_error() async {
+ await assertErrorsInCode(r'''
+f(var x, var y) {
+ return x | y;
+}
+''', []);
+ }
+
+ test_using_shl() async {
+ await assertErrorsInCode(r'''
+f(var x) {
+ return x shl 2;
+}
+''', [
+ error(ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT, 22, 3),
+ ]);
+ }
+
+ test_using_shl_no_error() async {
+ await assertErrorsInCode(r'''
+f(var x) {
+ return x << 2;
+}
+''', []);
+ }
+
+ test_using_shr() async {
+ await assertErrorsInCode(r'''
+f(var x) {
+ return x shr 2;
+}
+''', [
+ error(ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT, 22, 3),
+ ]);
+ }
+
+ test_using_shr_no_error() async {
+ await assertErrorsInCode(r'''
+f(var x) {
+ return x >> 2;
+}
+''', []);
+ }
+
+ test_using_xor() async {
+ await assertErrorsInCode(r'''
+f(var x, var y) {
+ return x xor y;
+}
+''', [
+ error(ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT, 29, 3),
+ ]);
+ }
+
+ test_using_xor_no_error() async {
+ await assertErrorsInCode(r'''
+f(var x, var y) {
+ return x ^ y;
+}
+''', []);
+ }
+}
diff --git a/pkg/analyzer/test/src/diagnostics/test_all.dart b/pkg/analyzer/test/src/diagnostics/test_all.dart
index 94870ce..57f747d 100644
--- a/pkg/analyzer/test/src/diagnostics/test_all.dart
+++ b/pkg/analyzer/test/src/diagnostics/test_all.dart
@@ -37,6 +37,7 @@
import 'await_in_late_local_variable_initializer_test.dart'
as await_in_late_local_variable_initializer;
import 'await_in_wrong_context_test.dart' as await_in_wrong_context;
+import 'binary_operator_written_out_test.dart' as binary_operator_written_out;
import 'body_might_complete_normally_test.dart' as body_might_complete_normally;
import 'built_in_identifier_as_extension_name_test.dart'
as built_in_as_extension_name;
@@ -668,6 +669,7 @@
async_keyword_used_as_identifier.main();
await_in_late_local_variable_initializer.main();
await_in_wrong_context.main();
+ binary_operator_written_out.main();
body_might_complete_normally.main();
built_in_as_extension_name.main();
built_in_as_prefix_name.main();
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index d568f05..618e1fb 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -3061,6 +3061,14 @@
tip: "Try replacing the colon with the keyword 'in'."
analyzerCode: ParserErrorCode.COLON_IN_PLACE_OF_IN
+BinaryOperatorWrittenOut:
+ index: 112
+ template: "Binary operator '#string' is written as '#string2' instead of the written out word."
+ tip: "Try replacing '#string' with '#string2'."
+ analyzerCode: ParserErrorCode.BINARY_OPERATOR_WRITTEN_OUT
+ script: >
+ int foo(int x, int y) => x xor y;
+
ExternalFactoryRedirection:
index: 85
template: "A redirecting factory can't be external."
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart
new file mode 100644
index 0000000..f65a3e9
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart
@@ -0,0 +1,41 @@
+abstract class Key {
+ int get a => runtimeType.hashCode xor null.hashCode;
+ int get b => runtimeType.hashCode ^ null.hashCode;
+ int get c { return runtimeType.hashCode xor null.hashCode; }
+ int get d { return runtimeType.hashCode ^ null.hashCode; }
+
+ int get e => 1 + runtimeType.hashCode xor null.hashCode + 3;
+ int get f => 1 + runtimeType.hashCode ^ null.hashCode + 3;
+ int get g { return 1 + runtimeType.hashCode xor null.hashCode + 3; }
+ int get h { return 1 + runtimeType.hashCode ^ null.hashCode + 3; }
+
+ int i(int x, int y) => x xor y;
+ int j(int x, int y) => x ^ y;
+ int k(int x, int y) { return x xor y; }
+ int l(int x, int y) { return x ^ y; }
+ int m(int x, int y) { int z = x xor y; return z; }
+ int n(int x, int y) { int z = x ^ y; return z; }
+
+ int o(int x, int y) => 1 + x xor y + 3;
+ int p(int x, int y) => 1 + x ^ y + 3;
+ int q(int x, int y) { return 1 + x xor y + 3; }
+ int r(int x, int y) { return 1 + x ^ y + 3; }
+
+ s(int x, int y) {
+ s(x xor y, x xor y);
+ s(x ^ y, x ^ y);
+ }
+
+ Key(int x, int y) : foo = x xor y, bar = x xor y {
+ print("hello ${x xor y}");
+ }
+
+ Key(int x, int y) : foo = x ^ y, bar = x ^ y {
+ print("hello ${x ^ y}");
+ }
+
+ not_currently_working(int x, int y) {
+ x xor y;
+ x ^ y;
+ }
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.expect
new file mode 100644
index 0000000..9eb58d9
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.expect
@@ -0,0 +1,1221 @@
+Problems reported:
+
+parser/error_recovery/issue_26810:2:37: Binary operator 'xor' is written as '^' instead of the written out word.
+ int get a => runtimeType.hashCode xor null.hashCode;
+ ^^^
+
+parser/error_recovery/issue_26810:4:43: Binary operator 'xor' is written as '^' instead of the written out word.
+ int get c { return runtimeType.hashCode xor null.hashCode; }
+ ^^^
+
+parser/error_recovery/issue_26810:7:41: Binary operator 'xor' is written as '^' instead of the written out word.
+ int get e => 1 + runtimeType.hashCode xor null.hashCode + 3;
+ ^^^
+
+parser/error_recovery/issue_26810:9:47: Binary operator 'xor' is written as '^' instead of the written out word.
+ int get g { return 1 + runtimeType.hashCode xor null.hashCode + 3; }
+ ^^^
+
+parser/error_recovery/issue_26810:12:28: Binary operator 'xor' is written as '^' instead of the written out word.
+ int i(int x, int y) => x xor y;
+ ^^^
+
+parser/error_recovery/issue_26810:14:34: Binary operator 'xor' is written as '^' instead of the written out word.
+ int k(int x, int y) { return x xor y; }
+ ^^^
+
+parser/error_recovery/issue_26810:16:36: Binary operator 'xor' is written as '^' instead of the written out word.
+ int m(int x, int y) { int z = x xor y; return z; }
+ ^^^
+
+parser/error_recovery/issue_26810:19:32: Binary operator 'xor' is written as '^' instead of the written out word.
+ int o(int x, int y) => 1 + x xor y + 3;
+ ^^^
+
+parser/error_recovery/issue_26810:21:38: Binary operator 'xor' is written as '^' instead of the written out word.
+ int q(int x, int y) { return 1 + x xor y + 3; }
+ ^^^
+
+parser/error_recovery/issue_26810:25:9: Binary operator 'xor' is written as '^' instead of the written out word.
+ s(x xor y, x xor y);
+ ^^^
+
+parser/error_recovery/issue_26810:25:18: Binary operator 'xor' is written as '^' instead of the written out word.
+ s(x xor y, x xor y);
+ ^^^
+
+parser/error_recovery/issue_26810:29:31: Binary operator 'xor' is written as '^' instead of the written out word.
+ Key(int x, int y) : foo = x xor y, bar = x xor y {
+ ^^^
+
+parser/error_recovery/issue_26810:29:46: Binary operator 'xor' is written as '^' instead of the written out word.
+ Key(int x, int y) : foo = x xor y, bar = x xor y {
+ ^^^
+
+parser/error_recovery/issue_26810:30:22: Binary operator 'xor' is written as '^' instead of the written out word.
+ print("hello ${x xor y}");
+ ^^^
+
+parser/error_recovery/issue_26810:38:7: Expected ';' after this.
+ x xor y;
+ ^^^
+
+beginCompilationUnit(abstract)
+ beginMetadataStar(abstract)
+ endMetadataStar(0)
+ beginClassOrNamedMixinApplicationPrelude(abstract)
+ handleIdentifier(Key, classOrMixinDeclaration)
+ handleNoTypeVariables({)
+ beginClassDeclaration(abstract, abstract, Key)
+ handleNoType(Key)
+ handleClassExtends(null, 1)
+ handleClassNoWithClause()
+ handleClassOrMixinImplements(null, 0)
+ handleClassHeader(abstract, class, null)
+ beginClassOrMixinBody(DeclarationKind.Class, {)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, a)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(a, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(hashCode, xor)
+ handleEndingBinaryExpression(.)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(^)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, b)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(b, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(hashCode, ^)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(^)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(^)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, c)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(c, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(hashCode, xor)
+ handleEndingBinaryExpression(.)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(^)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, d)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(d, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(hashCode, ^)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(^)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(^)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, e)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(e, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(hashCode, xor)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(^)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, f)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(f, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(hashCode, ^)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ beginBinaryExpression(^)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(^)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, g)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(g, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(hashCode, xor)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(^)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, h)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(h, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(hashCode, ^)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ beginBinaryExpression(^)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(^)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, i)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(i)
+ handleType(int, null)
+ handleIdentifier(i, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(^)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, j)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(j)
+ handleType(int, null)
+ handleIdentifier(j, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(^)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, k)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(k)
+ handleType(int, null)
+ handleIdentifier(k, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(^)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, l)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(l)
+ handleType(int, null)
+ handleIdentifier(l, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(^)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, m)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(m)
+ handleType(int, null)
+ handleIdentifier(m, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(z)
+ handleType(int, null)
+ beginVariablesDeclaration(z, null, null)
+ handleIdentifier(z, localVariableDeclaration)
+ beginInitializedIdentifier(z)
+ beginVariableInitializer(=)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(^)
+ endVariableInitializer(=)
+ endInitializedIdentifier(z)
+ endVariablesDeclaration(1, ;)
+ beginReturnStatement(return)
+ handleIdentifier(z, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(z, ;)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, n)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(n)
+ handleType(int, null)
+ handleIdentifier(n, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(z)
+ handleType(int, null)
+ beginVariablesDeclaration(z, null, null)
+ handleIdentifier(z, localVariableDeclaration)
+ beginInitializedIdentifier(z)
+ beginVariableInitializer(=)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(^)
+ endVariableInitializer(=)
+ endInitializedIdentifier(z)
+ endVariablesDeclaration(1, ;)
+ beginReturnStatement(return)
+ handleIdentifier(z, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(z, ;)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, o)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(o)
+ handleType(int, null)
+ handleIdentifier(o, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(^)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, p)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(p)
+ handleType(int, null)
+ handleIdentifier(p, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ endBinaryExpression(+)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(^)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, q)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(q)
+ handleType(int, null)
+ handleIdentifier(q, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(^)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, r)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(r)
+ handleType(int, null)
+ handleIdentifier(r, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ endBinaryExpression(+)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(^)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(s)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, s)
+ handleNoType(})
+ handleIdentifier(s, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(s, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(^)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(y, ))
+ endBinaryExpression(^)
+ endArguments(2, (, ))
+ handleSend(s, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(s, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(^)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(y, ))
+ endBinaryExpression(^)
+ endArguments(2, (, ))
+ handleSend(s, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, s, (, null, })
+ endMember()
+ beginMetadataStar(Key)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, Key)
+ handleNoType(})
+ handleIdentifier(Key, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ beginInitializers(:)
+ beginInitializer(foo)
+ handleIdentifier(foo, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(foo, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(^)
+ handleAssignmentExpression(=)
+ endInitializer(,)
+ beginInitializer(bar)
+ handleIdentifier(bar, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(bar, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments({)
+ handleNoArguments({)
+ handleSend(y, {)
+ endBinaryExpression(^)
+ handleAssignmentExpression(=)
+ endInitializer({)
+ endInitializers(2, :, {)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(print, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ beginLiteralString("hello )
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(xor)
+ handleNoArguments(xor)
+ handleSend(x, xor)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(y, })
+ endBinaryExpression(^)
+ handleInterpolationExpression(${, })
+ handleStringPart(")
+ endLiteralString(1, ))
+ endArguments(1, (, ))
+ handleSend(print, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endClassConstructor(null, Key, (, :, })
+ endMember()
+ beginMetadataStar(Key)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, Key)
+ handleNoType(})
+ handleIdentifier(Key, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ beginInitializers(:)
+ beginInitializer(foo)
+ handleIdentifier(foo, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(foo, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(^)
+ handleAssignmentExpression(=)
+ endInitializer(,)
+ beginInitializer(bar)
+ handleIdentifier(bar, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(bar, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments({)
+ handleNoArguments({)
+ handleSend(y, {)
+ endBinaryExpression(^)
+ handleAssignmentExpression(=)
+ endInitializer({)
+ endInitializers(2, :, {)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(print, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ beginLiteralString("hello )
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(y, })
+ endBinaryExpression(^)
+ handleInterpolationExpression(${, })
+ handleStringPart(")
+ endLiteralString(1, ))
+ endArguments(1, (, ))
+ handleSend(print, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endClassConstructor(null, Key, (, :, })
+ endMember()
+ beginMetadataStar(not_currently_working)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, not_currently_working)
+ handleNoType(})
+ handleIdentifier(not_currently_working, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(x)
+ endMetadataStar(0)
+ handleIdentifier(x, typeReference)
+ handleNoTypeArguments(xor)
+ handleType(x, null)
+ beginVariablesDeclaration(xor, null, null)
+ handleIdentifier(xor, localVariableDeclaration)
+ beginInitializedIdentifier(xor)
+ handleNoVariableInitializer(xor)
+ endInitializedIdentifier(xor)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], xor, xor)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(^)
+ handleNoArguments(^)
+ handleSend(x, ^)
+ beginBinaryExpression(^)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(^)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(3, {, })
+ endClassMethod(null, not_currently_working, (, null, })
+ endMember()
+ endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+ endClassDeclaration(abstract, })
+ endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect
new file mode 100644
index 0000000..b6c6fda
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.intertwined.expect
@@ -0,0 +1,2594 @@
+parseUnit(abstract)
+ skipErrorTokens(abstract)
+ listener: beginCompilationUnit(abstract)
+ syntheticPreviousToken(abstract)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(abstract)
+ listener: endMetadataStar(0)
+ parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+ parseClassDeclarationModifiers(, class)
+ parseTopLevelKeywordModifiers(abstract, class)
+ parseClassOrNamedMixinApplication(abstract, class)
+ listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+ ensureIdentifier(class, classOrMixinDeclaration)
+ listener: handleIdentifier(Key, classOrMixinDeclaration)
+ listener: handleNoTypeVariables({)
+ listener: beginClassDeclaration(abstract, abstract, Key)
+ parseClass(Key, abstract, class, Key)
+ parseClassHeaderOpt(Key, abstract, class)
+ parseClassExtendsOpt(Key)
+ listener: handleNoType(Key)
+ listener: handleClassExtends(null, 1)
+ parseWithClauseOpt(Key)
+ listener: handleClassNoWithClause()
+ parseClassOrMixinImplementsOpt(Key)
+ listener: handleClassOrMixinImplements(null, 0)
+ listener: handleClassHeader(abstract, class, null)
+ parseClassOrMixinOrExtensionBody(Key, DeclarationKind.Class, Key)
+ listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Key)
+ parseMetadataStar({)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, a, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, a)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(a, methodDeclaration)
+ parseQualifiedRestOpt(a, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(a, a, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(a)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(a)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(a, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(xor)
+ listener: handleSend(hashCode, xor)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(hashCode)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, b, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, b)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(b, methodDeclaration)
+ parseQualifiedRestOpt(b, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(b, b, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(b)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(b)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(b, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(^)
+ listener: handleSend(hashCode, ^)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(hashCode)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, c, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, c)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(c, methodDeclaration)
+ parseQualifiedRestOpt(c, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(c, c, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(c)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(c)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(c, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(xor)
+ listener: handleSend(hashCode, xor)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(hashCode)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, d, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, d)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(d, methodDeclaration)
+ parseQualifiedRestOpt(d, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(d, d, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(d)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(d)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(d, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(^)
+ listener: handleSend(hashCode, ^)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(hashCode)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, e, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, e)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(e, methodDeclaration)
+ parseQualifiedRestOpt(e, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(e, e, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(e)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(e)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(e, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(xor)
+ listener: handleSend(hashCode, xor)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, f, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, f)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(f, methodDeclaration)
+ parseQualifiedRestOpt(f, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(f, f, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(f)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(f)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(f, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(^)
+ listener: handleSend(hashCode, ^)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, g, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, g)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(g, methodDeclaration)
+ parseQualifiedRestOpt(g, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(g, g, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(g)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(g)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(g, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(xor)
+ listener: handleSend(hashCode, xor)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, h, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, h)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(h, methodDeclaration)
+ parseQualifiedRestOpt(h, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(h, h, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(h)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(h)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(h, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(^)
+ listener: handleSend(hashCode, ^)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseLiteralNull(^)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, i, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, i)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(i)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(i, methodDeclaration)
+ parseQualifiedRestOpt(i, methodDeclarationContinuation)
+ parseMethodTypeVar(i)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(i, i, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(i, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(y)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, j, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, j)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(j)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(j, methodDeclaration)
+ parseQualifiedRestOpt(j, methodDeclarationContinuation)
+ parseMethodTypeVar(j)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(j, j, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(j, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(y)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, k, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, k)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(k)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(k, methodDeclaration)
+ parseQualifiedRestOpt(k, methodDeclarationContinuation)
+ parseMethodTypeVar(k)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(k, k, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(k, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(y)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, l, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, l)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(l)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(l, methodDeclaration)
+ parseQualifiedRestOpt(l, methodDeclarationContinuation)
+ parseMethodTypeVar(l)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(l, l, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(l, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(y)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, m, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, m)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(m)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(m, methodDeclaration)
+ parseQualifiedRestOpt(m, methodDeclarationContinuation)
+ parseMethodTypeVar(m)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(m, m, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(m, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, int)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(z)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(z)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(z, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(z, localVariableDeclaration)
+ listener: beginInitializedIdentifier(z)
+ parseVariableInitializerOpt(z)
+ listener: beginVariableInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(^)
+ listener: endVariableInitializer(=)
+ listener: endInitializedIdentifier(z)
+ ensureSemicolon(y)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, return)
+ parseStatement(;)
+ parseStatementX(;)
+ parseReturnStatement(;)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(z, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(z)
+ listener: handleNoArguments(;)
+ listener: handleSend(z, ;)
+ ensureSemicolon(z)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, n, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, n)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(n)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(n, methodDeclaration)
+ parseQualifiedRestOpt(n, methodDeclarationContinuation)
+ parseMethodTypeVar(n)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(n, n, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(n, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, int)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(z)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(z)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(z, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(z, localVariableDeclaration)
+ listener: beginInitializedIdentifier(z)
+ parseVariableInitializerOpt(z)
+ listener: beginVariableInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(^)
+ listener: endVariableInitializer(=)
+ listener: endInitializedIdentifier(z)
+ ensureSemicolon(y)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, return)
+ parseStatement(;)
+ parseStatementX(;)
+ parseReturnStatement(;)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(z, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(z)
+ listener: handleNoArguments(;)
+ listener: handleSend(z, ;)
+ ensureSemicolon(z)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, o, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, o)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(o)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(o, methodDeclaration)
+ parseQualifiedRestOpt(o, methodDeclarationContinuation)
+ parseMethodTypeVar(o)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(o, o, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(o, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, p, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, p)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(p)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(p, methodDeclaration)
+ parseQualifiedRestOpt(p, methodDeclarationContinuation)
+ parseMethodTypeVar(p)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(p, p, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(p, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, q, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, q)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(q)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(q, methodDeclaration)
+ parseQualifiedRestOpt(q, methodDeclarationContinuation)
+ parseMethodTypeVar(q)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(q, q, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(q, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, r, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, r)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(r)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(r, methodDeclaration)
+ parseQualifiedRestOpt(r, methodDeclarationContinuation)
+ parseMethodTypeVar(r)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(r, r, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(r, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, s)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(s)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, s, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, s)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(s, methodDeclaration)
+ parseQualifiedRestOpt(s, methodDeclarationContinuation)
+ parseMethodTypeVar(s)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(s, s, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(s, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, s)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(s)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(s, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(s)
+ parseArguments(s)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(^)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(y)
+ listener: handleNoArguments())
+ listener: handleSend(y, ))
+ listener: endBinaryExpression(^)
+ listener: endArguments(2, (, ))
+ listener: handleSend(s, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, s)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(s)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ looksLikeFunctionBody(;)
+ parseSend(;, expression)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(s, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(s)
+ parseArguments(s)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(^)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(y)
+ listener: handleNoArguments())
+ listener: handleSend(y, ))
+ listener: endBinaryExpression(^)
+ listener: endArguments(2, (, ))
+ listener: handleSend(s, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, s, (, null, })
+ listener: endMember()
+ notEofOrValue(}, Key)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(Key)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, Key)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(Key, methodDeclaration)
+ parseQualifiedRestOpt(Key, methodDeclarationContinuation)
+ parseMethodTypeVar(Key)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(Key, Key, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(Key, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ parseInitializers(:)
+ listener: beginInitializers(:)
+ parseInitializer(:)
+ listener: beginInitializer(foo)
+ parseInitializerExpressionRest(:)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true)
+ parseUnaryExpression(:, true)
+ parsePrimary(:, expression)
+ parseSendOrFunctionLiteral(:, expression)
+ parseSend(:, expression)
+ ensureIdentifier(:, expression)
+ listener: handleIdentifier(foo, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(foo)
+ listener: handleNoArguments(=)
+ listener: handleSend(foo, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(^)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer(,)
+ parseInitializer(,)
+ listener: beginInitializer(bar)
+ parseInitializerExpressionRest(,)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(bar, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(bar)
+ listener: handleNoArguments(=)
+ listener: handleSend(bar, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments({)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments({)
+ listener: handleSend(y, {)
+ listener: endBinaryExpression(^)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer({)
+ listener: endInitializers(2, :, {)
+ parseAsyncModifierOpt(y)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(y, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, print)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(print)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(print, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(print)
+ parseArguments(print)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseLiteralString(()
+ parseSingleLiteralString(()
+ listener: beginLiteralString("hello )
+ parseExpression(${)
+ parsePrecedenceExpression(${, 1, true)
+ parseUnaryExpression(${, true)
+ parsePrimary(${, expression)
+ parseSendOrFunctionLiteral(${, expression)
+ parseSend(${, expression)
+ ensureIdentifier(${, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(xor)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(xor)
+ listener: handleSend(x, xor)
+ rewriter()
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(xor, Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'xor' is written as '^' instead of the written out word., Try replacing 'xor' with '^'., {string: xor, string2: ^}], xor, xor)
+ rewriter()
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(})
+ listener: handleSend(y, })
+ listener: endBinaryExpression(^)
+ listener: handleInterpolationExpression(${, })
+ parseStringPart(})
+ listener: handleStringPart(")
+ listener: endLiteralString(1, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(print, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassConstructor(null, Key, (, :, })
+ listener: endMember()
+ notEofOrValue(}, Key)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(Key)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, Key)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(Key, methodDeclaration)
+ parseQualifiedRestOpt(Key, methodDeclarationContinuation)
+ parseMethodTypeVar(Key)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(Key, Key, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(Key, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ parseInitializers(:)
+ listener: beginInitializers(:)
+ parseInitializer(:)
+ listener: beginInitializer(foo)
+ parseInitializerExpressionRest(:)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true)
+ parseUnaryExpression(:, true)
+ parsePrimary(:, expression)
+ parseSendOrFunctionLiteral(:, expression)
+ parseSend(:, expression)
+ ensureIdentifier(:, expression)
+ listener: handleIdentifier(foo, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(foo)
+ listener: handleNoArguments(=)
+ listener: handleSend(foo, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(^)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer(,)
+ parseInitializer(,)
+ listener: beginInitializer(bar)
+ parseInitializerExpressionRest(,)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(bar, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(bar)
+ listener: handleNoArguments(=)
+ listener: handleSend(bar, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments({)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments({)
+ listener: handleSend(y, {)
+ listener: endBinaryExpression(^)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer({)
+ listener: endInitializers(2, :, {)
+ parseAsyncModifierOpt(y)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(y, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, print)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(print)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(print, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(print)
+ parseArguments(print)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseLiteralString(()
+ parseSingleLiteralString(()
+ listener: beginLiteralString("hello )
+ parseExpression(${)
+ parsePrecedenceExpression(${, 1, true)
+ parseUnaryExpression(${, true)
+ parsePrimary(${, expression)
+ parseSendOrFunctionLiteral(${, expression)
+ parseSend(${, expression)
+ ensureIdentifier(${, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(})
+ listener: handleSend(y, })
+ listener: endBinaryExpression(^)
+ listener: handleInterpolationExpression(${, })
+ parseStringPart(})
+ listener: handleStringPart(")
+ listener: endLiteralString(1, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(print, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassConstructor(null, Key, (, :, })
+ listener: endMember()
+ notEofOrValue(}, not_currently_working)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(not_currently_working)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, not_currently_working, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, not_currently_working)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(not_currently_working, methodDeclaration)
+ parseQualifiedRestOpt(not_currently_working, methodDeclarationContinuation)
+ parseMethodTypeVar(not_currently_working)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(not_currently_working, not_currently_working, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(not_currently_working, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, x)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(xor)
+ listener: beginMetadataStar(x)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(x, typeReference)
+ listener: handleNoTypeArguments(xor)
+ listener: handleType(x, null)
+ listener: beginVariablesDeclaration(xor, null, null)
+ parseVariablesDeclarationRest(x, true)
+ parseOptionallyInitializedIdentifier(x)
+ ensureIdentifier(x, localVariableDeclaration)
+ listener: handleIdentifier(xor, localVariableDeclaration)
+ listener: beginInitializedIdentifier(xor)
+ parseVariableInitializerOpt(xor)
+ listener: handleNoVariableInitializer(xor)
+ listener: endInitializedIdentifier(xor)
+ ensureSemicolon(xor)
+ reportRecoverableError(xor, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], xor, xor)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, y)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(y)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ ensureSemicolon(y)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, x)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(x)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(^)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(^)
+ listener: handleSend(x, ^)
+ listener: beginBinaryExpression(^)
+ parsePrecedenceExpression(^, 11, true)
+ parseUnaryExpression(^, true)
+ parsePrimary(^, expression)
+ parseSendOrFunctionLiteral(^, expression)
+ parseSend(^, expression)
+ ensureIdentifier(^, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(^)
+ ensureSemicolon(y)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(3, {, })
+ listener: endClassMethod(null, not_currently_working, (, null, })
+ listener: endMember()
+ notEofOrValue(}, })
+ listener: endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+ listener: endClassDeclaration(abstract, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(abstract)
+ listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.parser.expect
new file mode 100644
index 0000000..c51d463
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.parser.expect
@@ -0,0 +1,87 @@
+NOTICE: Stream was rewritten by parser!
+
+abstract class Key {
+int get a => runtimeType.hashCode ^ null.hashCode;
+int get b => runtimeType.hashCode ^ null.hashCode;
+int get c { return runtimeType.hashCode ^ null.hashCode; }
+int get d { return runtimeType.hashCode ^ null.hashCode; }
+
+int get e => 1 + runtimeType.hashCode ^ null.hashCode + 3;
+int get f => 1 + runtimeType.hashCode ^ null.hashCode + 3;
+int get g { return 1 + runtimeType.hashCode ^ null.hashCode + 3; }
+int get h { return 1 + runtimeType.hashCode ^ null.hashCode + 3; }
+
+int i(int x, int y) => x ^ y;
+int j(int x, int y) => x ^ y;
+int k(int x, int y) { return x ^ y; }
+int l(int x, int y) { return x ^ y; }
+int m(int x, int y) { int z = x ^ y; return z; }
+int n(int x, int y) { int z = x ^ y; return z; }
+
+int o(int x, int y) => 1 + x ^ y + 3;
+int p(int x, int y) => 1 + x ^ y + 3;
+int q(int x, int y) { return 1 + x ^ y + 3; }
+int r(int x, int y) { return 1 + x ^ y + 3; }
+
+s(int x, int y) {
+s(x ^ y, x ^ y);
+s(x ^ y, x ^ y);
+}
+
+Key(int x, int y) : foo = x ^ y, bar = x ^ y {
+print("hello ${x ^ y}");
+}
+
+Key(int x, int y) : foo = x ^ y, bar = x ^ y {
+print("hello ${x ^ y}");
+}
+
+not_currently_working(int x, int y) {
+x xor ;y;
+x ^ y;
+}
+}
+
+
+abstract[KeywordToken] class[KeywordToken] Key[StringToken] {[BeginToken]
+int[StringToken] get[KeywordToken] a[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] b[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] c[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] d[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] get[KeywordToken] e[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] f[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] g[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] h[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] i[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] ^[ReplacementToken] y[StringToken];[SimpleToken]
+int[StringToken] j[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken];[SimpleToken]
+int[StringToken] k[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] ^[ReplacementToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] l[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] ^[SimpleToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] m[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] ^[ReplacementToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] n[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] o[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] ^[ReplacementToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] p[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] q[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] ^[ReplacementToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] r[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+s[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+s[StringToken]([BeginToken]x[StringToken] ^[ReplacementToken] y[StringToken],[SimpleToken] x[StringToken] ^[ReplacementToken] y[StringToken])[SimpleToken];[SimpleToken]
+s[StringToken]([BeginToken]x[StringToken] ^[SimpleToken] y[StringToken],[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] ^[ReplacementToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] ^[ReplacementToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] ^[ReplacementToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] ^[SimpleToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+not_currently_working[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+x[StringToken] xor[StringToken] ;[SyntheticToken]y[StringToken];[SimpleToken]
+x[StringToken] ^[SimpleToken] y[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.scanner.expect
new file mode 100644
index 0000000..e6fe2c9
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810.dart.scanner.expect
@@ -0,0 +1,85 @@
+abstract class Key {
+int get a => runtimeType.hashCode xor null.hashCode;
+int get b => runtimeType.hashCode ^ null.hashCode;
+int get c { return runtimeType.hashCode xor null.hashCode; }
+int get d { return runtimeType.hashCode ^ null.hashCode; }
+
+int get e => 1 + runtimeType.hashCode xor null.hashCode + 3;
+int get f => 1 + runtimeType.hashCode ^ null.hashCode + 3;
+int get g { return 1 + runtimeType.hashCode xor null.hashCode + 3; }
+int get h { return 1 + runtimeType.hashCode ^ null.hashCode + 3; }
+
+int i(int x, int y) => x xor y;
+int j(int x, int y) => x ^ y;
+int k(int x, int y) { return x xor y; }
+int l(int x, int y) { return x ^ y; }
+int m(int x, int y) { int z = x xor y; return z; }
+int n(int x, int y) { int z = x ^ y; return z; }
+
+int o(int x, int y) => 1 + x xor y + 3;
+int p(int x, int y) => 1 + x ^ y + 3;
+int q(int x, int y) { return 1 + x xor y + 3; }
+int r(int x, int y) { return 1 + x ^ y + 3; }
+
+s(int x, int y) {
+s(x xor y, x xor y);
+s(x ^ y, x ^ y);
+}
+
+Key(int x, int y) : foo = x xor y, bar = x xor y {
+print("hello ${x xor y}");
+}
+
+Key(int x, int y) : foo = x ^ y, bar = x ^ y {
+print("hello ${x ^ y}");
+}
+
+not_currently_working(int x, int y) {
+x xor y;
+x ^ y;
+}
+}
+
+
+abstract[KeywordToken] class[KeywordToken] Key[StringToken] {[BeginToken]
+int[StringToken] get[KeywordToken] a[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] xor[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] b[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] c[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] xor[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] d[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] get[KeywordToken] e[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] xor[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] f[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] g[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] xor[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] h[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] ^[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] i[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] xor[StringToken] y[StringToken];[SimpleToken]
+int[StringToken] j[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken];[SimpleToken]
+int[StringToken] k[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] xor[StringToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] l[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] ^[SimpleToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] m[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] xor[StringToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] n[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] o[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] xor[StringToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] p[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] q[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] xor[StringToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] r[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+s[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+s[StringToken]([BeginToken]x[StringToken] xor[StringToken] y[StringToken],[SimpleToken] x[StringToken] xor[StringToken] y[StringToken])[SimpleToken];[SimpleToken]
+s[StringToken]([BeginToken]x[StringToken] ^[SimpleToken] y[StringToken],[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] xor[StringToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] xor[StringToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] xor[StringToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] ^[SimpleToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] ^[SimpleToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+not_currently_working[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+x[StringToken] xor[StringToken] y[StringToken];[SimpleToken]
+x[StringToken] ^[SimpleToken] y[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart
new file mode 100644
index 0000000..cf6ecb7
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart
@@ -0,0 +1,41 @@
+abstract class Key {
+ int get a => runtimeType.hashCode and null.hashCode;
+ int get b => runtimeType.hashCode & null.hashCode;
+ int get c { return runtimeType.hashCode and null.hashCode; }
+ int get d { return runtimeType.hashCode & null.hashCode; }
+
+ int get e => 1 + runtimeType.hashCode and null.hashCode + 3;
+ int get f => 1 + runtimeType.hashCode & null.hashCode + 3;
+ int get g { return 1 + runtimeType.hashCode and null.hashCode + 3; }
+ int get h { return 1 + runtimeType.hashCode & null.hashCode + 3; }
+
+ int i(int x, int y) => x and y;
+ int j(int x, int y) => x & y;
+ int k(int x, int y) { return x and y; }
+ int l(int x, int y) { return x & y; }
+ int m(int x, int y) { int z = x and y; return z; }
+ int n(int x, int y) { int z = x & y; return z; }
+
+ int o(int x, int y) => 1 + x and y + 3;
+ int p(int x, int y) => 1 + x & y + 3;
+ int q(int x, int y) { return 1 + x and y + 3; }
+ int r(int x, int y) { return 1 + x & y + 3; }
+
+ s(int x, int y) {
+ s(x and y, x and y);
+ s(x & y, x & y);
+ }
+
+ Key(int x, int y) : foo = x and y, bar = x and y {
+ print("hello ${x and y}");
+ }
+
+ Key(int x, int y) : foo = x & y, bar = x & y {
+ print("hello ${x & y}");
+ }
+
+ not_currently_working(int x, int y) {
+ x and y;
+ x & y;
+ }
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.expect
new file mode 100644
index 0000000..e907a22
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.expect
@@ -0,0 +1,1221 @@
+Problems reported:
+
+parser/error_recovery/issue_26810_and:2:37: Binary operator 'and' is written as '&' instead of the written out word.
+ int get a => runtimeType.hashCode and null.hashCode;
+ ^^^
+
+parser/error_recovery/issue_26810_and:4:43: Binary operator 'and' is written as '&' instead of the written out word.
+ int get c { return runtimeType.hashCode and null.hashCode; }
+ ^^^
+
+parser/error_recovery/issue_26810_and:7:41: Binary operator 'and' is written as '&' instead of the written out word.
+ int get e => 1 + runtimeType.hashCode and null.hashCode + 3;
+ ^^^
+
+parser/error_recovery/issue_26810_and:9:47: Binary operator 'and' is written as '&' instead of the written out word.
+ int get g { return 1 + runtimeType.hashCode and null.hashCode + 3; }
+ ^^^
+
+parser/error_recovery/issue_26810_and:12:28: Binary operator 'and' is written as '&' instead of the written out word.
+ int i(int x, int y) => x and y;
+ ^^^
+
+parser/error_recovery/issue_26810_and:14:34: Binary operator 'and' is written as '&' instead of the written out word.
+ int k(int x, int y) { return x and y; }
+ ^^^
+
+parser/error_recovery/issue_26810_and:16:36: Binary operator 'and' is written as '&' instead of the written out word.
+ int m(int x, int y) { int z = x and y; return z; }
+ ^^^
+
+parser/error_recovery/issue_26810_and:19:32: Binary operator 'and' is written as '&' instead of the written out word.
+ int o(int x, int y) => 1 + x and y + 3;
+ ^^^
+
+parser/error_recovery/issue_26810_and:21:38: Binary operator 'and' is written as '&' instead of the written out word.
+ int q(int x, int y) { return 1 + x and y + 3; }
+ ^^^
+
+parser/error_recovery/issue_26810_and:25:9: Binary operator 'and' is written as '&' instead of the written out word.
+ s(x and y, x and y);
+ ^^^
+
+parser/error_recovery/issue_26810_and:25:18: Binary operator 'and' is written as '&' instead of the written out word.
+ s(x and y, x and y);
+ ^^^
+
+parser/error_recovery/issue_26810_and:29:31: Binary operator 'and' is written as '&' instead of the written out word.
+ Key(int x, int y) : foo = x and y, bar = x and y {
+ ^^^
+
+parser/error_recovery/issue_26810_and:29:46: Binary operator 'and' is written as '&' instead of the written out word.
+ Key(int x, int y) : foo = x and y, bar = x and y {
+ ^^^
+
+parser/error_recovery/issue_26810_and:30:22: Binary operator 'and' is written as '&' instead of the written out word.
+ print("hello ${x and y}");
+ ^^^
+
+parser/error_recovery/issue_26810_and:38:7: Expected ';' after this.
+ x and y;
+ ^^^
+
+beginCompilationUnit(abstract)
+ beginMetadataStar(abstract)
+ endMetadataStar(0)
+ beginClassOrNamedMixinApplicationPrelude(abstract)
+ handleIdentifier(Key, classOrMixinDeclaration)
+ handleNoTypeVariables({)
+ beginClassDeclaration(abstract, abstract, Key)
+ handleNoType(Key)
+ handleClassExtends(null, 1)
+ handleClassNoWithClause()
+ handleClassOrMixinImplements(null, 0)
+ handleClassHeader(abstract, class, null)
+ beginClassOrMixinBody(DeclarationKind.Class, {)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, a)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(a, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(hashCode, and)
+ handleEndingBinaryExpression(.)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(&)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, b)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(b, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(hashCode, &)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(&)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(&)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, c)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(c, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(hashCode, and)
+ handleEndingBinaryExpression(.)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(&)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, d)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(d, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(hashCode, &)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(&)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(&)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, e)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(e, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(hashCode, and)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(&)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, f)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(f, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(hashCode, &)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ beginBinaryExpression(&)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(&)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, g)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(g, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(hashCode, and)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(&)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, h)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(h, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(hashCode, &)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ beginBinaryExpression(&)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(&)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, i)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(i)
+ handleType(int, null)
+ handleIdentifier(i, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(&)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, j)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(j)
+ handleType(int, null)
+ handleIdentifier(j, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(&)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, k)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(k)
+ handleType(int, null)
+ handleIdentifier(k, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(&)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, l)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(l)
+ handleType(int, null)
+ handleIdentifier(l, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(&)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, m)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(m)
+ handleType(int, null)
+ handleIdentifier(m, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(z)
+ handleType(int, null)
+ beginVariablesDeclaration(z, null, null)
+ handleIdentifier(z, localVariableDeclaration)
+ beginInitializedIdentifier(z)
+ beginVariableInitializer(=)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(&)
+ endVariableInitializer(=)
+ endInitializedIdentifier(z)
+ endVariablesDeclaration(1, ;)
+ beginReturnStatement(return)
+ handleIdentifier(z, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(z, ;)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, n)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(n)
+ handleType(int, null)
+ handleIdentifier(n, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(z)
+ handleType(int, null)
+ beginVariablesDeclaration(z, null, null)
+ handleIdentifier(z, localVariableDeclaration)
+ beginInitializedIdentifier(z)
+ beginVariableInitializer(=)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(&)
+ endVariableInitializer(=)
+ endInitializedIdentifier(z)
+ endVariablesDeclaration(1, ;)
+ beginReturnStatement(return)
+ handleIdentifier(z, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(z, ;)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, o)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(o)
+ handleType(int, null)
+ handleIdentifier(o, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(&)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, p)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(p)
+ handleType(int, null)
+ handleIdentifier(p, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ endBinaryExpression(+)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(&)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, q)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(q)
+ handleType(int, null)
+ handleIdentifier(q, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(&)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, r)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(r)
+ handleType(int, null)
+ handleIdentifier(r, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ endBinaryExpression(+)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(&)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(s)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, s)
+ handleNoType(})
+ handleIdentifier(s, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(s, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(&)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(y, ))
+ endBinaryExpression(&)
+ endArguments(2, (, ))
+ handleSend(s, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(s, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(&)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(y, ))
+ endBinaryExpression(&)
+ endArguments(2, (, ))
+ handleSend(s, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, s, (, null, })
+ endMember()
+ beginMetadataStar(Key)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, Key)
+ handleNoType(})
+ handleIdentifier(Key, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ beginInitializers(:)
+ beginInitializer(foo)
+ handleIdentifier(foo, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(foo, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(&)
+ handleAssignmentExpression(=)
+ endInitializer(,)
+ beginInitializer(bar)
+ handleIdentifier(bar, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(bar, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments({)
+ handleNoArguments({)
+ handleSend(y, {)
+ endBinaryExpression(&)
+ handleAssignmentExpression(=)
+ endInitializer({)
+ endInitializers(2, :, {)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(print, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ beginLiteralString("hello )
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(and)
+ handleNoArguments(and)
+ handleSend(x, and)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(y, })
+ endBinaryExpression(&)
+ handleInterpolationExpression(${, })
+ handleStringPart(")
+ endLiteralString(1, ))
+ endArguments(1, (, ))
+ handleSend(print, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endClassConstructor(null, Key, (, :, })
+ endMember()
+ beginMetadataStar(Key)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, Key)
+ handleNoType(})
+ handleIdentifier(Key, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ beginInitializers(:)
+ beginInitializer(foo)
+ handleIdentifier(foo, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(foo, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(&)
+ handleAssignmentExpression(=)
+ endInitializer(,)
+ beginInitializer(bar)
+ handleIdentifier(bar, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(bar, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments({)
+ handleNoArguments({)
+ handleSend(y, {)
+ endBinaryExpression(&)
+ handleAssignmentExpression(=)
+ endInitializer({)
+ endInitializers(2, :, {)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(print, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ beginLiteralString("hello )
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(y, })
+ endBinaryExpression(&)
+ handleInterpolationExpression(${, })
+ handleStringPart(")
+ endLiteralString(1, ))
+ endArguments(1, (, ))
+ handleSend(print, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endClassConstructor(null, Key, (, :, })
+ endMember()
+ beginMetadataStar(not_currently_working)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, not_currently_working)
+ handleNoType(})
+ handleIdentifier(not_currently_working, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(x)
+ endMetadataStar(0)
+ handleIdentifier(x, typeReference)
+ handleNoTypeArguments(and)
+ handleType(x, null)
+ beginVariablesDeclaration(and, null, null)
+ handleIdentifier(and, localVariableDeclaration)
+ beginInitializedIdentifier(and)
+ handleNoVariableInitializer(and)
+ endInitializedIdentifier(and)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], and, and)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(&)
+ handleNoArguments(&)
+ handleSend(x, &)
+ beginBinaryExpression(&)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(&)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(3, {, })
+ endClassMethod(null, not_currently_working, (, null, })
+ endMember()
+ endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+ endClassDeclaration(abstract, })
+ endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
new file mode 100644
index 0000000..9abec744
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.intertwined.expect
@@ -0,0 +1,2594 @@
+parseUnit(abstract)
+ skipErrorTokens(abstract)
+ listener: beginCompilationUnit(abstract)
+ syntheticPreviousToken(abstract)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(abstract)
+ listener: endMetadataStar(0)
+ parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+ parseClassDeclarationModifiers(, class)
+ parseTopLevelKeywordModifiers(abstract, class)
+ parseClassOrNamedMixinApplication(abstract, class)
+ listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+ ensureIdentifier(class, classOrMixinDeclaration)
+ listener: handleIdentifier(Key, classOrMixinDeclaration)
+ listener: handleNoTypeVariables({)
+ listener: beginClassDeclaration(abstract, abstract, Key)
+ parseClass(Key, abstract, class, Key)
+ parseClassHeaderOpt(Key, abstract, class)
+ parseClassExtendsOpt(Key)
+ listener: handleNoType(Key)
+ listener: handleClassExtends(null, 1)
+ parseWithClauseOpt(Key)
+ listener: handleClassNoWithClause()
+ parseClassOrMixinImplementsOpt(Key)
+ listener: handleClassOrMixinImplements(null, 0)
+ listener: handleClassHeader(abstract, class, null)
+ parseClassOrMixinOrExtensionBody(Key, DeclarationKind.Class, Key)
+ listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Key)
+ parseMetadataStar({)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, a, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, a)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(a, methodDeclaration)
+ parseQualifiedRestOpt(a, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(a, a, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(a)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(a)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(a, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(and)
+ listener: handleSend(hashCode, and)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(hashCode)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, b, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, b)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(b, methodDeclaration)
+ parseQualifiedRestOpt(b, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(b, b, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(b)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(b)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(b, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(&)
+ listener: handleSend(hashCode, &)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(hashCode)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, c, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, c)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(c, methodDeclaration)
+ parseQualifiedRestOpt(c, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(c, c, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(c)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(c)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(c, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(and)
+ listener: handleSend(hashCode, and)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(hashCode)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, d, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, d)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(d, methodDeclaration)
+ parseQualifiedRestOpt(d, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(d, d, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(d)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(d)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(d, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(&)
+ listener: handleSend(hashCode, &)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(hashCode)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, e, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, e)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(e, methodDeclaration)
+ parseQualifiedRestOpt(e, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(e, e, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(e)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(e)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(e, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(and)
+ listener: handleSend(hashCode, and)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, f, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, f)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(f, methodDeclaration)
+ parseQualifiedRestOpt(f, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(f, f, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(f)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(f)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(f, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(&)
+ listener: handleSend(hashCode, &)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, g, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, g)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(g, methodDeclaration)
+ parseQualifiedRestOpt(g, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(g, g, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(g)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(g)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(g, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(and)
+ listener: handleSend(hashCode, and)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, h, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, h)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(h, methodDeclaration)
+ parseQualifiedRestOpt(h, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(h, h, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(h)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(h)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(h, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(&)
+ listener: handleSend(hashCode, &)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseLiteralNull(&)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, i, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, i)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(i)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(i, methodDeclaration)
+ parseQualifiedRestOpt(i, methodDeclarationContinuation)
+ parseMethodTypeVar(i)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(i, i, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(i, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(y)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, j, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, j)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(j)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(j, methodDeclaration)
+ parseQualifiedRestOpt(j, methodDeclarationContinuation)
+ parseMethodTypeVar(j)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(j, j, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(j, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(y)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, k, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, k)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(k)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(k, methodDeclaration)
+ parseQualifiedRestOpt(k, methodDeclarationContinuation)
+ parseMethodTypeVar(k)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(k, k, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(k, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(y)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, l, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, l)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(l)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(l, methodDeclaration)
+ parseQualifiedRestOpt(l, methodDeclarationContinuation)
+ parseMethodTypeVar(l)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(l, l, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(l, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(y)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, m, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, m)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(m)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(m, methodDeclaration)
+ parseQualifiedRestOpt(m, methodDeclarationContinuation)
+ parseMethodTypeVar(m)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(m, m, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(m, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, int)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(z)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(z)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(z, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(z, localVariableDeclaration)
+ listener: beginInitializedIdentifier(z)
+ parseVariableInitializerOpt(z)
+ listener: beginVariableInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(&)
+ listener: endVariableInitializer(=)
+ listener: endInitializedIdentifier(z)
+ ensureSemicolon(y)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, return)
+ parseStatement(;)
+ parseStatementX(;)
+ parseReturnStatement(;)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(z, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(z)
+ listener: handleNoArguments(;)
+ listener: handleSend(z, ;)
+ ensureSemicolon(z)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, n, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, n)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(n)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(n, methodDeclaration)
+ parseQualifiedRestOpt(n, methodDeclarationContinuation)
+ parseMethodTypeVar(n)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(n, n, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(n, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, int)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(z)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(z)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(z, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(z, localVariableDeclaration)
+ listener: beginInitializedIdentifier(z)
+ parseVariableInitializerOpt(z)
+ listener: beginVariableInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(&)
+ listener: endVariableInitializer(=)
+ listener: endInitializedIdentifier(z)
+ ensureSemicolon(y)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, return)
+ parseStatement(;)
+ parseStatementX(;)
+ parseReturnStatement(;)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(z, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(z)
+ listener: handleNoArguments(;)
+ listener: handleSend(z, ;)
+ ensureSemicolon(z)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, o, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, o)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(o)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(o, methodDeclaration)
+ parseQualifiedRestOpt(o, methodDeclarationContinuation)
+ parseMethodTypeVar(o)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(o, o, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(o, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, p, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, p)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(p)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(p, methodDeclaration)
+ parseQualifiedRestOpt(p, methodDeclarationContinuation)
+ parseMethodTypeVar(p)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(p, p, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(p, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, q, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, q)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(q)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(q, methodDeclaration)
+ parseQualifiedRestOpt(q, methodDeclarationContinuation)
+ parseMethodTypeVar(q)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(q, q, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(q, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, r, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, r)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(r)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(r, methodDeclaration)
+ parseQualifiedRestOpt(r, methodDeclarationContinuation)
+ parseMethodTypeVar(r)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(r, r, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(r, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, s)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(s)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, s, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, s)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(s, methodDeclaration)
+ parseQualifiedRestOpt(s, methodDeclarationContinuation)
+ parseMethodTypeVar(s)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(s, s, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(s, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, s)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(s)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(s, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(s)
+ parseArguments(s)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(&)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(y)
+ listener: handleNoArguments())
+ listener: handleSend(y, ))
+ listener: endBinaryExpression(&)
+ listener: endArguments(2, (, ))
+ listener: handleSend(s, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, s)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(s)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ looksLikeFunctionBody(;)
+ parseSend(;, expression)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(s, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(s)
+ parseArguments(s)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(&)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(y)
+ listener: handleNoArguments())
+ listener: handleSend(y, ))
+ listener: endBinaryExpression(&)
+ listener: endArguments(2, (, ))
+ listener: handleSend(s, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, s, (, null, })
+ listener: endMember()
+ notEofOrValue(}, Key)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(Key)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, Key)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(Key, methodDeclaration)
+ parseQualifiedRestOpt(Key, methodDeclarationContinuation)
+ parseMethodTypeVar(Key)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(Key, Key, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(Key, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ parseInitializers(:)
+ listener: beginInitializers(:)
+ parseInitializer(:)
+ listener: beginInitializer(foo)
+ parseInitializerExpressionRest(:)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true)
+ parseUnaryExpression(:, true)
+ parsePrimary(:, expression)
+ parseSendOrFunctionLiteral(:, expression)
+ parseSend(:, expression)
+ ensureIdentifier(:, expression)
+ listener: handleIdentifier(foo, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(foo)
+ listener: handleNoArguments(=)
+ listener: handleSend(foo, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(&)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer(,)
+ parseInitializer(,)
+ listener: beginInitializer(bar)
+ parseInitializerExpressionRest(,)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(bar, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(bar)
+ listener: handleNoArguments(=)
+ listener: handleSend(bar, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments({)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments({)
+ listener: handleSend(y, {)
+ listener: endBinaryExpression(&)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer({)
+ listener: endInitializers(2, :, {)
+ parseAsyncModifierOpt(y)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(y, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, print)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(print)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(print, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(print)
+ parseArguments(print)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseLiteralString(()
+ parseSingleLiteralString(()
+ listener: beginLiteralString("hello )
+ parseExpression(${)
+ parsePrecedenceExpression(${, 1, true)
+ parseUnaryExpression(${, true)
+ parsePrimary(${, expression)
+ parseSendOrFunctionLiteral(${, expression)
+ parseSend(${, expression)
+ ensureIdentifier(${, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(and)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(and)
+ listener: handleSend(x, and)
+ rewriter()
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(and, Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'and' is written as '&' instead of the written out word., Try replacing 'and' with '&'., {string: and, string2: &}], and, and)
+ rewriter()
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(})
+ listener: handleSend(y, })
+ listener: endBinaryExpression(&)
+ listener: handleInterpolationExpression(${, })
+ parseStringPart(})
+ listener: handleStringPart(")
+ listener: endLiteralString(1, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(print, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassConstructor(null, Key, (, :, })
+ listener: endMember()
+ notEofOrValue(}, Key)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(Key)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, Key)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(Key, methodDeclaration)
+ parseQualifiedRestOpt(Key, methodDeclarationContinuation)
+ parseMethodTypeVar(Key)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(Key, Key, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(Key, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ parseInitializers(:)
+ listener: beginInitializers(:)
+ parseInitializer(:)
+ listener: beginInitializer(foo)
+ parseInitializerExpressionRest(:)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true)
+ parseUnaryExpression(:, true)
+ parsePrimary(:, expression)
+ parseSendOrFunctionLiteral(:, expression)
+ parseSend(:, expression)
+ ensureIdentifier(:, expression)
+ listener: handleIdentifier(foo, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(foo)
+ listener: handleNoArguments(=)
+ listener: handleSend(foo, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(&)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer(,)
+ parseInitializer(,)
+ listener: beginInitializer(bar)
+ parseInitializerExpressionRest(,)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(bar, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(bar)
+ listener: handleNoArguments(=)
+ listener: handleSend(bar, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments({)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments({)
+ listener: handleSend(y, {)
+ listener: endBinaryExpression(&)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer({)
+ listener: endInitializers(2, :, {)
+ parseAsyncModifierOpt(y)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(y, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, print)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(print)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(print, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(print)
+ parseArguments(print)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseLiteralString(()
+ parseSingleLiteralString(()
+ listener: beginLiteralString("hello )
+ parseExpression(${)
+ parsePrecedenceExpression(${, 1, true)
+ parseUnaryExpression(${, true)
+ parsePrimary(${, expression)
+ parseSendOrFunctionLiteral(${, expression)
+ parseSend(${, expression)
+ ensureIdentifier(${, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(})
+ listener: handleSend(y, })
+ listener: endBinaryExpression(&)
+ listener: handleInterpolationExpression(${, })
+ parseStringPart(})
+ listener: handleStringPart(")
+ listener: endLiteralString(1, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(print, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassConstructor(null, Key, (, :, })
+ listener: endMember()
+ notEofOrValue(}, not_currently_working)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(not_currently_working)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, not_currently_working, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, not_currently_working)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(not_currently_working, methodDeclaration)
+ parseQualifiedRestOpt(not_currently_working, methodDeclarationContinuation)
+ parseMethodTypeVar(not_currently_working)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(not_currently_working, not_currently_working, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(not_currently_working, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, x)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(and)
+ listener: beginMetadataStar(x)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(x, typeReference)
+ listener: handleNoTypeArguments(and)
+ listener: handleType(x, null)
+ listener: beginVariablesDeclaration(and, null, null)
+ parseVariablesDeclarationRest(x, true)
+ parseOptionallyInitializedIdentifier(x)
+ ensureIdentifier(x, localVariableDeclaration)
+ listener: handleIdentifier(and, localVariableDeclaration)
+ listener: beginInitializedIdentifier(and)
+ parseVariableInitializerOpt(and)
+ listener: handleNoVariableInitializer(and)
+ listener: endInitializedIdentifier(and)
+ ensureSemicolon(and)
+ reportRecoverableError(and, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], and, and)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, y)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(y)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ ensureSemicolon(y)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, x)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(x)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(&)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(&)
+ listener: handleSend(x, &)
+ listener: beginBinaryExpression(&)
+ parsePrecedenceExpression(&, 12, true)
+ parseUnaryExpression(&, true)
+ parsePrimary(&, expression)
+ parseSendOrFunctionLiteral(&, expression)
+ parseSend(&, expression)
+ ensureIdentifier(&, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(&)
+ ensureSemicolon(y)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(3, {, })
+ listener: endClassMethod(null, not_currently_working, (, null, })
+ listener: endMember()
+ notEofOrValue(}, })
+ listener: endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+ listener: endClassDeclaration(abstract, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(abstract)
+ listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.parser.expect
new file mode 100644
index 0000000..16ee9fd
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.parser.expect
@@ -0,0 +1,87 @@
+NOTICE: Stream was rewritten by parser!
+
+abstract class Key {
+int get a => runtimeType.hashCode & null.hashCode;
+int get b => runtimeType.hashCode & null.hashCode;
+int get c { return runtimeType.hashCode & null.hashCode; }
+int get d { return runtimeType.hashCode & null.hashCode; }
+
+int get e => 1 + runtimeType.hashCode & null.hashCode + 3;
+int get f => 1 + runtimeType.hashCode & null.hashCode + 3;
+int get g { return 1 + runtimeType.hashCode & null.hashCode + 3; }
+int get h { return 1 + runtimeType.hashCode & null.hashCode + 3; }
+
+int i(int x, int y) => x & y;
+int j(int x, int y) => x & y;
+int k(int x, int y) { return x & y; }
+int l(int x, int y) { return x & y; }
+int m(int x, int y) { int z = x & y; return z; }
+int n(int x, int y) { int z = x & y; return z; }
+
+int o(int x, int y) => 1 + x & y + 3;
+int p(int x, int y) => 1 + x & y + 3;
+int q(int x, int y) { return 1 + x & y + 3; }
+int r(int x, int y) { return 1 + x & y + 3; }
+
+s(int x, int y) {
+s(x & y, x & y);
+s(x & y, x & y);
+}
+
+Key(int x, int y) : foo = x & y, bar = x & y {
+print("hello ${x & y}");
+}
+
+Key(int x, int y) : foo = x & y, bar = x & y {
+print("hello ${x & y}");
+}
+
+not_currently_working(int x, int y) {
+x and ;y;
+x & y;
+}
+}
+
+
+abstract[KeywordToken] class[KeywordToken] Key[StringToken] {[BeginToken]
+int[StringToken] get[KeywordToken] a[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] b[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] c[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] d[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] get[KeywordToken] e[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] f[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] g[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] h[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] i[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] &[ReplacementToken] y[StringToken];[SimpleToken]
+int[StringToken] j[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken];[SimpleToken]
+int[StringToken] k[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] &[ReplacementToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] l[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] &[SimpleToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] m[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] &[ReplacementToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] n[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] o[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] &[ReplacementToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] p[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] q[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] &[ReplacementToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] r[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+s[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+s[StringToken]([BeginToken]x[StringToken] &[ReplacementToken] y[StringToken],[SimpleToken] x[StringToken] &[ReplacementToken] y[StringToken])[SimpleToken];[SimpleToken]
+s[StringToken]([BeginToken]x[StringToken] &[SimpleToken] y[StringToken],[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] &[ReplacementToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] &[ReplacementToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] &[ReplacementToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] &[SimpleToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+not_currently_working[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+x[StringToken] and[StringToken] ;[SyntheticToken]y[StringToken];[SimpleToken]
+x[StringToken] &[SimpleToken] y[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.scanner.expect
new file mode 100644
index 0000000..5b180a3
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_and.dart.scanner.expect
@@ -0,0 +1,85 @@
+abstract class Key {
+int get a => runtimeType.hashCode and null.hashCode;
+int get b => runtimeType.hashCode & null.hashCode;
+int get c { return runtimeType.hashCode and null.hashCode; }
+int get d { return runtimeType.hashCode & null.hashCode; }
+
+int get e => 1 + runtimeType.hashCode and null.hashCode + 3;
+int get f => 1 + runtimeType.hashCode & null.hashCode + 3;
+int get g { return 1 + runtimeType.hashCode and null.hashCode + 3; }
+int get h { return 1 + runtimeType.hashCode & null.hashCode + 3; }
+
+int i(int x, int y) => x and y;
+int j(int x, int y) => x & y;
+int k(int x, int y) { return x and y; }
+int l(int x, int y) { return x & y; }
+int m(int x, int y) { int z = x and y; return z; }
+int n(int x, int y) { int z = x & y; return z; }
+
+int o(int x, int y) => 1 + x and y + 3;
+int p(int x, int y) => 1 + x & y + 3;
+int q(int x, int y) { return 1 + x and y + 3; }
+int r(int x, int y) { return 1 + x & y + 3; }
+
+s(int x, int y) {
+s(x and y, x and y);
+s(x & y, x & y);
+}
+
+Key(int x, int y) : foo = x and y, bar = x and y {
+print("hello ${x and y}");
+}
+
+Key(int x, int y) : foo = x & y, bar = x & y {
+print("hello ${x & y}");
+}
+
+not_currently_working(int x, int y) {
+x and y;
+x & y;
+}
+}
+
+
+abstract[KeywordToken] class[KeywordToken] Key[StringToken] {[BeginToken]
+int[StringToken] get[KeywordToken] a[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] and[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] b[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] c[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] and[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] d[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] get[KeywordToken] e[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] and[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] f[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] g[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] and[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] h[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] &[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] i[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] and[StringToken] y[StringToken];[SimpleToken]
+int[StringToken] j[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken];[SimpleToken]
+int[StringToken] k[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] and[StringToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] l[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] &[SimpleToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] m[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] and[StringToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] n[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] o[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] and[StringToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] p[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] q[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] and[StringToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] r[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+s[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+s[StringToken]([BeginToken]x[StringToken] and[StringToken] y[StringToken],[SimpleToken] x[StringToken] and[StringToken] y[StringToken])[SimpleToken];[SimpleToken]
+s[StringToken]([BeginToken]x[StringToken] &[SimpleToken] y[StringToken],[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] and[StringToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] and[StringToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] and[StringToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] &[SimpleToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] &[SimpleToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+not_currently_working[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+x[StringToken] and[StringToken] y[StringToken];[SimpleToken]
+x[StringToken] &[SimpleToken] y[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart
new file mode 100644
index 0000000..f5fbb1c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart
@@ -0,0 +1,41 @@
+abstract class Key {
+ int get a => runtimeType.hashCode or null.hashCode;
+ int get b => runtimeType.hashCode | null.hashCode;
+ int get c { return runtimeType.hashCode or null.hashCode; }
+ int get d { return runtimeType.hashCode | null.hashCode; }
+
+ int get e => 1 + runtimeType.hashCode or null.hashCode + 3;
+ int get f => 1 + runtimeType.hashCode | null.hashCode + 3;
+ int get g { return 1 + runtimeType.hashCode or null.hashCode + 3; }
+ int get h { return 1 + runtimeType.hashCode | null.hashCode + 3; }
+
+ int i(int x, int y) => x or y;
+ int j(int x, int y) => x | y;
+ int k(int x, int y) { return x or y; }
+ int l(int x, int y) { return x | y; }
+ int m(int x, int y) { int z = x or y; return z; }
+ int n(int x, int y) { int z = x | y; return z; }
+
+ int o(int x, int y) => 1 + x or y + 3;
+ int p(int x, int y) => 1 + x | y + 3;
+ int q(int x, int y) { return 1 + x or y + 3; }
+ int r(int x, int y) { return 1 + x | y + 3; }
+
+ s(int x, int y) {
+ s(x or y, x or y);
+ s(x | y, x | y);
+ }
+
+ Key(int x, int y) : foo = x or y, bar = x or y {
+ print("hello ${x or y}");
+ }
+
+ Key(int x, int y) : foo = x | y, bar = x | y {
+ print("hello ${x | y}");
+ }
+
+ not_currently_working(int x, int y) {
+ x or y;
+ x | y;
+ }
+}
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.expect
new file mode 100644
index 0000000..9080b89
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.expect
@@ -0,0 +1,1221 @@
+Problems reported:
+
+parser/error_recovery/issue_26810_or:2:37: Binary operator 'or' is written as '|' instead of the written out word.
+ int get a => runtimeType.hashCode or null.hashCode;
+ ^^
+
+parser/error_recovery/issue_26810_or:4:43: Binary operator 'or' is written as '|' instead of the written out word.
+ int get c { return runtimeType.hashCode or null.hashCode; }
+ ^^
+
+parser/error_recovery/issue_26810_or:7:41: Binary operator 'or' is written as '|' instead of the written out word.
+ int get e => 1 + runtimeType.hashCode or null.hashCode + 3;
+ ^^
+
+parser/error_recovery/issue_26810_or:9:47: Binary operator 'or' is written as '|' instead of the written out word.
+ int get g { return 1 + runtimeType.hashCode or null.hashCode + 3; }
+ ^^
+
+parser/error_recovery/issue_26810_or:12:28: Binary operator 'or' is written as '|' instead of the written out word.
+ int i(int x, int y) => x or y;
+ ^^
+
+parser/error_recovery/issue_26810_or:14:34: Binary operator 'or' is written as '|' instead of the written out word.
+ int k(int x, int y) { return x or y; }
+ ^^
+
+parser/error_recovery/issue_26810_or:16:36: Binary operator 'or' is written as '|' instead of the written out word.
+ int m(int x, int y) { int z = x or y; return z; }
+ ^^
+
+parser/error_recovery/issue_26810_or:19:32: Binary operator 'or' is written as '|' instead of the written out word.
+ int o(int x, int y) => 1 + x or y + 3;
+ ^^
+
+parser/error_recovery/issue_26810_or:21:38: Binary operator 'or' is written as '|' instead of the written out word.
+ int q(int x, int y) { return 1 + x or y + 3; }
+ ^^
+
+parser/error_recovery/issue_26810_or:25:9: Binary operator 'or' is written as '|' instead of the written out word.
+ s(x or y, x or y);
+ ^^
+
+parser/error_recovery/issue_26810_or:25:17: Binary operator 'or' is written as '|' instead of the written out word.
+ s(x or y, x or y);
+ ^^
+
+parser/error_recovery/issue_26810_or:29:31: Binary operator 'or' is written as '|' instead of the written out word.
+ Key(int x, int y) : foo = x or y, bar = x or y {
+ ^^
+
+parser/error_recovery/issue_26810_or:29:45: Binary operator 'or' is written as '|' instead of the written out word.
+ Key(int x, int y) : foo = x or y, bar = x or y {
+ ^^
+
+parser/error_recovery/issue_26810_or:30:22: Binary operator 'or' is written as '|' instead of the written out word.
+ print("hello ${x or y}");
+ ^^
+
+parser/error_recovery/issue_26810_or:38:7: Expected ';' after this.
+ x or y;
+ ^^
+
+beginCompilationUnit(abstract)
+ beginMetadataStar(abstract)
+ endMetadataStar(0)
+ beginClassOrNamedMixinApplicationPrelude(abstract)
+ handleIdentifier(Key, classOrMixinDeclaration)
+ handleNoTypeVariables({)
+ beginClassDeclaration(abstract, abstract, Key)
+ handleNoType(Key)
+ handleClassExtends(null, 1)
+ handleClassNoWithClause()
+ handleClassOrMixinImplements(null, 0)
+ handleClassHeader(abstract, class, null)
+ beginClassOrMixinBody(DeclarationKind.Class, {)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, a)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(a, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(hashCode, or)
+ handleEndingBinaryExpression(.)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(|)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, b)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(b, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(hashCode, |)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(|)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(|)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, c)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(c, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(hashCode, or)
+ handleEndingBinaryExpression(.)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(|)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, d)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(d, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(hashCode, |)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(|)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(hashCode, ;)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(|)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, e)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(e, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(hashCode, or)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(|)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, f)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(f, methodDeclaration)
+ handleNoTypeVariables(=>)
+ handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(hashCode, |)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ beginBinaryExpression(|)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(|)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(get, int, =>, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, g)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(g, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(hashCode, or)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(|)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, get, h)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(get)
+ handleType(int, null)
+ handleIdentifier(h, methodDeclaration)
+ handleNoTypeVariables({)
+ handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(runtimeType, expression)
+ handleNoTypeArguments(.)
+ handleNoArguments(.)
+ handleSend(runtimeType, .)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(hashCode, |)
+ handleEndingBinaryExpression(.)
+ endBinaryExpression(+)
+ beginBinaryExpression(|)
+ handleLiteralNull(null)
+ handleIdentifier(hashCode, expressionContinuation)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(hashCode, +)
+ handleEndingBinaryExpression(.)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(|)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(get, int, {, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, i)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(i)
+ handleType(int, null)
+ handleIdentifier(i, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(|)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, j)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(j)
+ handleType(int, null)
+ handleIdentifier(j, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(|)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, k)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(k)
+ handleType(int, null)
+ handleIdentifier(k, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(|)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, l)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(l)
+ handleType(int, null)
+ handleIdentifier(l, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(|)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, m)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(m)
+ handleType(int, null)
+ handleIdentifier(m, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(z)
+ handleType(int, null)
+ beginVariablesDeclaration(z, null, null)
+ handleIdentifier(z, localVariableDeclaration)
+ beginInitializedIdentifier(z)
+ beginVariableInitializer(=)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(|)
+ endVariableInitializer(=)
+ endInitializedIdentifier(z)
+ endVariablesDeclaration(1, ;)
+ beginReturnStatement(return)
+ handleIdentifier(z, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(z, ;)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, n)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(n)
+ handleType(int, null)
+ handleIdentifier(n, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(z)
+ handleType(int, null)
+ beginVariablesDeclaration(z, null, null)
+ handleIdentifier(z, localVariableDeclaration)
+ beginInitializedIdentifier(z)
+ beginVariableInitializer(=)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(|)
+ endVariableInitializer(=)
+ endInitializedIdentifier(z)
+ endVariablesDeclaration(1, ;)
+ beginReturnStatement(return)
+ handleIdentifier(z, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(z, ;)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, o)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(o)
+ handleType(int, null)
+ handleIdentifier(o, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(|)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, p)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(p)
+ handleType(int, null)
+ handleIdentifier(p, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ endBinaryExpression(+)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(|)
+ handleExpressionFunctionBody(=>, ;)
+ endClassMethod(null, int, (, null, ;)
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, q)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(q)
+ handleType(int, null)
+ handleIdentifier(q, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ endBinaryExpression(+)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(|)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, r)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(r)
+ handleType(int, null)
+ handleIdentifier(r, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleLiteralInt(1)
+ beginBinaryExpression(+)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ endBinaryExpression(+)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(+)
+ handleNoArguments(+)
+ handleSend(y, +)
+ beginBinaryExpression(+)
+ handleLiteralInt(3)
+ endBinaryExpression(+)
+ endBinaryExpression(|)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endClassMethod(null, int, (, null, })
+ endMember()
+ beginMetadataStar(s)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, s)
+ handleNoType(})
+ handleIdentifier(s, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(s, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(|)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(y, ))
+ endBinaryExpression(|)
+ endArguments(2, (, ))
+ handleSend(s, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(s, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(|)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(y, ))
+ endBinaryExpression(|)
+ endArguments(2, (, ))
+ handleSend(s, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(2, {, })
+ endClassMethod(null, s, (, null, })
+ endMember()
+ beginMetadataStar(Key)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, Key)
+ handleNoType(})
+ handleIdentifier(Key, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ beginInitializers(:)
+ beginInitializer(foo)
+ handleIdentifier(foo, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(foo, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(|)
+ handleAssignmentExpression(=)
+ endInitializer(,)
+ beginInitializer(bar)
+ handleIdentifier(bar, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(bar, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments({)
+ handleNoArguments({)
+ handleSend(y, {)
+ endBinaryExpression(|)
+ handleAssignmentExpression(=)
+ endInitializer({)
+ endInitializers(2, :, {)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(print, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ beginLiteralString("hello )
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(or)
+ handleNoArguments(or)
+ handleSend(x, or)
+ handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(y, })
+ endBinaryExpression(|)
+ handleInterpolationExpression(${, })
+ handleStringPart(")
+ endLiteralString(1, ))
+ endArguments(1, (, ))
+ handleSend(print, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endClassConstructor(null, Key, (, :, })
+ endMember()
+ beginMetadataStar(Key)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, Key)
+ handleNoType(})
+ handleIdentifier(Key, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ beginInitializers(:)
+ beginInitializer(foo)
+ handleIdentifier(foo, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(foo, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(,)
+ handleNoArguments(,)
+ handleSend(y, ,)
+ endBinaryExpression(|)
+ handleAssignmentExpression(=)
+ endInitializer(,)
+ beginInitializer(bar)
+ handleIdentifier(bar, expression)
+ handleNoTypeArguments(=)
+ handleNoArguments(=)
+ handleSend(bar, =)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments({)
+ handleNoArguments({)
+ handleSend(y, {)
+ endBinaryExpression(|)
+ handleAssignmentExpression(=)
+ endInitializer({)
+ endInitializers(2, :, {)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ handleIdentifier(print, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ beginLiteralString("hello )
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(y, })
+ endBinaryExpression(|)
+ handleInterpolationExpression(${, })
+ handleStringPart(")
+ endLiteralString(1, ))
+ endArguments(1, (, ))
+ handleSend(print, ;)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(1, {, })
+ endClassConstructor(null, Key, (, :, })
+ endMember()
+ beginMetadataStar(not_currently_working)
+ endMetadataStar(0)
+ beginMember()
+ beginMethod(null, null, null, null, null, not_currently_working)
+ handleNoType(})
+ handleIdentifier(not_currently_working, methodDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(x)
+ handleType(int, null)
+ handleIdentifier(x, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(y)
+ handleType(int, null)
+ handleIdentifier(y, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ handleNoInitializers()
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginMetadataStar(x)
+ endMetadataStar(0)
+ handleIdentifier(x, typeReference)
+ handleNoTypeArguments(or)
+ handleType(x, null)
+ beginVariablesDeclaration(or, null, null)
+ handleIdentifier(or, localVariableDeclaration)
+ beginInitializedIdentifier(or)
+ handleNoVariableInitializer(or)
+ endInitializedIdentifier(or)
+ handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], or, or)
+ endVariablesDeclaration(1, ;)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ handleExpressionStatement(;)
+ handleIdentifier(x, expression)
+ handleNoTypeArguments(|)
+ handleNoArguments(|)
+ handleSend(x, |)
+ beginBinaryExpression(|)
+ handleIdentifier(y, expression)
+ handleNoTypeArguments(;)
+ handleNoArguments(;)
+ handleSend(y, ;)
+ endBinaryExpression(|)
+ handleExpressionStatement(;)
+ endBlockFunctionBody(3, {, })
+ endClassMethod(null, not_currently_working, (, null, })
+ endMember()
+ endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+ endClassDeclaration(abstract, })
+ endTopLevelDeclaration()
+endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
new file mode 100644
index 0000000..60507f0
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.intertwined.expect
@@ -0,0 +1,2594 @@
+parseUnit(abstract)
+ skipErrorTokens(abstract)
+ listener: beginCompilationUnit(abstract)
+ syntheticPreviousToken(abstract)
+ parseTopLevelDeclarationImpl(, Instance of 'DirectiveContext')
+ parseMetadataStar()
+ listener: beginMetadataStar(abstract)
+ listener: endMetadataStar(0)
+ parseTopLevelKeywordDeclaration(, class, Instance of 'DirectiveContext')
+ parseClassDeclarationModifiers(, class)
+ parseTopLevelKeywordModifiers(abstract, class)
+ parseClassOrNamedMixinApplication(abstract, class)
+ listener: beginClassOrNamedMixinApplicationPrelude(abstract)
+ ensureIdentifier(class, classOrMixinDeclaration)
+ listener: handleIdentifier(Key, classOrMixinDeclaration)
+ listener: handleNoTypeVariables({)
+ listener: beginClassDeclaration(abstract, abstract, Key)
+ parseClass(Key, abstract, class, Key)
+ parseClassHeaderOpt(Key, abstract, class)
+ parseClassExtendsOpt(Key)
+ listener: handleNoType(Key)
+ listener: handleClassExtends(null, 1)
+ parseWithClauseOpt(Key)
+ listener: handleClassNoWithClause()
+ parseClassOrMixinImplementsOpt(Key)
+ listener: handleClassOrMixinImplements(null, 0)
+ listener: handleClassHeader(abstract, class, null)
+ parseClassOrMixinOrExtensionBody(Key, DeclarationKind.Class, Key)
+ listener: beginClassOrMixinBody(DeclarationKind.Class, {)
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl({, DeclarationKind.Class, Key)
+ parseMetadataStar({)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod({, null, null, null, null, null, null, {, Instance of 'SimpleType', get, a, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, a)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(a, methodDeclaration)
+ parseQualifiedRestOpt(a, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(a, a, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(a)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(a)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(a, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(or)
+ listener: handleSend(hashCode, or)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(hashCode)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, b, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, b)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(b, methodDeclaration)
+ parseQualifiedRestOpt(b, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(b, b, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(b)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(b)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(b, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(|)
+ listener: handleSend(hashCode, |)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(hashCode)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, c, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, c)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(c, methodDeclaration)
+ parseQualifiedRestOpt(c, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(c, c, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(c)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(c)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(c, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(or)
+ listener: handleSend(hashCode, or)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(hashCode)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, d, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, d)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(d, methodDeclaration)
+ parseQualifiedRestOpt(d, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(d, d, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(d)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(d)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(d, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(|)
+ listener: handleSend(hashCode, |)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(;)
+ listener: handleSend(hashCode, ;)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(hashCode)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, e, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, e)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(e, methodDeclaration)
+ parseQualifiedRestOpt(e, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(e, e, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(e)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(e)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(e, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(or)
+ listener: handleSend(hashCode, or)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, f, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, f)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(f, methodDeclaration)
+ parseQualifiedRestOpt(f, methodDeclarationContinuation)
+ listener: handleNoTypeVariables(=>)
+ parseGetterOrFormalParameters(f, f, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters(=>, MemberKind.NonStaticMethod)
+ parseInitializersOpt(f)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(f)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(f, false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(|)
+ listener: handleSend(hashCode, |)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(get, int, =>, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', get, g, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, g)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(g, methodDeclaration)
+ parseQualifiedRestOpt(g, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(g, g, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(g)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(g)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(g, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(or)
+ listener: handleSend(hashCode, or)
+ listener: handleEndingBinaryExpression(.)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ parseArgumentsOpt(hashCode)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', get, h, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, get, h)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(get)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(get, methodDeclaration, false)
+ listener: handleIdentifier(h, methodDeclaration)
+ parseQualifiedRestOpt(h, methodDeclarationContinuation)
+ listener: handleNoTypeVariables({)
+ parseGetterOrFormalParameters(h, h, true, MemberKind.NonStaticMethod)
+ listener: handleNoFormalParameters({, MemberKind.NonStaticMethod)
+ parseInitializersOpt(h)
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt(h)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(h, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(runtimeType, expression)
+ listener: handleNoTypeArguments(.)
+ parseArgumentsOpt(runtimeType)
+ listener: handleNoArguments(.)
+ listener: handleSend(runtimeType, .)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(|)
+ listener: handleSend(hashCode, |)
+ listener: handleEndingBinaryExpression(.)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseLiteralNull(|)
+ listener: handleLiteralNull(null)
+ parsePrimary(., expressionContinuation)
+ parseSendOrFunctionLiteral(., expressionContinuation)
+ parseSend(., expressionContinuation)
+ ensureIdentifier(., expressionContinuation)
+ listener: handleIdentifier(hashCode, expressionContinuation)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(hashCode)
+ listener: handleNoArguments(+)
+ listener: handleSend(hashCode, +)
+ listener: handleEndingBinaryExpression(.)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(get, int, {, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, i, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, i)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(i)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(i, methodDeclaration)
+ parseQualifiedRestOpt(i, methodDeclarationContinuation)
+ parseMethodTypeVar(i)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(i, i, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(i, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(y)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, j, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, j)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(j)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(j, methodDeclaration)
+ parseQualifiedRestOpt(j, methodDeclarationContinuation)
+ parseMethodTypeVar(j)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(j, j, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(j, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseSendOrFunctionLiteral(=>, expression)
+ parseSend(=>, expression)
+ ensureIdentifier(=>, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(y)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, k, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, k)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(k)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(k, methodDeclaration)
+ parseQualifiedRestOpt(k, methodDeclarationContinuation)
+ parseMethodTypeVar(k)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(k, k, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(k, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(y)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, l, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, l)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(l)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(l, methodDeclaration)
+ parseQualifiedRestOpt(l, methodDeclarationContinuation)
+ parseMethodTypeVar(l)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(l, l, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(l, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(y)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, m, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, m)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(m)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(m, methodDeclaration)
+ parseQualifiedRestOpt(m, methodDeclarationContinuation)
+ parseMethodTypeVar(m)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(m, m, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(m, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, int)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(z)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(z)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(z, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(z, localVariableDeclaration)
+ listener: beginInitializedIdentifier(z)
+ parseVariableInitializerOpt(z)
+ listener: beginVariableInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(|)
+ listener: endVariableInitializer(=)
+ listener: endInitializedIdentifier(z)
+ ensureSemicolon(y)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, return)
+ parseStatement(;)
+ parseStatementX(;)
+ parseReturnStatement(;)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(z, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(z)
+ listener: handleNoArguments(;)
+ listener: handleSend(z, ;)
+ ensureSemicolon(z)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, n, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, n)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(n)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(n, methodDeclaration)
+ parseQualifiedRestOpt(n, methodDeclarationContinuation)
+ parseMethodTypeVar(n)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(n, n, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(n, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, int)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(z)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(z)
+ listener: handleType(int, null)
+ listener: beginVariablesDeclaration(z, null, null)
+ parseVariablesDeclarationRest(int, true)
+ parseOptionallyInitializedIdentifier(int)
+ ensureIdentifier(int, localVariableDeclaration)
+ listener: handleIdentifier(z, localVariableDeclaration)
+ listener: beginInitializedIdentifier(z)
+ parseVariableInitializerOpt(z)
+ listener: beginVariableInitializer(=)
+ parseExpression(=)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(|)
+ listener: endVariableInitializer(=)
+ listener: endInitializedIdentifier(z)
+ ensureSemicolon(y)
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, return)
+ parseStatement(;)
+ parseStatementX(;)
+ parseReturnStatement(;)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseSendOrFunctionLiteral(return, expression)
+ parseSend(return, expression)
+ ensureIdentifier(return, expression)
+ listener: handleIdentifier(z, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(z)
+ listener: handleNoArguments(;)
+ listener: handleSend(z, ;)
+ ensureSemicolon(z)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, o, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, o)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(o)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(o, methodDeclaration)
+ parseQualifiedRestOpt(o, methodDeclarationContinuation)
+ parseMethodTypeVar(o)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(o, o, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(o, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, p, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, p)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(p)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(p, methodDeclaration)
+ parseQualifiedRestOpt(p, methodDeclarationContinuation)
+ parseMethodTypeVar(p)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(p, p, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(p, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ parseExpressionFunctionBody(=>, false)
+ parseExpression(=>)
+ parsePrecedenceExpression(=>, 1, true)
+ parseUnaryExpression(=>, true)
+ parsePrimary(=>, expression)
+ parseLiteralInt(=>)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(3)
+ listener: handleExpressionFunctionBody(=>, ;)
+ inGenerator()
+ listener: endClassMethod(null, int, (, null, ;)
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(;, DeclarationKind.Class, Key)
+ parseMetadataStar(;)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(;, null, null, null, null, null, null, ;, Instance of 'SimpleType', null, q, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, q)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(q)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(q, methodDeclaration)
+ parseQualifiedRestOpt(q, methodDeclarationContinuation)
+ parseMethodTypeVar(q)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(q, q, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(q, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ listener: endBinaryExpression(+)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, int)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'SimpleType', null, r, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, r)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(r)
+ listener: handleType(int, null)
+ ensureIdentifierPotentiallyRecovered(int, methodDeclaration, false)
+ listener: handleIdentifier(r, methodDeclaration)
+ parseQualifiedRestOpt(r, methodDeclarationContinuation)
+ parseMethodTypeVar(r)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(r, r, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(r, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true)
+ parseUnaryExpression(return, true)
+ parsePrimary(return, expression)
+ parseLiteralInt(return)
+ listener: handleLiteralInt(1)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseSendOrFunctionLiteral(+, expression)
+ parseSend(+, expression)
+ ensureIdentifier(+, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: endBinaryExpression(+)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(+)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(+)
+ listener: handleSend(y, +)
+ listener: beginBinaryExpression(+)
+ parsePrecedenceExpression(+, 14, true)
+ parseUnaryExpression(+, true)
+ parsePrimary(+, expression)
+ parseLiteralInt(+)
+ listener: handleLiteralInt(3)
+ listener: endBinaryExpression(+)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(3)
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassMethod(null, int, (, null, })
+ listener: endMember()
+ notEofOrValue(}, s)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(s)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, s, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, s)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(s, methodDeclaration)
+ parseQualifiedRestOpt(s, methodDeclarationContinuation)
+ parseMethodTypeVar(s)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(s, s, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(s, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, s)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(s)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(s, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(s)
+ parseArguments(s)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(|)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(y)
+ listener: handleNoArguments())
+ listener: handleSend(y, ))
+ listener: endBinaryExpression(|)
+ listener: endArguments(2, (, ))
+ listener: handleSend(s, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, s)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(s)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ looksLikeFunctionBody(;)
+ parseSend(;, expression)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(s, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(s)
+ parseArguments(s)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseSendOrFunctionLiteral((, expression)
+ parseSend((, expression)
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(|)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(y)
+ listener: handleNoArguments())
+ listener: handleSend(y, ))
+ listener: endBinaryExpression(|)
+ listener: endArguments(2, (, ))
+ listener: handleSend(s, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(2, {, })
+ listener: endClassMethod(null, s, (, null, })
+ listener: endMember()
+ notEofOrValue(}, Key)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(Key)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, Key)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(Key, methodDeclaration)
+ parseQualifiedRestOpt(Key, methodDeclarationContinuation)
+ parseMethodTypeVar(Key)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(Key, Key, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(Key, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ parseInitializers(:)
+ listener: beginInitializers(:)
+ parseInitializer(:)
+ listener: beginInitializer(foo)
+ parseInitializerExpressionRest(:)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true)
+ parseUnaryExpression(:, true)
+ parsePrimary(:, expression)
+ parseSendOrFunctionLiteral(:, expression)
+ parseSend(:, expression)
+ ensureIdentifier(:, expression)
+ listener: handleIdentifier(foo, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(foo)
+ listener: handleNoArguments(=)
+ listener: handleSend(foo, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(|)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer(,)
+ parseInitializer(,)
+ listener: beginInitializer(bar)
+ parseInitializerExpressionRest(,)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(bar, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(bar)
+ listener: handleNoArguments(=)
+ listener: handleSend(bar, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments({)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments({)
+ listener: handleSend(y, {)
+ listener: endBinaryExpression(|)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer({)
+ listener: endInitializers(2, :, {)
+ parseAsyncModifierOpt(y)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(y, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, print)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(print)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(print, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(print)
+ parseArguments(print)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseLiteralString(()
+ parseSingleLiteralString(()
+ listener: beginLiteralString("hello )
+ parseExpression(${)
+ parsePrecedenceExpression(${, 1, true)
+ parseUnaryExpression(${, true)
+ parsePrimary(${, expression)
+ parseSendOrFunctionLiteral(${, expression)
+ parseSend(${, expression)
+ ensureIdentifier(${, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(or)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(or)
+ listener: handleSend(x, or)
+ rewriter()
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ parseArgumentsOpt(y)
+ reportRecoverableError(or, Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}])
+ listener: handleRecoverableError(Message[BinaryOperatorWrittenOut, Binary operator 'or' is written as '|' instead of the written out word., Try replacing 'or' with '|'., {string: or, string2: |}], or, or)
+ rewriter()
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(})
+ listener: handleSend(y, })
+ listener: endBinaryExpression(|)
+ listener: handleInterpolationExpression(${, })
+ parseStringPart(})
+ listener: handleStringPart(")
+ listener: endLiteralString(1, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(print, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassConstructor(null, Key, (, :, })
+ listener: endMember()
+ notEofOrValue(}, Key)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(Key)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, Key, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, Key)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(Key, methodDeclaration)
+ parseQualifiedRestOpt(Key, methodDeclarationContinuation)
+ parseMethodTypeVar(Key)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(Key, Key, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(Key, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ parseInitializers(:)
+ listener: beginInitializers(:)
+ parseInitializer(:)
+ listener: beginInitializer(foo)
+ parseInitializerExpressionRest(:)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true)
+ parseUnaryExpression(:, true)
+ parsePrimary(:, expression)
+ parseSendOrFunctionLiteral(:, expression)
+ parseSend(:, expression)
+ ensureIdentifier(:, expression)
+ listener: handleIdentifier(foo, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(foo)
+ listener: handleNoArguments(=)
+ listener: handleSend(foo, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(,)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(,)
+ listener: handleSend(y, ,)
+ listener: endBinaryExpression(|)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer(,)
+ parseInitializer(,)
+ listener: beginInitializer(bar)
+ parseInitializerExpressionRest(,)
+ parseExpression(,)
+ parsePrecedenceExpression(,, 1, true)
+ parseUnaryExpression(,, true)
+ parsePrimary(,, expression)
+ parseSendOrFunctionLiteral(,, expression)
+ parseSend(,, expression)
+ ensureIdentifier(,, expression)
+ listener: handleIdentifier(bar, expression)
+ listener: handleNoTypeArguments(=)
+ parseArgumentsOpt(bar)
+ listener: handleNoArguments(=)
+ listener: handleSend(bar, =)
+ parsePrecedenceExpression(=, 1, true)
+ parseUnaryExpression(=, true)
+ parsePrimary(=, expression)
+ parseSendOrFunctionLiteral(=, expression)
+ parseSend(=, expression)
+ ensureIdentifier(=, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments({)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments({)
+ listener: handleSend(y, {)
+ listener: endBinaryExpression(|)
+ listener: handleAssignmentExpression(=)
+ listener: endInitializer({)
+ listener: endInitializers(2, :, {)
+ parseAsyncModifierOpt(y)
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(y, false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, print)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(print)
+ parseExpressionStatement({)
+ parseExpression({)
+ parsePrecedenceExpression({, 1, true)
+ parseUnaryExpression({, true)
+ parsePrimary({, expression)
+ parseSendOrFunctionLiteral({, expression)
+ looksLikeFunctionBody(;)
+ parseSend({, expression)
+ ensureIdentifier({, expression)
+ listener: handleIdentifier(print, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(print)
+ parseArguments(print)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true)
+ parseUnaryExpression((, true)
+ parsePrimary((, expression)
+ parseLiteralString(()
+ parseSingleLiteralString(()
+ listener: beginLiteralString("hello )
+ parseExpression(${)
+ parsePrecedenceExpression(${, 1, true)
+ parseUnaryExpression(${, true)
+ parsePrimary(${, expression)
+ parseSendOrFunctionLiteral(${, expression)
+ parseSend(${, expression)
+ ensureIdentifier(${, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(})
+ listener: handleSend(y, })
+ listener: endBinaryExpression(|)
+ listener: handleInterpolationExpression(${, })
+ parseStringPart(})
+ listener: handleStringPart(")
+ listener: endLiteralString(1, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(print, ;)
+ ensureSemicolon())
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endClassConstructor(null, Key, (, :, })
+ listener: endMember()
+ notEofOrValue(}, not_currently_working)
+ parseClassOrMixinOrExtensionMemberImpl(}, DeclarationKind.Class, Key)
+ parseMetadataStar(})
+ listener: beginMetadataStar(not_currently_working)
+ listener: endMetadataStar(0)
+ listener: beginMember()
+ isReservedKeyword(()
+ parseMethod(}, null, null, null, null, null, null, }, Instance of 'NoType', null, not_currently_working, DeclarationKind.Class, Key, false)
+ listener: beginMethod(null, null, null, null, null, not_currently_working)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, methodDeclaration, false)
+ listener: handleIdentifier(not_currently_working, methodDeclaration)
+ parseQualifiedRestOpt(not_currently_working, methodDeclarationContinuation)
+ parseMethodTypeVar(not_currently_working)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(not_currently_working, not_currently_working, false, MemberKind.NonStaticMethod)
+ parseFormalParameters(not_currently_working, MemberKind.NonStaticMethod)
+ parseFormalParametersRest((, MemberKind.NonStaticMethod)
+ listener: beginFormalParameters((, MemberKind.NonStaticMethod)
+ parseFormalParameter((, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(x)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(x, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, x, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseFormalParameter(,, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.NonStaticMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(y)
+ listener: handleType(int, null)
+ ensureIdentifier(int, formalParameterDeclaration)
+ listener: handleIdentifier(y, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, y, null, null, FormalParameterKind.mandatory, MemberKind.NonStaticMethod)
+ listener: endFormalParameters(2, (, ), MemberKind.NonStaticMethod)
+ parseInitializersOpt())
+ listener: handleNoInitializers()
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ inPlainSync()
+ parseFunctionBody(), false, true)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, x)
+ parseStatement({)
+ parseStatementX({)
+ parseExpressionStatementOrDeclarationAfterModifiers({, {, null, null, null, false)
+ looksLikeLocalFunction(or)
+ listener: beginMetadataStar(x)
+ listener: endMetadataStar(0)
+ listener: handleIdentifier(x, typeReference)
+ listener: handleNoTypeArguments(or)
+ listener: handleType(x, null)
+ listener: beginVariablesDeclaration(or, null, null)
+ parseVariablesDeclarationRest(x, true)
+ parseOptionallyInitializedIdentifier(x)
+ ensureIdentifier(x, localVariableDeclaration)
+ listener: handleIdentifier(or, localVariableDeclaration)
+ listener: beginInitializedIdentifier(or)
+ parseVariableInitializerOpt(or)
+ listener: handleNoVariableInitializer(or)
+ listener: endInitializedIdentifier(or)
+ ensureSemicolon(or)
+ reportRecoverableError(or, Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}])
+ listener: handleRecoverableError(Message[ExpectedAfterButGot, Expected ';' after this., null, {string: ;}], or, or)
+ rewriter()
+ listener: endVariablesDeclaration(1, ;)
+ notEofOrValue(}, y)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(y)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ ensureSemicolon(y)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, x)
+ parseStatement(;)
+ parseStatementX(;)
+ parseExpressionStatementOrDeclarationAfterModifiers(;, ;, null, null, null, false)
+ looksLikeLocalFunction(x)
+ parseExpressionStatement(;)
+ parseExpression(;)
+ parsePrecedenceExpression(;, 1, true)
+ parseUnaryExpression(;, true)
+ parsePrimary(;, expression)
+ parseSendOrFunctionLiteral(;, expression)
+ parseSend(;, expression)
+ ensureIdentifier(;, expression)
+ listener: handleIdentifier(x, expression)
+ listener: handleNoTypeArguments(|)
+ parseArgumentsOpt(x)
+ listener: handleNoArguments(|)
+ listener: handleSend(x, |)
+ listener: beginBinaryExpression(|)
+ parsePrecedenceExpression(|, 10, true)
+ parseUnaryExpression(|, true)
+ parsePrimary(|, expression)
+ parseSendOrFunctionLiteral(|, expression)
+ parseSend(|, expression)
+ ensureIdentifier(|, expression)
+ listener: handleIdentifier(y, expression)
+ listener: handleNoTypeArguments(;)
+ parseArgumentsOpt(y)
+ listener: handleNoArguments(;)
+ listener: handleSend(y, ;)
+ listener: endBinaryExpression(|)
+ ensureSemicolon(y)
+ listener: handleExpressionStatement(;)
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(3, {, })
+ listener: endClassMethod(null, not_currently_working, (, null, })
+ listener: endMember()
+ notEofOrValue(}, })
+ listener: endClassOrMixinBody(DeclarationKind.Class, 22, {, })
+ listener: endClassDeclaration(abstract, })
+ listener: endTopLevelDeclaration()
+ reportAllErrorTokens(abstract)
+ listener: endCompilationUnit(1, )
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.parser.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.parser.expect
new file mode 100644
index 0000000..e4a44c2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.parser.expect
@@ -0,0 +1,87 @@
+NOTICE: Stream was rewritten by parser!
+
+abstract class Key {
+int get a => runtimeType.hashCode | null.hashCode;
+int get b => runtimeType.hashCode | null.hashCode;
+int get c { return runtimeType.hashCode | null.hashCode; }
+int get d { return runtimeType.hashCode | null.hashCode; }
+
+int get e => 1 + runtimeType.hashCode | null.hashCode + 3;
+int get f => 1 + runtimeType.hashCode | null.hashCode + 3;
+int get g { return 1 + runtimeType.hashCode | null.hashCode + 3; }
+int get h { return 1 + runtimeType.hashCode | null.hashCode + 3; }
+
+int i(int x, int y) => x | y;
+int j(int x, int y) => x | y;
+int k(int x, int y) { return x | y; }
+int l(int x, int y) { return x | y; }
+int m(int x, int y) { int z = x | y; return z; }
+int n(int x, int y) { int z = x | y; return z; }
+
+int o(int x, int y) => 1 + x | y + 3;
+int p(int x, int y) => 1 + x | y + 3;
+int q(int x, int y) { return 1 + x | y + 3; }
+int r(int x, int y) { return 1 + x | y + 3; }
+
+s(int x, int y) {
+s(x | y, x | y);
+s(x | y, x | y);
+}
+
+Key(int x, int y) : foo = x | y, bar = x | y {
+print("hello ${x | y}");
+}
+
+Key(int x, int y) : foo = x | y, bar = x | y {
+print("hello ${x | y}");
+}
+
+not_currently_working(int x, int y) {
+x or ;y;
+x | y;
+}
+}
+
+
+abstract[KeywordToken] class[KeywordToken] Key[StringToken] {[BeginToken]
+int[StringToken] get[KeywordToken] a[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] b[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] c[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] d[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] get[KeywordToken] e[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] f[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] g[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[ReplacementToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] h[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] i[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] |[ReplacementToken] y[StringToken];[SimpleToken]
+int[StringToken] j[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken];[SimpleToken]
+int[StringToken] k[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] |[ReplacementToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] l[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] |[SimpleToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] m[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] |[ReplacementToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] n[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] o[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] |[ReplacementToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] p[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] q[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] |[ReplacementToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] r[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+s[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+s[StringToken]([BeginToken]x[StringToken] |[ReplacementToken] y[StringToken],[SimpleToken] x[StringToken] |[ReplacementToken] y[StringToken])[SimpleToken];[SimpleToken]
+s[StringToken]([BeginToken]x[StringToken] |[SimpleToken] y[StringToken],[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] |[ReplacementToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] |[ReplacementToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] |[ReplacementToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] |[SimpleToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+not_currently_working[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+x[StringToken] or[StringToken] ;[SyntheticToken]y[StringToken];[SimpleToken]
+x[StringToken] |[SimpleToken] y[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.scanner.expect b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.scanner.expect
new file mode 100644
index 0000000..ac05112
--- /dev/null
+++ b/pkg/front_end/parser_testcases/error_recovery/issue_26810_or.dart.scanner.expect
@@ -0,0 +1,85 @@
+abstract class Key {
+int get a => runtimeType.hashCode or null.hashCode;
+int get b => runtimeType.hashCode | null.hashCode;
+int get c { return runtimeType.hashCode or null.hashCode; }
+int get d { return runtimeType.hashCode | null.hashCode; }
+
+int get e => 1 + runtimeType.hashCode or null.hashCode + 3;
+int get f => 1 + runtimeType.hashCode | null.hashCode + 3;
+int get g { return 1 + runtimeType.hashCode or null.hashCode + 3; }
+int get h { return 1 + runtimeType.hashCode | null.hashCode + 3; }
+
+int i(int x, int y) => x or y;
+int j(int x, int y) => x | y;
+int k(int x, int y) { return x or y; }
+int l(int x, int y) { return x | y; }
+int m(int x, int y) { int z = x or y; return z; }
+int n(int x, int y) { int z = x | y; return z; }
+
+int o(int x, int y) => 1 + x or y + 3;
+int p(int x, int y) => 1 + x | y + 3;
+int q(int x, int y) { return 1 + x or y + 3; }
+int r(int x, int y) { return 1 + x | y + 3; }
+
+s(int x, int y) {
+s(x or y, x or y);
+s(x | y, x | y);
+}
+
+Key(int x, int y) : foo = x or y, bar = x or y {
+print("hello ${x or y}");
+}
+
+Key(int x, int y) : foo = x | y, bar = x | y {
+print("hello ${x | y}");
+}
+
+not_currently_working(int x, int y) {
+x or y;
+x | y;
+}
+}
+
+
+abstract[KeywordToken] class[KeywordToken] Key[StringToken] {[BeginToken]
+int[StringToken] get[KeywordToken] a[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] or[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] b[StringToken] =>[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] c[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] or[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] d[StringToken] {[BeginToken] return[KeywordToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] get[KeywordToken] e[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] or[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] f[StringToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] get[KeywordToken] g[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] or[StringToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] get[KeywordToken] h[StringToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] runtimeType[StringToken].[SimpleToken]hashCode[StringToken] |[SimpleToken] null[KeywordToken].[SimpleToken]hashCode[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] i[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] or[StringToken] y[StringToken];[SimpleToken]
+int[StringToken] j[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken];[SimpleToken]
+int[StringToken] k[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] or[StringToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] l[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] x[StringToken] |[SimpleToken] y[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] m[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] or[StringToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] n[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] int[StringToken] z[StringToken] =[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken];[SimpleToken] return[KeywordToken] z[StringToken];[SimpleToken] }[SimpleToken]
+
+int[StringToken] o[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] or[StringToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] p[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] =>[SimpleToken] 1[StringToken] +[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken]
+int[StringToken] q[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] or[StringToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+int[StringToken] r[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken] return[KeywordToken] 1[StringToken] +[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken] +[SimpleToken] 3[StringToken];[SimpleToken] }[SimpleToken]
+
+s[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+s[StringToken]([BeginToken]x[StringToken] or[StringToken] y[StringToken],[SimpleToken] x[StringToken] or[StringToken] y[StringToken])[SimpleToken];[SimpleToken]
+s[StringToken]([BeginToken]x[StringToken] |[SimpleToken] y[StringToken],[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] or[StringToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] or[StringToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] or[StringToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+Key[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] :[SimpleToken] foo[StringToken] =[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken],[SimpleToken] bar[StringToken] =[SimpleToken] x[StringToken] |[SimpleToken] y[StringToken] {[BeginToken]
+print[StringToken]([BeginToken]"hello [StringToken]${[BeginToken]x[StringToken] |[SimpleToken] y[StringToken]}[SimpleToken]"[StringToken])[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+not_currently_working[StringToken]([BeginToken]int[StringToken] x[StringToken],[SimpleToken] int[StringToken] y[StringToken])[SimpleToken] {[BeginToken]
+x[StringToken] or[StringToken] y[StringToken];[SimpleToken]
+x[StringToken] |[SimpleToken] y[StringToken];[SimpleToken]
+}[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart b/pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart
index a3abfd1..c1dae7d 100644
--- a/pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart
+++ b/pkg/front_end/test/fasta/parser/token_stream_rewriter_test.dart
@@ -5,7 +5,8 @@
import 'package:_fe_analyzer_shared/src/parser/token_stream_rewriter.dart';
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart'
show ScannerResult, scanString;
-import 'package:_fe_analyzer_shared/src/scanner/token.dart' show Token;
+import 'package:_fe_analyzer_shared/src/scanner/token.dart'
+ show ReplacementToken, Token, TokenType;
import 'package:_fe_analyzer_shared/src/scanner/token_impl.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -129,6 +130,46 @@
expect(b.next, same(c));
}
+ void test_replaceNextTokenWithSyntheticToken_1() {
+ var a = _makeToken(0, 'a');
+ var b = _makeToken(5, 'b');
+ b.precedingComments = new CommentToken.fromSubstring(
+ TokenType.SINGLE_LINE_COMMENT, "Test comment", 1, 9, 1,
+ canonicalize: true);
+ var c = _makeToken(10, 'c');
+ _link([a, b, c]);
+
+ var rewriter = new TokenStreamRewriterImpl();
+ ReplacementToken replacement =
+ rewriter.replaceNextTokenWithSyntheticToken(a, TokenType.AMPERSAND);
+ expect(b.offset, same(replacement.offset));
+ expect(b.precedingComments, same(replacement.precedingComments));
+ expect(replacement.replacedToken, same(b));
+
+ expect(a.next, same(replacement));
+ expect(replacement.next, same(c));
+ expect(c.next.isEof, true);
+ }
+
+ void test_replaceNextTokenWithSyntheticToken_2() {
+ var a = _makeToken(0, 'a');
+ var b = _makeToken(5, 'b');
+ b.precedingComments = new CommentToken.fromSubstring(
+ TokenType.SINGLE_LINE_COMMENT, "Test comment", 1, 9, 1,
+ canonicalize: true);
+ _link([a, b]);
+
+ var rewriter = new TokenStreamRewriterImpl();
+ ReplacementToken replacement =
+ rewriter.replaceNextTokenWithSyntheticToken(a, TokenType.AMPERSAND);
+ expect(b.offset, same(replacement.offset));
+ expect(b.precedingComments, same(replacement.precedingComments));
+ expect(replacement.replacedToken, same(b));
+
+ expect(a.next, same(replacement));
+ expect(replacement.next.isEof, true);
+ }
+
void test_moveSynthetic() {
ScannerResult scanResult = scanString('Foo(bar; baz=0;');
expect(scanResult.hasErrors, isTrue);
diff --git a/pkg/front_end/test/parser_suite.dart b/pkg/front_end/test/parser_suite.dart
index 5e65244..632e9ee 100644
--- a/pkg/front_end/test/parser_suite.dart
+++ b/pkg/front_end/test/parser_suite.dart
@@ -406,14 +406,18 @@
void doPrint(String s) {
super.doPrint(s);
- if (s.startsWith("beginCompilationUnit(") ||
- s.startsWith("endCompilationUnit(")) {
- if (indent != 0) {
- throw "Incorrect indents: '$s' (indent = $indent).\n\n${sb.toString()}";
- }
- } else {
- if (indent <= 0) {
- throw "Incorrect indents: '$s' (indent = $indent).\n\n${sb.toString()}";
+ if (!annotateLines) {
+ if (s.startsWith("beginCompilationUnit(") ||
+ s.startsWith("endCompilationUnit(")) {
+ if (indent != 0) {
+ throw "Incorrect indents: '$s' (indent = $indent).\n\n"
+ "${sb.toString()}";
+ }
+ } else {
+ if (indent <= 0) {
+ throw "Incorrect indents: '$s' (indent = $indent).\n\n"
+ "${sb.toString()}";
+ }
}
}
}
diff --git a/pkg/front_end/test/spell_checking_list_code.txt b/pkg/front_end/test/spell_checking_list_code.txt
index a0e7fca..6b94883 100644
--- a/pkg/front_end/test/spell_checking_list_code.txt
+++ b/pkg/front_end/test/spell_checking_list_code.txt
@@ -564,12 +564,15 @@
jumps
juxtaposition
juxtapositions
+jvm
k
kallentu
kernel's
kernel2kernel
klass
kmillikin
+kotlin
+kotlinlang
kustermann
kv
k’s
@@ -884,6 +887,7 @@
redefine
redirectee
redirector
+redo
reexports
ref
reflect
@@ -971,7 +975,9 @@
shas
shelf
shifts
+shl
showing
+shr
shrinking
shru
si
@@ -1026,6 +1032,7 @@
stderr
stdin
stdio
+stdlib
stdout
stmt
str
@@ -1196,6 +1203,7 @@
unsortable
unwrapper
unwraps
+unwritten
unzip
upcast
update2018
@@ -1215,6 +1223,7 @@
variances
variant
variants
+variation
vary
vb
vector
@@ -1238,6 +1247,7 @@
wc
weakened
weakener
+weed
weird
weren't
werror
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart
new file mode 100644
index 0000000..ed07e7e
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart
@@ -0,0 +1,45 @@
+// Copyright (c) 2020, 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.
+
+abstract class Key {
+ int get a => runtimeType.hashCode xor null.hashCode;
+ int get b => runtimeType.hashCode ^ null.hashCode;
+ int get c { return runtimeType.hashCode xor null.hashCode; }
+ int get d { return runtimeType.hashCode ^ null.hashCode; }
+
+ int get e => 1 + runtimeType.hashCode xor null.hashCode + 3;
+ int get f => 1 + runtimeType.hashCode ^ null.hashCode + 3;
+ int get g { return 1 + runtimeType.hashCode xor null.hashCode + 3; }
+ int get h { return 1 + runtimeType.hashCode ^ null.hashCode + 3; }
+
+ int i(int x, int y) => x xor y;
+ int j(int x, int y) => x ^ y;
+ int k(int x, int y) { return x xor y; }
+ int l(int x, int y) { return x ^ y; }
+ int m(int x, int y) { int z = x xor y; return z; }
+ int n(int x, int y) { int z = x ^ y; return z; }
+
+ int o(int x, int y) => 1 + x xor y + 3;
+ int p(int x, int y) => 1 + x ^ y + 3;
+ int q(int x, int y) { return 1 + x xor y + 3; }
+ int r(int x, int y) { return 1 + x ^ y + 3; }
+
+ s(int x, int y) {
+ s(x xor y, x xor y);
+ s(x ^ y, x ^ y);
+ }
+
+ int foo;
+ int bar;
+
+ Key(int x, int y) : foo = x xor y, bar = x xor y {
+ print("hello ${x xor y}");
+ }
+
+ Key.NotDuplicate(int x, int y) : foo = x ^ y, bar = x ^ y {
+ print("hello ${x ^ y}");
+ }
+}
+
+main() {}
\ No newline at end of file
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.outline.expect b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.outline.expect
new file mode 100644
index 0000000..3e4746b
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.outline.expect
@@ -0,0 +1,95 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:6:37: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get a => runtimeType.hashCode xor null.hashCode;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:11:41: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get e => 1 + runtimeType.hashCode xor null.hashCode + 3;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:16:28: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int i(int x, int y) => x xor y;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:23:32: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int o(int x, int y) => 1 + x xor y + 3;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:36:31: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// Key(int x, int y) : foo = x xor y, bar = x xor y {
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:36:46: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// Key(int x, int y) : foo = x xor y, bar = x xor y {
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+abstract class Key extends core::Object {
+ field core::int* foo;
+ field core::int* bar;
+ constructor •(core::int* x, core::int* y) → self::Key*
+ ;
+ constructor NotDuplicate(core::int* x, core::int* y) → self::Key*
+ ;
+ get a() → core::int*
+ ;
+ get b() → core::int*
+ ;
+ get c() → core::int*
+ ;
+ get d() → core::int*
+ ;
+ get e() → core::int*
+ ;
+ get f() → core::int*
+ ;
+ get g() → core::int*
+ ;
+ get h() → core::int*
+ ;
+ method i(core::int* x, core::int* y) → core::int*
+ ;
+ method j(core::int* x, core::int* y) → core::int*
+ ;
+ method k(core::int* x, core::int* y) → core::int*
+ ;
+ method l(core::int* x, core::int* y) → core::int*
+ ;
+ method m(core::int* x, core::int* y) → core::int*
+ ;
+ method n(core::int* x, core::int* y) → core::int*
+ ;
+ method o(core::int* x, core::int* y) → core::int*
+ ;
+ method p(core::int* x, core::int* y) → core::int*
+ ;
+ method q(core::int* x, core::int* y) → core::int*
+ ;
+ method r(core::int* x, core::int* y) → core::int*
+ ;
+ method s(core::int* x, core::int* y) → dynamic
+ ;
+ abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+ abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+ abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+ abstract member-signature method toString() → core::String*; -> core::Object::toString
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+ abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static method main() → dynamic
+ ;
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.strong.expect b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.strong.expect
new file mode 100644
index 0000000..13cf674
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.strong.expect
@@ -0,0 +1,152 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:6:37: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get a => runtimeType.hashCode xor null.hashCode;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:11:41: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get e => 1 + runtimeType.hashCode xor null.hashCode + 3;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:16:28: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int i(int x, int y) => x xor y;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:23:32: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int o(int x, int y) => 1 + x xor y + 3;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:36:31: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// Key(int x, int y) : foo = x xor y, bar = x xor y {
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:36:46: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// Key(int x, int y) : foo = x xor y, bar = x xor y {
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:8:43: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get c { return runtimeType.hashCode xor null.hashCode; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:13:47: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get g { return 1 + runtimeType.hashCode xor null.hashCode + 3; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:18:34: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int k(int x, int y) { return x xor y; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:20:36: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int m(int x, int y) { int z = x xor y; return z; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:25:38: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int q(int x, int y) { return 1 + x xor y + 3; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:29:9: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// s(x xor y, x xor y);
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:29:18: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// s(x xor y, x xor y);
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:37:22: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// print("hello ${x xor y}");
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+abstract class Key extends core::Object {
+ field core::int* foo;
+ field core::int* bar;
+ constructor •(core::int* x, core::int* y) → self::Key*
+ : self::Key::foo = x.{core::int::^}(y), self::Key::bar = x.{core::int::^}(y), super core::Object::•() {
+ core::print("hello ${x.{core::int::^}(y)}");
+ }
+ constructor NotDuplicate(core::int* x, core::int* y) → self::Key*
+ : self::Key::foo = x.{core::int::^}(y), self::Key::bar = x.{core::int::^}(y), super core::Object::•() {
+ core::print("hello ${x.{core::int::^}(y)}");
+ }
+ get a() → core::int*
+ return this.{self::Key::runtimeType}.{core::Object::hashCode}.{core::int::^}(null.{core::Null::hashCode});
+ get b() → core::int*
+ return this.{self::Key::runtimeType}.{core::Object::hashCode}.{core::int::^}(null.{core::Null::hashCode});
+ get c() → core::int* {
+ return this.{self::Key::runtimeType}.{core::Object::hashCode}.{core::int::^}(null.{core::Null::hashCode});
+ }
+ get d() → core::int* {
+ return this.{self::Key::runtimeType}.{core::Object::hashCode}.{core::int::^}(null.{core::Null::hashCode});
+ }
+ get e() → core::int*
+ return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Object::hashCode}).{core::int::^}(null.{core::Null::hashCode}.{core::num::+}(3));
+ get f() → core::int*
+ return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Object::hashCode}).{core::int::^}(null.{core::Null::hashCode}.{core::num::+}(3));
+ get g() → core::int* {
+ return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Object::hashCode}).{core::int::^}(null.{core::Null::hashCode}.{core::num::+}(3));
+ }
+ get h() → core::int* {
+ return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Object::hashCode}).{core::int::^}(null.{core::Null::hashCode}.{core::num::+}(3));
+ }
+ method i(core::int* x, core::int* y) → core::int*
+ return x.{core::int::^}(y);
+ method j(core::int* x, core::int* y) → core::int*
+ return x.{core::int::^}(y);
+ method k(core::int* x, core::int* y) → core::int* {
+ return x.{core::int::^}(y);
+ }
+ method l(core::int* x, core::int* y) → core::int* {
+ return x.{core::int::^}(y);
+ }
+ method m(core::int* x, core::int* y) → core::int* {
+ core::int* z = x.{core::int::^}(y);
+ return z;
+ }
+ method n(core::int* x, core::int* y) → core::int* {
+ core::int* z = x.{core::int::^}(y);
+ return z;
+ }
+ method o(core::int* x, core::int* y) → core::int*
+ return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
+ method p(core::int* x, core::int* y) → core::int*
+ return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
+ method q(core::int* x, core::int* y) → core::int* {
+ return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
+ }
+ method r(core::int* x, core::int* y) → core::int* {
+ return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
+ }
+ method s(core::int* x, core::int* y) → dynamic {
+ this.{self::Key::s}(x.{core::int::^}(y), x.{core::int::^}(y));
+ this.{self::Key::s}(x.{core::int::^}(y), x.{core::int::^}(y));
+ }
+ abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+ abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+ abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+ abstract member-signature method toString() → core::String*; -> core::Object::toString
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+ abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.strong.transformed.expect b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.strong.transformed.expect
new file mode 100644
index 0000000..13cf674
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.strong.transformed.expect
@@ -0,0 +1,152 @@
+library;
+//
+// Problems in library:
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:6:37: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get a => runtimeType.hashCode xor null.hashCode;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:11:41: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get e => 1 + runtimeType.hashCode xor null.hashCode + 3;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:16:28: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int i(int x, int y) => x xor y;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:23:32: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int o(int x, int y) => 1 + x xor y + 3;
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:36:31: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// Key(int x, int y) : foo = x xor y, bar = x xor y {
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:36:46: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// Key(int x, int y) : foo = x xor y, bar = x xor y {
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:8:43: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get c { return runtimeType.hashCode xor null.hashCode; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:13:47: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int get g { return 1 + runtimeType.hashCode xor null.hashCode + 3; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:18:34: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int k(int x, int y) { return x xor y; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:20:36: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int m(int x, int y) { int z = x xor y; return z; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:25:38: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// int q(int x, int y) { return 1 + x xor y + 3; }
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:29:9: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// s(x xor y, x xor y);
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:29:18: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// s(x xor y, x xor y);
+// ^^^
+//
+// pkg/front_end/testcases/general/error_recovery/issue_26810.dart:37:22: Error: Binary operator 'xor' is written as '^' instead of the written out word.
+// Try replacing 'xor' with '^'.
+// print("hello ${x xor y}");
+// ^^^
+//
+import self as self;
+import "dart:core" as core;
+
+abstract class Key extends core::Object {
+ field core::int* foo;
+ field core::int* bar;
+ constructor •(core::int* x, core::int* y) → self::Key*
+ : self::Key::foo = x.{core::int::^}(y), self::Key::bar = x.{core::int::^}(y), super core::Object::•() {
+ core::print("hello ${x.{core::int::^}(y)}");
+ }
+ constructor NotDuplicate(core::int* x, core::int* y) → self::Key*
+ : self::Key::foo = x.{core::int::^}(y), self::Key::bar = x.{core::int::^}(y), super core::Object::•() {
+ core::print("hello ${x.{core::int::^}(y)}");
+ }
+ get a() → core::int*
+ return this.{self::Key::runtimeType}.{core::Object::hashCode}.{core::int::^}(null.{core::Null::hashCode});
+ get b() → core::int*
+ return this.{self::Key::runtimeType}.{core::Object::hashCode}.{core::int::^}(null.{core::Null::hashCode});
+ get c() → core::int* {
+ return this.{self::Key::runtimeType}.{core::Object::hashCode}.{core::int::^}(null.{core::Null::hashCode});
+ }
+ get d() → core::int* {
+ return this.{self::Key::runtimeType}.{core::Object::hashCode}.{core::int::^}(null.{core::Null::hashCode});
+ }
+ get e() → core::int*
+ return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Object::hashCode}).{core::int::^}(null.{core::Null::hashCode}.{core::num::+}(3));
+ get f() → core::int*
+ return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Object::hashCode}).{core::int::^}(null.{core::Null::hashCode}.{core::num::+}(3));
+ get g() → core::int* {
+ return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Object::hashCode}).{core::int::^}(null.{core::Null::hashCode}.{core::num::+}(3));
+ }
+ get h() → core::int* {
+ return 1.{core::num::+}(this.{self::Key::runtimeType}.{core::Object::hashCode}).{core::int::^}(null.{core::Null::hashCode}.{core::num::+}(3));
+ }
+ method i(core::int* x, core::int* y) → core::int*
+ return x.{core::int::^}(y);
+ method j(core::int* x, core::int* y) → core::int*
+ return x.{core::int::^}(y);
+ method k(core::int* x, core::int* y) → core::int* {
+ return x.{core::int::^}(y);
+ }
+ method l(core::int* x, core::int* y) → core::int* {
+ return x.{core::int::^}(y);
+ }
+ method m(core::int* x, core::int* y) → core::int* {
+ core::int* z = x.{core::int::^}(y);
+ return z;
+ }
+ method n(core::int* x, core::int* y) → core::int* {
+ core::int* z = x.{core::int::^}(y);
+ return z;
+ }
+ method o(core::int* x, core::int* y) → core::int*
+ return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
+ method p(core::int* x, core::int* y) → core::int*
+ return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
+ method q(core::int* x, core::int* y) → core::int* {
+ return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
+ }
+ method r(core::int* x, core::int* y) → core::int* {
+ return 1.{core::num::+}(x).{core::int::^}(y.{core::num::+}(3));
+ }
+ method s(core::int* x, core::int* y) → dynamic {
+ this.{self::Key::s}(x.{core::int::^}(y), x.{core::int::^}(y));
+ this.{self::Key::s}(x.{core::int::^}(y), x.{core::int::^}(y));
+ }
+ abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
+ abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
+ abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
+ abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue
+ abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse
+ abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::==
+ abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode
+ abstract member-signature method toString() → core::String*; -> core::Object::toString
+ abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
+ abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.textual_outline.expect b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.textual_outline.expect
new file mode 100644
index 0000000..7cc788c
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.textual_outline.expect
@@ -0,0 +1,31 @@
+abstract class Key {
+ int get a => runtimeType.hashCode ^ null.hashCode;
+ int get b => runtimeType.hashCode ^ null.hashCode;
+ int get c {}
+ int get d {}
+ int get e => 1 + runtimeType.hashCode ^ null.hashCode + 3;
+ int get f => 1 + runtimeType.hashCode ^ null.hashCode + 3;
+ int get g {}
+ int get h {}
+ int i(int x, int y) => x ^ y;
+ int j(int x, int y) => x ^ y;
+ int k(int x, int y) {}
+ int l(int x, int y) {}
+ int m(int x, int y) {}
+ int n(int x, int y) {}
+ int o(int x, int y) => 1 + x ^ y + 3;
+ int p(int x, int y) => 1 + x ^ y + 3;
+ int q(int x, int y) {}
+ int r(int x, int y) {}
+ s(int x, int y) {}
+ int foo;
+ int bar;
+ Key(int x, int y)
+ : foo = x ^ y,
+ bar = x ^ y {}
+ Key.NotDuplicate(int x, int y)
+ : foo = x ^ y,
+ bar = x ^ y {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.textual_outline_modelled.expect
new file mode 100644
index 0000000..25de27c7
--- /dev/null
+++ b/pkg/front_end/testcases/general/error_recovery/issue_26810.dart.textual_outline_modelled.expect
@@ -0,0 +1,31 @@
+abstract class Key {
+ Key(int x, int y)
+ : foo = x ^ y,
+ bar = x ^ y {}
+ Key.NotDuplicate(int x, int y)
+ : foo = x ^ y,
+ bar = x ^ y {}
+ int bar;
+ int foo;
+ int get a => runtimeType.hashCode ^ null.hashCode;
+ int get b => runtimeType.hashCode ^ null.hashCode;
+ int get c {}
+ int get d {}
+ int get e => 1 + runtimeType.hashCode ^ null.hashCode + 3;
+ int get f => 1 + runtimeType.hashCode ^ null.hashCode + 3;
+ int get g {}
+ int get h {}
+ int i(int x, int y) => x ^ y;
+ int j(int x, int y) => x ^ y;
+ int k(int x, int y) {}
+ int l(int x, int y) {}
+ int m(int x, int y) {}
+ int n(int x, int y) {}
+ int o(int x, int y) => 1 + x ^ y + 3;
+ int p(int x, int y) => 1 + x ^ y + 3;
+ int q(int x, int y) {}
+ int r(int x, int y) {}
+ s(int x, int y) {}
+}
+
+main() {}
diff --git a/pkg/test_runner/tool/update_static_error_tests.dart b/pkg/test_runner/tool/update_static_error_tests.dart
index de25ab3..eacb060 100644
--- a/pkg/test_runner/tool/update_static_error_tests.dart
+++ b/pkg/test_runner/tool/update_static_error_tests.dart
@@ -19,9 +19,9 @@
const _usage =
"Usage: dart update_static_error_tests.dart [flags...] <path glob>";
-final _dartPath = _findBinary("dart");
-final _analyzerPath = _findBinary("dartanalyzer");
-final _dart2jsPath = _findBinary("dart2js");
+final _dartPath = _findBinary("dart", "exe");
+final _analyzerPath = _findBinary("dartanalyzer", "bat");
+final _dart2jsPath = _findBinary("dart2js", "bat");
Future<void> main(List<String> args) async {
var sources = ErrorSource.all.map((e) => e.marker).toList();
@@ -301,8 +301,8 @@
}
/// Find the most recently-built [binary] in any of the build directories.
-String _findBinary(String binary) {
- if (Platform.isWindows) binary += ".bat";
+String _findBinary(String name, String windowsExtension) {
+ String binary = Platform.isWindows ? "$name.$windowsExtension" : name;
String newestPath;
DateTime newestTime;
@@ -310,13 +310,13 @@
var buildDirectory = Directory(Platform.isMacOS ? "xcodebuild" : "out");
if (buildDirectory.existsSync()) {
for (var config in buildDirectory.listSync()) {
- var analyzerPath = p.join(config.path, "dart-sdk", "bin", binary);
- var analyzerFile = File(analyzerPath);
- if (!analyzerFile.existsSync()) continue;
- var modified = analyzerFile.lastModifiedSync();
+ var path = p.join(config.path, "dart-sdk", "bin", binary);
+ var file = File(path);
+ if (!file.existsSync()) continue;
+ var modified = file.lastModifiedSync();
if (newestTime == null || modified.isAfter(newestTime)) {
- newestPath = analyzerPath;
+ newestPath = path;
newestTime = modified;
}
}
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
index fdcd957..8f00b30 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
@@ -682,10 +682,15 @@
return instructions;
}
-LocalVariable* BaseFlowGraphBuilder::MakeTemporary() {
- char name[64];
+LocalVariable* BaseFlowGraphBuilder::MakeTemporary(const char* suffix) {
+ static constexpr intptr_t kTemporaryNameLength = 64;
+ char name[kTemporaryNameLength];
intptr_t index = stack_->definition()->temp_index();
- Utils::SNPrint(name, 64, ":t%" Pd, index);
+ if (suffix != nullptr) {
+ Utils::SNPrint(name, kTemporaryNameLength, ":t_%s", suffix);
+ } else {
+ Utils::SNPrint(name, kTemporaryNameLength, ":t%" Pd, index);
+ }
const String& symbol_name =
String::ZoneHandle(Z, Symbols::New(thread_, name));
LocalVariable* variable =
@@ -707,6 +712,16 @@
return variable;
}
+Fragment BaseFlowGraphBuilder::DropTemporary(LocalVariable** temp) {
+ ASSERT(temp != nullptr && *temp != nullptr && (*temp)->HasIndex());
+ // Check that the temporary matches the current stack definition.
+ ASSERT_EQUAL(
+ stack_->definition()->temp_index(),
+ -(*temp)->index().value() - parsed_function_->num_stack_locals());
+ *temp = nullptr; // Clear to avoid inadvertent usage after dropping.
+ return Drop();
+}
+
void BaseFlowGraphBuilder::SetTempIndex(Definition* definition) {
definition->set_temp_index(
stack_ == NULL ? 0 : stack_->definition()->temp_index() + 1);
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.h b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
index 6cfd0b8..3160351 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.h
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
@@ -183,6 +183,9 @@
void SetTempIndex(Definition* definition);
Fragment LoadLocal(LocalVariable* variable);
+ Fragment StoreLocal(LocalVariable* variable) {
+ return StoreLocal(TokenPosition::kNoSource, variable);
+ }
Fragment StoreLocal(TokenPosition position, LocalVariable* variable);
Fragment StoreLocalRaw(TokenPosition position, LocalVariable* variable);
Fragment LoadContextAt(int depth);
@@ -242,8 +245,8 @@
// goto B3
// B3:
// LoadLocal(t)
- //
- LocalVariable* MakeTemporary();
+ LocalVariable* MakeTemporary(const char* suffix = nullptr);
+ Fragment DropTemporary(LocalVariable** temp);
InputsArray* GetArguments(int count);
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 396cef9..036de46 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -1929,84 +1929,124 @@
prologue_info);
}
-Fragment FlowGraphBuilder::BuildDynamicCallVarsInit(LocalVariable* closure) {
- auto const vars = parsed_function_->dynamic_closure_call_vars();
- ASSERT(vars != nullptr);
- ASSERT(has_saved_args_desc_array());
- const ArgumentsDescriptor descriptor(saved_args_desc_array());
- auto const rep = Slot::Function_packed_fields().representation();
+// Information used by the various dynamic closure call fragment builders.
+struct FlowGraphBuilder::ClosureCallInfo {
+ ClosureCallInfo(LocalVariable* closure,
+ JoinEntryInstr* throw_no_such_method,
+ const Array& arguments_descriptor_array,
+ ParsedFunction::DynamicClosureCallVars* const vars)
+ : closure(ASSERT_NOTNULL(closure)),
+ throw_no_such_method(ASSERT_NOTNULL(throw_no_such_method)),
+ descriptor(arguments_descriptor_array),
+ vars(ASSERT_NOTNULL(vars)) {}
- // We extract all the packed fields here so code generation that puts unboxed
- // integers on the expression stack even in unoptimized code is in one place.
+ LocalVariable* const closure;
+ JoinEntryInstr* const throw_no_such_method;
+ const ArgumentsDescriptor descriptor;
+ ParsedFunction::DynamicClosureCallVars* const vars;
- Fragment init;
- init += LoadLocal(closure);
- init += LoadNativeField(Slot::Closure_function());
- init += LoadNativeField(Slot::Function_packed_fields());
- init +=
- BuildExtractPackedFieldIntoSmi<Function::PackedNumFixedParameters>(rep);
- init += StoreLocal(TokenPosition::kNoSource, vars->num_fixed_params);
- // Not dropping as we'll use the value to get the max number of parameters.
+ // Set up by BuildDynamicCallChecks() when needed. These values are
+ // read-only, so they don't need real local variables and are created
+ // using MakeTemporary().
+ LocalVariable* function = nullptr;
+ LocalVariable* num_fixed_params = nullptr;
+ LocalVariable* num_opt_params = nullptr;
+ LocalVariable* num_max_params = nullptr;
+ LocalVariable* has_named_params = nullptr;
+ LocalVariable* parameter_names = nullptr;
+ LocalVariable* type_parameters = nullptr;
+};
- init += LoadLocal(closure);
- init += LoadNativeField(Slot::Closure_function());
- init += LoadNativeField(Slot::Function_packed_fields());
- init += BuildExtractPackedFieldIntoSmi<Function::PackedNumOptionalParameters>(
- rep);
- init += StoreLocal(TokenPosition::kNoSource, vars->num_opt_params);
- init += SmiBinaryOp(Token::kADD);
- init += StoreLocal(TokenPosition::kNoSource, vars->num_max_params);
- init += Drop();
+Fragment FlowGraphBuilder::TestClosureFunctionNamedParameterRequired(
+ const ClosureCallInfo& info,
+ Fragment set,
+ Fragment not_set) {
+ // Required named arguments only exist if null_safety is enabled.
+ if (!I->null_safety()) return not_set;
- // Currently, we only need this initialized to either check provided optional
- // names, if any, or to check for missing required parameters if null safe.
- if (Isolate::Current()->null_safety() || descriptor.NamedCount() > 0) {
- init += LoadLocal(closure);
- init += LoadNativeField(Slot::Closure_function());
- init += LoadNativeField(Slot::Function_parameter_names());
- init += StoreLocal(TokenPosition::kNoSource, vars->parameter_names);
- init += Drop();
- }
+ Fragment check_required;
+ // First, we convert the index to be in terms of the number of optional
+ // parameters, not total parameters (to calculate the flag index and shift).
+ check_required += LoadLocal(info.vars->current_param_index);
+ check_required += LoadLocal(info.num_fixed_params);
+ check_required += SmiBinaryOp(Token::kSUB, /*is_truncating=*/true);
+ LocalVariable* opt_index = MakeTemporary("opt_index"); // Read-only.
- init += LoadLocal(closure);
- init += LoadNativeField(Slot::Closure_function());
- init += LoadNativeField(Slot::Function_packed_fields());
- init += BuildExtractPackedFieldIntoSmi<
- Function::PackedHasNamedOptionalParameters>(rep);
- init += IntConstant(0);
- TargetEntryInstr *is_true, *is_false;
- init += BranchIfEqual(&is_false, &is_true);
+ // Next, we calculate the index to dereference in the parameter names array.
+ check_required += LoadLocal(opt_index);
+ check_required +=
+ IntConstant(compiler::target::kNumParameterFlagsPerElementLog2);
+ check_required += SmiBinaryOp(Token::kSHR);
+ check_required += LoadLocal(info.num_max_params);
+ check_required += SmiBinaryOp(Token::kADD);
+ LocalVariable* flags_index = MakeTemporary("flags_index"); // Read-only.
- JoinEntryInstr* join = BuildJoinEntry();
- init.current = join;
+ // Two read-only stack values (opt_index, flag_index) that must be dropped
+ // after we rejoin at after_check.
+ JoinEntryInstr* after_check = BuildJoinEntry();
- Fragment true_branch(is_true);
- true_branch += Constant(Object::bool_true());
- true_branch += StoreLocal(TokenPosition::kNoSource, vars->has_named_params);
- true_branch += Drop();
- true_branch += Goto(join);
+ // Now we check to see if the flags index is within the bounds of the
+ // parameters names array. If not, it cannot be required.
+ check_required += LoadLocal(flags_index);
+ check_required += LoadLocal(info.parameter_names);
+ check_required += LoadNativeField(Slot::Array_length());
+ check_required += SmiRelationalOp(Token::kLT);
+ TargetEntryInstr *valid_index, *invalid_index;
+ check_required += BranchIfTrue(&valid_index, &invalid_index);
- Fragment false_branch(is_false);
- false_branch += Constant(Object::bool_false());
- false_branch += StoreLocal(TokenPosition::kNoSource, vars->has_named_params);
- false_branch += Drop();
- false_branch += Goto(join);
+ JoinEntryInstr* join_not_set = BuildJoinEntry();
- return init;
+ Fragment(invalid_index) + Goto(join_not_set);
+
+ // Otherwise, we need to retrieve the value. We're guaranteed the Smis in
+ // the flag slots are non-null, so after loading we can immediate check
+ // the required flag bit for the given named parameter.
+ check_required.current = valid_index;
+ check_required += LoadLocal(info.parameter_names);
+ check_required += LoadLocal(flags_index);
+ check_required += LoadIndexed(compiler::target::kWordSize);
+ check_required += LoadLocal(opt_index);
+ check_required +=
+ IntConstant(compiler::target::kNumParameterFlagsPerElement - 1);
+ check_required += SmiBinaryOp(Token::kBIT_AND);
+ // If the below changes, we'll need to multiply by the number of parameter
+ // flags before shifting.
+ static_assert(compiler::target::kNumParameterFlags == 1,
+ "IL builder assumes only one flag bit per parameter");
+ check_required += SmiBinaryOp(Token::kSHR);
+ check_required +=
+ IntConstant(1 << compiler::target::kRequiredNamedParameterFlag);
+ check_required += SmiBinaryOp(Token::kBIT_AND);
+ check_required += IntConstant(0);
+ TargetEntryInstr *is_not_set, *is_set;
+ check_required += BranchIfEqual(&is_not_set, &is_set);
+
+ Fragment(is_not_set) + Goto(join_not_set);
+
+ set.Prepend(is_set);
+ set += Goto(after_check);
+
+ not_set.Prepend(join_not_set);
+ not_set += Goto(after_check);
+
+ // After rejoining, drop the introduced temporaries.
+ check_required.current = after_check;
+ check_required += DropTemporary(&flags_index);
+ check_required += DropTemporary(&opt_index);
+ return check_required;
}
-Fragment FlowGraphBuilder::BuildClosureCallHasRequiredNamedArgumentsCheck(
- LocalVariable* closure,
- JoinEntryInstr* nsm) {
- auto const vars = parsed_function_->dynamic_closure_call_vars();
- ASSERT(vars != nullptr);
- ASSERT(has_saved_args_desc_array());
- const ArgumentsDescriptor descriptor(saved_args_desc_array());
-
- // Required named arguments only exist if null_safety is enabled.
- if (!Isolate::Current()->null_safety()) return Fragment();
-
- if (descriptor.NamedCount() == 0) {
+Fragment FlowGraphBuilder::BuildClosureCallNamedArgumentsCheck(
+ const ClosureCallInfo& info) {
+ // When no named arguments are provided, we just need to check for possible
+ // required named arguments.
+ if (info.descriptor.NamedCount() == 0) {
+ // No work to do if there are no possible required named parameters.
+ if (!I->null_safety()) {
+ return Fragment();
+ }
+ // If the below changes, we can no longer assume that flag slots existing
+ // means there are required parameters.
static_assert(compiler::target::kNumParameterFlags == 1,
"IL builder assumes only one flag bit per parameter");
// No named args were provided, so check for any required named params.
@@ -2014,193 +2054,177 @@
// for named parameters. If this changes, we'll need to check each flag
// entry appropriately for any set required bits.
Fragment has_any;
- has_any += LoadLocal(vars->num_max_params);
- has_any += LoadLocal(vars->parameter_names);
+ has_any += LoadLocal(info.num_max_params);
+ has_any += LoadLocal(info.parameter_names);
has_any += LoadNativeField(Slot::Array_length());
TargetEntryInstr *no_required, *has_required;
has_any += BranchIfEqual(&no_required, &has_required);
- Fragment(has_required) + Goto(nsm);
+ Fragment(has_required) + Goto(info.throw_no_such_method);
return Fragment(has_any.entry, no_required);
}
- // Loop over the indexes of the named parameters of the function, checking
- // whether the named parameter at that index is required. If it is, then
- // check whether it matches any of the names in the ArgumentsDescriptor.
- JoinEntryInstr* loop = BuildJoinEntry();
+ // Otherwise, we need to loop through the parameter names to check the names
+ // of named arguments for validity (and possibly missing required ones).
+ Fragment check_names;
+ check_names += LoadLocal(info.vars->current_param_index);
+ LocalVariable* old_index = MakeTemporary("old_index"); // Read-only.
+ check_names += LoadLocal(info.vars->current_num_processed);
+ LocalVariable* old_processed = MakeTemporary("old_processed"); // Read-only.
- // We iterate from [0, num_named), not [num_fixed, num_named) because the
- // flag mask and index is based off the named index, not the param index.
- Fragment check_required;
- check_required += IntConstant(0);
- check_required +=
- StoreLocal(TokenPosition::kNoSource, vars->current_param_index);
- check_required += Drop();
- check_required += Goto(loop);
+ // Two local stack values (old_index, old_processed) to drop after rejoining
+ // at done.
+ JoinEntryInstr* loop = BuildJoinEntry();
+ JoinEntryInstr* done = BuildJoinEntry();
+
+ check_names += IntConstant(0);
+ check_names += StoreLocal(info.vars->current_num_processed);
+ check_names += Drop();
+ check_names += LoadLocal(info.num_fixed_params);
+ check_names += StoreLocal(info.vars->current_param_index);
+ check_names += Drop();
+ check_names += Goto(loop);
Fragment loop_check(loop);
- loop_check += LoadLocal(vars->current_param_index);
- loop_check += LoadLocal(vars->num_opt_params);
+ loop_check += LoadLocal(info.vars->current_param_index);
+ loop_check += LoadLocal(info.num_max_params);
loop_check += SmiRelationalOp(Token::kLT);
TargetEntryInstr *no_more, *more;
loop_check += BranchIfTrue(&more, &no_more);
- JoinEntryInstr* done = BuildJoinEntry();
Fragment(no_more) + Goto(done);
Fragment loop_body(more);
- // First, we calculate the index to dereference into the parameter names
- // array and store it in :expr_temp.
- loop_body += LoadLocal(vars->num_max_params);
- loop_body += LoadLocal(vars->current_param_index);
- loop_body += IntConstant(compiler::target::kNumParameterFlagsPerElementLog2);
- loop_body += SmiBinaryOp(Token::kSHR);
- loop_body += SmiBinaryOp(Token::kADD);
- LocalVariable* temp = parsed_function_->expression_temp_var();
- loop_body += StoreLocal(TokenPosition::kNoSource, temp);
- // Now we check to see if it is within the bounds of the parameters names
- // array. If not, we're done, as this and later indices cannot be required.
- loop_body += LoadLocal(vars->parameter_names);
- loop_body += LoadNativeField(Slot::Array_length());
- loop_body += SmiRelationalOp(Token::kLT);
- TargetEntryInstr *valid_index, *invalid_index;
- loop_body += BranchIfTrue(&valid_index, &invalid_index);
-
- Fragment(invalid_index) + Goto(done);
-
- // Otherwise, we need to retrieve the value and check the appropriate bit.
- loop_body.current = valid_index;
- loop_body += LoadLocal(vars->parameter_names);
- loop_body += LoadLocal(temp); // Index into parameter names array.
+ // First load the name we need to check against.
+ loop_body += LoadLocal(info.parameter_names);
+ loop_body += LoadLocal(info.vars->current_param_index);
loop_body += LoadIndexed(compiler::target::kWordSize);
- loop_body += LoadLocal(vars->current_param_index);
- loop_body += IntConstant(compiler::target::kNumParameterFlagsPerElement - 1);
- loop_body += SmiBinaryOp(Token::kBIT_AND);
- if (compiler::target::kNumParameterFlags > 1) {
- loop_body += IntConstant(compiler::target::kNumParameterFlags);
- loop_body += SmiBinaryOp(Token::kMUL, /*is_truncating=*/false);
+ LocalVariable* param_name = MakeTemporary("param_name"); // Read only.
+
+ // One additional local value on the stack within the loop body (param_name)
+ // that should be dropped after rejoining at loop_incr.
+ JoinEntryInstr* loop_incr = BuildJoinEntry();
+
+ // Now iterate over the ArgumentsDescriptor names and check for a match.
+ for (intptr_t i = 0; i < info.descriptor.NamedCount(); i++) {
+ const auto& name = String::ZoneHandle(Z, info.descriptor.NameAt(i));
+ loop_body += Constant(name);
+ loop_body += LoadLocal(param_name);
+ TargetEntryInstr *match, *mismatch;
+ loop_body += BranchIfEqual(&match, &mismatch);
+ loop_body.current = mismatch;
+
+ // We have a match, so go to the next name after incrementing the number
+ // of matched arguments. (No need to check for the required bit, as this
+ // parameter was provided.)
+ Fragment matched(match);
+ matched += LoadLocal(info.vars->current_num_processed);
+ matched += IntConstant(1);
+ matched += SmiBinaryOp(Token::kADD, /*is_truncating=*/true);
+ matched += StoreLocal(info.vars->current_num_processed);
+ matched += Drop();
+ matched += Goto(loop_incr);
}
- loop_body += SmiBinaryOp(Token::kSHR);
- loop_body += IntConstant(1 << compiler::target::kRequiredNamedParameterFlag);
- loop_body += SmiBinaryOp(Token::kBIT_AND);
- loop_body += IntConstant(0);
- TargetEntryInstr *not_set, *set;
- loop_body += BranchIfEqual(¬_set, &set);
- // Make a join entry for the increment at the end of the loop, so we can jump
- // to it if we match one of the names in the ArgumentsDescriptor.
- JoinEntryInstr* incr_index = BuildJoinEntry();
- Fragment(not_set) + Goto(incr_index);
+ // None of the names in the arguments descriptor matched, so check if this
+ // is a required parameter.
+ loop_body += TestClosureFunctionNamedParameterRequired(
+ info,
+ /*set=*/Goto(info.throw_no_such_method),
+ /*not_set=*/{});
- Fragment check_names(set);
- if (descriptor.NamedCount() > 0) {
- // First load the name we need to check against into :expr_temp.
- check_names += LoadLocal(vars->parameter_names);
- check_names += LoadLocal(vars->current_param_index);
- check_names += LoadLocal(vars->num_fixed_params);
- check_names += SmiBinaryOp(Token::kADD, /*is_truncating=*/true);
- check_names += LoadIndexed(compiler::target::kWordSize);
- check_names += StoreLocal(TokenPosition::kNoSource, temp);
- check_names += Drop();
- // Now iterate over the names in the ArgumentsDescriptor and add a check
- // against each that goes to t he next loop iteration if the name is found.
- for (intptr_t i = 0; i < descriptor.NamedCount(); i++) {
- const auto& name = String::ZoneHandle(Z, descriptor.NameAt(i));
- check_names += LoadLocal(temp);
- check_names += Constant(name);
- TargetEntryInstr *str_equal, *str_neq;
- check_names += BranchIfEqual(&str_equal, &str_neq);
- check_names.current = str_neq;
+ loop_body += Goto(loop_incr);
- Fragment(str_equal) + Goto(incr_index);
- }
- }
- // None of the names in the arguments descriptor matched, so throw NSM.
- check_names += Goto(nsm);
+ Fragment incr_index(loop_incr);
+ incr_index += DropTemporary(¶m_name);
+ incr_index += LoadLocal(info.vars->current_param_index);
+ incr_index += IntConstant(1);
+ incr_index += SmiBinaryOp(Token::kADD, /*is_truncating=*/true);
+ incr_index += StoreLocal(info.vars->current_param_index);
+ incr_index += Drop();
+ incr_index += Goto(loop);
- // Increment the counter if the current parameter wasn't required or was
- // required but provided.
- loop_body.current = incr_index;
- loop_body += LoadLocal(vars->current_param_index);
- loop_body += IntConstant(1);
- loop_body += SmiBinaryOp(Token::kADD, /*is_truncating=*/true);
- loop_body += StoreLocal(TokenPosition::kNoSource, vars->current_param_index);
- loop_body += Drop();
- loop_body += Goto(loop);
+ Fragment check_processed(done);
+ check_processed += LoadLocal(info.vars->current_num_processed);
+ check_processed += IntConstant(info.descriptor.NamedCount());
+ TargetEntryInstr *all_processed, *bad_name;
+ check_processed += BranchIfEqual(&all_processed, &bad_name);
- check_required.current = done;
- return check_required;
+ // Didn't find a matching parameter name for at least one argument name.
+ Fragment(bad_name) + Goto(info.throw_no_such_method);
+
+ // Drop the temporaries at the end of the fragment.
+ check_names.current = all_processed;
+ check_names += LoadLocal(old_processed);
+ check_names += StoreLocal(info.vars->current_num_processed);
+ check_names += Drop();
+ check_names += DropTemporary(&old_processed);
+ check_names += LoadLocal(old_index);
+ check_names += StoreLocal(info.vars->current_param_index);
+ check_names += Drop();
+ check_names += DropTemporary(&old_index);
+ return check_names;
}
Fragment FlowGraphBuilder::BuildClosureCallArgumentsValidCheck(
- LocalVariable* closure,
- JoinEntryInstr* nsm) {
- auto const vars = parsed_function_->dynamic_closure_call_vars();
- ASSERT(vars != nullptr);
- ASSERT(has_saved_args_desc_array());
- const ArgumentsDescriptor descriptor(saved_args_desc_array());
-
- LocalVariable* temp = parsed_function_->expression_temp_var();
-
+ const ClosureCallInfo& info) {
Fragment check_entry;
// We only need to check the length of any explicitly provided type arguments.
- if (descriptor.TypeArgsLen() > 0) {
+ if (info.descriptor.TypeArgsLen() > 0) {
Fragment check_type_args_length;
- check_type_args_length += LoadLocal(closure);
- check_type_args_length += LoadNativeField(Slot::Closure_function());
- check_type_args_length += LoadNativeField(Slot::Function_type_parameters());
- check_type_args_length += StoreLocal(TokenPosition::kNoSource, temp);
+ check_type_args_length += LoadLocal(info.type_parameters);
TargetEntryInstr *null, *not_null;
check_type_args_length += BranchIfNull(&null, ¬_null);
check_type_args_length.current = not_null; // Continue in non-error case.
-
- // The function is not generic.
- Fragment(null) + Goto(nsm);
-
- check_type_args_length += LoadLocal(temp);
+ check_type_args_length += LoadLocal(info.type_parameters);
check_type_args_length += LoadNativeField(Slot::TypeArguments_length());
- check_type_args_length += IntConstant(descriptor.TypeArgsLen());
+ check_type_args_length += IntConstant(info.descriptor.TypeArgsLen());
TargetEntryInstr *equal, *not_equal;
check_type_args_length += BranchIfEqual(&equal, ¬_equal);
check_type_args_length.current = equal; // Continue in non-error case.
- Fragment(not_equal) + Goto(nsm);
+ // The function is not generic.
+ Fragment(null) + Goto(info.throw_no_such_method);
+
+ // An incorrect number of type arguments were passed.
+ Fragment(not_equal) + Goto(info.throw_no_such_method);
// Type arguments should not be provided if there are delayed type
// arguments, as then the closure itself is not generic.
- check_entry += TestDelayedTypeArgs(closure, /*present=*/Goto(nsm),
- /*absent=*/check_type_args_length);
+ check_entry += TestDelayedTypeArgs(
+ info.closure, /*present=*/Goto(info.throw_no_such_method),
+ /*absent=*/check_type_args_length);
}
- check_entry += LoadLocal(vars->has_named_params);
+ check_entry += LoadLocal(info.has_named_params);
TargetEntryInstr *has_named, *has_positional;
check_entry += BranchIfTrue(&has_named, &has_positional);
JoinEntryInstr* join_after_optional = BuildJoinEntry();
check_entry.current = join_after_optional;
- if (descriptor.NamedCount() > 0) {
+ if (info.descriptor.NamedCount() > 0) {
// No reason to continue checking, as this function doesn't take named args.
- Fragment(has_positional) + Goto(nsm);
+ Fragment(has_positional) + Goto(info.throw_no_such_method);
} else {
Fragment check_pos(has_positional);
- check_pos += LoadLocal(vars->num_fixed_params);
- check_pos += IntConstant(descriptor.PositionalCount());
+ check_pos += LoadLocal(info.num_fixed_params);
+ check_pos += IntConstant(info.descriptor.PositionalCount());
check_pos += SmiRelationalOp(Token::kLTE);
TargetEntryInstr *enough, *too_few;
check_pos += BranchIfTrue(&enough, &too_few);
check_pos.current = enough;
- Fragment(too_few) + Goto(nsm);
+ Fragment(too_few) + Goto(info.throw_no_such_method);
- check_pos += IntConstant(descriptor.PositionalCount());
- check_pos += LoadLocal(vars->num_max_params);
+ check_pos += IntConstant(info.descriptor.PositionalCount());
+ check_pos += LoadLocal(info.num_max_params);
check_pos += SmiRelationalOp(Token::kLTE);
TargetEntryInstr *valid, *too_many;
check_pos += BranchIfTrue(&valid, &too_many);
check_pos.current = valid;
- Fragment(too_many) + Goto(nsm);
+ Fragment(too_many) + Goto(info.throw_no_such_method);
check_pos += Goto(join_after_optional);
}
@@ -2208,90 +2232,114 @@
Fragment check_named(has_named);
TargetEntryInstr *same, *different;
- check_named += LoadLocal(vars->num_fixed_params);
- check_named += IntConstant(descriptor.PositionalCount());
+ check_named += LoadLocal(info.num_fixed_params);
+ check_named += IntConstant(info.descriptor.PositionalCount());
check_named += BranchIfEqual(&same, &different);
check_named.current = same;
- Fragment(different) + Goto(nsm);
+ Fragment(different) + Goto(info.throw_no_such_method);
- if (descriptor.NamedCount() > 0) {
- check_named += IntConstant(descriptor.NamedCount());
- check_named += LoadLocal(vars->num_opt_params);
+ if (info.descriptor.NamedCount() > 0) {
+ check_named += IntConstant(info.descriptor.NamedCount());
+ check_named += LoadLocal(info.num_opt_params);
check_named += SmiRelationalOp(Token::kLTE);
TargetEntryInstr *valid, *too_many;
check_named += BranchIfTrue(&valid, &too_many);
check_named.current = valid;
- Fragment(too_many) + Goto(nsm);
+ Fragment(too_many) + Goto(info.throw_no_such_method);
}
- check_named += BuildClosureCallHasRequiredNamedArgumentsCheck(closure, nsm);
+ // Check the names for optional arguments. If applicable, also check that all
+ // required named parameters are provided.
+ check_named += BuildClosureCallNamedArgumentsCheck(info);
check_named += Goto(join_after_optional);
+ check_entry.current = join_after_optional;
return check_entry;
}
-Fragment FlowGraphBuilder::BuildClosureCallNamedArgumentCheck(
- LocalVariable* closure,
- intptr_t pos,
- JoinEntryInstr* nsm) {
- auto const vars = parsed_function_->dynamic_closure_call_vars();
- ASSERT(vars != nullptr);
- ASSERT(has_saved_args_desc_array());
- const ArgumentsDescriptor descriptor(saved_args_desc_array());
+Fragment FlowGraphBuilder::BuildDynamicClosureCallChecks(
+ LocalVariable* closure) {
+ ClosureCallInfo info(closure, BuildThrowNoSuchMethod(),
+ saved_args_desc_array(),
+ parsed_function_->dynamic_closure_call_vars());
- // If this isn't a named argument, then don't build anything.
- if (pos < descriptor.PositionalCount()) return Fragment();
- const intptr_t named_pos = pos - descriptor.PositionalCount();
- ASSERT(named_pos < descriptor.NamedCount());
+ // We extract all the packed fields here so code generation that puts unboxed
+ // integers on the expression stack even in unoptimized code is in one place.
+ auto const rep = Slot::Function_packed_fields().representation();
- // Loop over the indexes of the named parameters of the function, checking
- // whether the named parameter at that index is required. If it is, then
- // check whether it matches any of the names in the ArgumentsDescriptor.
- JoinEntryInstr* loop = BuildJoinEntry();
+ Fragment body;
+ body += LoadLocal(info.closure);
+ body += LoadNativeField(Slot::Closure_function());
+ info.function = MakeTemporary("function");
- // We iterate from [0, num_named), not [num_fixed, num_named) because the
- // flag mask and index is based off the named index, not the param index.
- Fragment check_arg_name;
- check_arg_name += LoadLocal(vars->num_fixed_params);
- check_arg_name +=
- StoreLocal(TokenPosition::kNoSource, vars->current_param_index);
- check_arg_name += Drop();
- check_arg_name += Goto(loop);
+ body += LoadLocal(info.function);
+ body += LoadNativeField(Slot::Function_packed_fields());
+ body +=
+ BuildExtractPackedFieldIntoSmi<Function::PackedNumFixedParameters>(rep);
+ info.num_fixed_params = MakeTemporary("num_fixed_params");
- Fragment loop_check(loop);
- loop_check += LoadLocal(vars->current_param_index);
- loop_check += LoadLocal(vars->num_max_params);
- loop_check += SmiRelationalOp(Token::kLT);
- TargetEntryInstr *no_more, *more;
- loop_check += BranchIfTrue(&more, &no_more);
+ body += LoadLocal(info.function);
+ body += LoadNativeField(Slot::Function_packed_fields());
+ body += BuildExtractPackedFieldIntoSmi<Function::PackedNumOptionalParameters>(
+ rep);
+ info.num_opt_params = MakeTemporary("num_opt_params");
- JoinEntryInstr* done = BuildJoinEntry();
- // None of the parameter names matched.
- Fragment(no_more) + Goto(nsm);
+ body += LoadLocal(info.num_fixed_params);
+ body += LoadLocal(info.num_opt_params);
+ body += SmiBinaryOp(Token::kADD);
+ info.num_max_params = MakeTemporary("num_max_params");
- Fragment loop_body(more);
- loop_body += LoadLocal(vars->parameter_names);
- loop_body += LoadLocal(vars->current_param_index);
- loop_body += LoadIndexed(compiler::target::kWordSize);
- loop_body += Constant(String::ZoneHandle(Z, descriptor.NameAt(named_pos)));
- TargetEntryInstr *str_equal, *str_neq;
- loop_body += BranchIfEqual(&str_equal, &str_neq);
+ body += LoadLocal(info.function);
+ body += LoadNativeField(Slot::Function_packed_fields());
+ body += BuildExtractPackedFieldIntoSmi<
+ Function::PackedHasNamedOptionalParameters>(rep);
+ body += IntConstant(0);
+ body += StrictCompare(Token::kNE_STRICT);
+ info.has_named_params = MakeTemporary("has_named_params");
- Fragment(str_equal) + Goto(done);
+ if (I->null_safety() || info.descriptor.NamedCount() > 0) {
+ body += LoadLocal(info.function);
+ body += LoadNativeField(Slot::Function_parameter_names());
+ info.parameter_names = MakeTemporary("parameter_names");
+ }
- // Increment the index and jump back to the loop check.
- loop_body.current = str_neq;
- loop_body += LoadLocal(vars->current_param_index);
- loop_body += IntConstant(1);
- loop_body += SmiBinaryOp(Token::kADD, /*is_truncating=*/true);
- loop_body += StoreLocal(TokenPosition::kNoSource, vars->current_param_index);
- loop_body += Drop();
- loop_body += Goto(loop);
+ if (info.descriptor.TypeArgsLen() > 0) {
+ body += LoadLocal(info.function);
+ body += LoadNativeField(Slot::Function_type_parameters());
+ info.type_parameters = MakeTemporary("type_parameters");
+ }
- check_arg_name.current = done;
- return check_arg_name;
+ // Check that the shape of the arguments generally matches what the
+ // closure function expects. The only remaining non-type check after this
+ // is that the names for optional arguments are valid.
+ body += BuildClosureCallArgumentsValidCheck(info);
+
+ // TODO(dartbug.com/40813): Move checks that are currently compiled
+ // in the closure body to here, using the dynamic versions of
+ // AssertSubtype to typecheck the type arguments using the runtime types
+ // available in the closure object.
+
+ // TODO(dartbug.com/40813): Move checks that are currently compiled
+ // in the closure body to here, using the dynamic versions of
+ // AssertAssignable to typecheck the parameters using the runtime types
+ // available in the closure object.
+
+ // Drop all the read-only temporaries at the end of the fragment.
+ if (info.type_parameters != nullptr) {
+ body += DropTemporary(&info.type_parameters);
+ }
+ if (info.parameter_names != nullptr) {
+ body += DropTemporary(&info.parameter_names);
+ }
+ body += DropTemporary(&info.has_named_params);
+ body += DropTemporary(&info.num_max_params);
+ body += DropTemporary(&info.num_opt_params);
+ body += DropTemporary(&info.num_fixed_params);
+ body += DropTemporary(&info.function);
+
+ return body;
}
FlowGraph* FlowGraphBuilder::BuildGraphOfInvokeFieldDispatcher(
@@ -2334,7 +2382,7 @@
// Build any dynamic closure call checks before pushing arguments to the
// final call on the stack to make debugging easier.
- LocalVariable* closure = NULL;
+ LocalVariable* closure = nullptr;
if (is_closure_call) {
closure = parsed_function_->ParameterVariable(0);
if (is_dynamic_call) {
@@ -2344,30 +2392,7 @@
InlineBailout(
"kernel::FlowGraphBuilder::BuildGraphOfInvokeFieldDispatcher");
- // Init the variables we'll be using for dynamic call checking.
- body += BuildDynamicCallVarsInit(closure);
-
- JoinEntryInstr* nsm = BuildThrowNoSuchMethod();
- // Check that the shape of the arguments generally matches what the
- // closure function expects. The only remaining non-type check after this
- // is that the names for optional arguments are valid.
- body += BuildClosureCallArgumentsValidCheck(closure, nsm);
-
- // TODO(dartbug.com/40813): Move checks that are currently compiled
- // in the closure body to here, using the dynamic versions of
- // AssertSubtype to typecheck the type arguments using the runtime types
- // available in the closure object.
-
- // TODO(dartbug.com/40813): Move checks that are currently compiled
- // in the closure body to here, using the dynamic versions of
- // AssertAssignable to typecheck the parameters using the runtime types
- // available in the closure object.
- //
- // For now, we check that any named arguments have valid names.
- for (intptr_t pos = descriptor.PositionalCount();
- pos < descriptor.Count(); pos++) {
- body += BuildClosureCallNamedArgumentCheck(closure, pos, nsm);
- }
+ body += BuildDynamicClosureCallChecks(closure);
}
}
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.h b/runtime/vm/compiler/frontend/kernel_to_il.h
index 957807b..9db5a39 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.h
+++ b/runtime/vm/compiler/frontend/kernel_to_il.h
@@ -80,31 +80,32 @@
FlowGraph* BuildGraphOfMethodExtractor(const Function& method);
FlowGraph* BuildGraphOfNoSuchMethodDispatcher(const Function& function);
- Fragment BuildDynamicCallVarsInit(LocalVariable* closure);
+ struct ClosureCallInfo;
+
+ // Tests whether the function parameter at the given index is required and
+ // branches to the appropriate fragment. Loads the parameter index to
+ // check from info.vars->current_param_index.
+ Fragment TestClosureFunctionNamedParameterRequired(
+ const ClosureCallInfo& info,
+ Fragment set,
+ Fragment not_set);
// The BuildClosureCall...Check methods differs from the checks built in the
// PrologueBuilder in that they are built for invoke field dispatchers,
// where the ArgumentsDescriptor is known at compile time but the specific
// closure function is retrieved at runtime.
- // Builds checks that all required arguments are provided. Generates an empty
- // fragment if null safety is not enabled.
- Fragment BuildClosureCallHasRequiredNamedArgumentsCheck(
- LocalVariable* closure,
- JoinEntryInstr* nsm);
+ // Builds checks that the given named arguments have valid argument names
+ // and, in the case of null safe code, that all required named parameters
+ // are provided.
+ Fragment BuildClosureCallNamedArgumentsCheck(const ClosureCallInfo& info);
// Builds checks for checking the arguments of a call are valid for the
- // function retrieved at runtime from the closure. Checks almost all the
- // same cases as Function::AreArgumentsValid, leaving only name checking
- // for optional named arguments to be checked during argument type checking.
- Fragment BuildClosureCallArgumentsValidCheck(LocalVariable* closure,
- JoinEntryInstr* nsm);
+ // function retrieved at runtime from the closure.
+ Fragment BuildClosureCallArgumentsValidCheck(const ClosureCallInfo& info);
- // Builds checks that the given named argument has a valid argument name.
- // Returns the empty fragment for positional arguments.
- Fragment BuildClosureCallNamedArgumentCheck(LocalVariable* closure,
- intptr_t pos,
- JoinEntryInstr* nsm);
+ // Main entry point for building checks.
+ Fragment BuildDynamicClosureCallChecks(LocalVariable* closure);
FlowGraph* BuildGraphOfInvokeFieldDispatcher(const Function& function);
FlowGraph* BuildGraphOfFfiTrampoline(const Function& function);
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index b91b32a..f28890b 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -441,7 +441,6 @@
#define ADD_VAR(Name, _, __) scope_->AddVariable(vars->Name);
FOR_EACH_DYNAMIC_CLOSURE_CALL_VARIABLE(ADD_VAR);
#undef ADD_VAR
- needs_expr_temp_ = true;
}
FALL_THROUGH;
}
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index d3e0e47..9f873d9 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -345,8 +345,6 @@
if (dynamic_closure_call_vars_ != nullptr) return dynamic_closure_call_vars_;
dynamic_closure_call_vars_ = new (zone()) DynamicClosureCallVars();
- const auto& type_Array = Type::ZoneHandle(zone(), Type::ArrayType());
- const auto& type_Bool = Type::ZoneHandle(zone(), Type::BoolType());
const auto& type_Smi = Type::ZoneHandle(zone(), Type::SmiType());
#define INIT_FIELD(Name, TypeName, Symbol) \
dynamic_closure_call_vars_->Name = new (zone()) \
diff --git a/runtime/vm/parser.h b/runtime/vm/parser.h
index 6ea6d2a..9c56692 100644
--- a/runtime/vm/parser.h
+++ b/runtime/vm/parser.h
@@ -243,15 +243,12 @@
// method.
bool IsGenericCovariantImplParameter(intptr_t i) const;
- // Variables needed for the InvokeFieldDispatcher for dynamic closure calls.
+ // Variables needed for the InvokeFieldDispatcher for dynamic closure calls,
+ // because they are both read and written to by the builders.
struct DynamicClosureCallVars : ZoneAllocated {
#define FOR_EACH_DYNAMIC_CLOSURE_CALL_VARIABLE(V) \
- V(current_param_index, Smi, CurrentParamIndex) \
- V(has_named_params, Bool, HasNamed) \
- V(num_fixed_params, Smi, NumFixed) \
- V(num_opt_params, Smi, NumOpt) \
- V(num_max_params, Smi, MaxParams) \
- V(parameter_names, Array, ParameterNames)
+ V(current_num_processed, Smi, CurrentNumProcessed) \
+ V(current_param_index, Smi, CurrentParamIndex)
#define DEFINE_FIELD(Name, _, __) LocalVariable* Name = nullptr;
FOR_EACH_DYNAMIC_CLOSURE_CALL_VARIABLE(DEFINE_FIELD)
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 9010987..80d6da1 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -108,12 +108,8 @@
V(Double, "double") \
V(Dynamic, "dynamic") \
V(DynamicCall, "dyn:call") \
+ V(DynamicCallCurrentNumProcessedVar, ":dyn_call_current_num_processed") \
V(DynamicCallCurrentParamIndexVar, ":dyn_call_current_param_index") \
- V(DynamicCallHasNamedVar, ":dyn_call_has_named") \
- V(DynamicCallMaxParamsVar, ":dyn_call_max_params") \
- V(DynamicCallNumFixedVar, ":dyn_call_num_fixed") \
- V(DynamicCallNumOptVar, ":dyn_call_num_opt") \
- V(DynamicCallParameterNamesVar, ":dyn_call_parameter_names") \
V(DynamicPrefix, "dyn:") \
V(EntryPointsTemp, ":entry_points_temp") \
V(EqualOperator, "==") \
diff --git a/tests/language/argument/assignability_function_typed_test.dart b/tests/language/argument/assignability_function_typed_test.dart
index fe17a15..b2d6e26 100644
--- a/tests/language/argument/assignability_function_typed_test.dart
+++ b/tests/language/argument/assignability_function_typed_test.dart
@@ -31,15 +31,15 @@
f(intToObject);
//^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
- // [cfe] The top level function has type 'Object Function(int)' that isn't of expected type 'num Function(num)'.
+ // [cfe] The argument type 'Object Function(int)' can't be assigned to the parameter type 'num Function(num)'.
f(intToNum);
//^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
- // [cfe] The top level function has type 'num Function(int)' that isn't of expected type 'num Function(num)'.
+ // [cfe] The argument type 'num Function(int)' can't be assigned to the parameter type 'num Function(num)'.
f(numToObject);
//^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
- // [cfe] The top level function has type 'Object Function(num)' that isn't of expected type 'num Function(num)'.
+ // [cfe] The argument type 'Object Function(num)' can't be assigned to the parameter type 'num Function(num)'.
// Ok.
f(numToNum);
diff --git a/tests/language/async/return_types_test.dart b/tests/language/async/return_types_test.dart
index f378549..3de5491 100644
--- a/tests/language/async/return_types_test.dart
+++ b/tests/language/async/return_types_test.dart
@@ -19,7 +19,7 @@
return "String";
// ^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.RETURN_OF_INVALID_TYPE
- // [cfe] A value of type 'String' can't be assigned to a variable of type 'FutureOr<int>'.
+ // [cfe] A value of type 'String' can't be returned from an async function with return type 'Future<int>'.
}
Future<int, String>
@@ -34,7 +34,7 @@
// [error line 33, column 1, length 3]
// [analyzer] COMPILE_TIME_ERROR.ILLEGAL_ASYNC_RETURN_TYPE
foo5() async {
-// [error line 36, column 1, length 3]
+// [error line 36, column 1]
// [cfe] Functions marked 'async' must have a return type assignable to 'Future'.
return 3;
}
diff --git a/tests/language/parameter/named_with_conversions_test.dart b/tests/language/parameter/named_with_conversions_test.dart
index 58e85f5..8818036 100644
--- a/tests/language/parameter/named_with_conversions_test.dart
+++ b/tests/language/parameter/named_with_conversions_test.dart
@@ -29,9 +29,9 @@
}
class HasMethod {
- int calls;
+ int calls = 0;
- HasMethod() : calls = 0 {}
+ HasMethod();
foo(tag, [a = 10, b = 20]) {
calls += 1;
@@ -46,7 +46,7 @@
class HasField {
int calls = 0;
- var foo, foo2;
+ late final dynamic foo, foo2;
HasField() {
foo = makeFoo(this);
@@ -71,16 +71,6 @@
}
class NamedParametersWithConversionsTest {
- static checkException(thunk) {
- bool threw = false;
- try {
- thunk();
- } catch (e) {
- threw = true;
- }
- Expect.isTrue(threw);
- }
-
static testMethodCallSyntax(a) {
a.foo('');
a.foo('a', 111);
@@ -92,10 +82,12 @@
Expect.equals(7, a.calls);
- checkException(() => a.foo()); // Too few arguments.
- checkException(() => a.foo('abc', 1, 2, 3)); // Too many arguments.
- checkException(() => a.foo2('c', c: 1)); // Bad name.
- checkException(() => a.foo2('c', a: 111, c: 1)); // Bad name.
+ Expect.throwsNoSuchMethodError(() => a.foo()); // Too few arguments.
+ Expect.throwsNoSuchMethodError(
+ () => a.foo('abc', 1, 2, 3)); // Too many arguments.
+ Expect.throwsNoSuchMethodError(() => a.foo2('c', c: 1)); // Bad name.
+ Expect.throwsNoSuchMethodError(
+ () => a.foo2('c', a: 111, c: 1)); // Bad name.
Expect.equals(7, a.calls);
}
@@ -113,10 +105,11 @@
Expect.equals(7, a.calls);
- checkException(() => f()); // Too few arguments.
- checkException(() => f('abc', 1, 2, 3)); // Too many arguments.
- checkException(() => f2('c', c: 1)); // Bad name.
- checkException(() => f2('c', a: 111, c: 1)); // Bad name.
+ Expect.throwsNoSuchMethodError(() => f()); // Too few arguments.
+ Expect.throwsNoSuchMethodError(
+ () => f('abc', 1, 2, 3)); // Too many arguments.
+ Expect.throwsNoSuchMethodError(() => f2('c', c: 1)); // Bad name.
+ Expect.throwsNoSuchMethodError(() => f2('c', a: 111, c: 1)); // Bad name.
Expect.equals(7, a.calls);
}
diff --git a/tests/language_2/parameter/named_with_conversions_test.dart b/tests/language_2/parameter/named_with_conversions_test.dart
index 14849e6..5b949e6 100644
--- a/tests/language_2/parameter/named_with_conversions_test.dart
+++ b/tests/language_2/parameter/named_with_conversions_test.dart
@@ -29,9 +29,9 @@
}
class HasMethod {
- int calls;
+ int calls = 0;
- HasMethod() : calls = 0 {}
+ HasMethod();
foo(tag, [a = 10, b = 20]) {
calls += 1;
@@ -45,11 +45,10 @@
}
class HasField {
- int calls;
- var foo, foo2;
+ int calls = 0;
+ dynamic foo, foo2;
HasField() {
- calls = 0;
foo = makeFoo(this);
foo2 = makeFoo2(this);
}
@@ -72,16 +71,6 @@
}
class NamedParametersWithConversionsTest {
- static checkException(thunk) {
- bool threw = false;
- try {
- thunk();
- } catch (e) {
- threw = true;
- }
- Expect.isTrue(threw);
- }
-
static testMethodCallSyntax(a) {
a.foo('');
a.foo('a', 111);
@@ -93,10 +82,12 @@
Expect.equals(7, a.calls);
- checkException(() => a.foo()); // Too few arguments.
- checkException(() => a.foo('abc', 1, 2, 3)); // Too many arguments.
- checkException(() => a.foo2('c', c: 1)); // Bad name.
- checkException(() => a.foo2('c', a: 111, c: 1)); // Bad name.
+ Expect.throwsNoSuchMethodError(() => a.foo()); // Too few arguments.
+ Expect.throwsNoSuchMethodError(
+ () => a.foo('abc', 1, 2, 3)); // Too many arguments.
+ Expect.throwsNoSuchMethodError(() => a.foo2('c', c: 1)); // Bad name.
+ Expect.throwsNoSuchMethodError(
+ () => a.foo2('c', a: 111, c: 1)); // Bad name.
Expect.equals(7, a.calls);
}
@@ -114,10 +105,11 @@
Expect.equals(7, a.calls);
- checkException(() => f()); // Too few arguments.
- checkException(() => f('abc', 1, 2, 3)); // Too many arguments.
- checkException(() => f2('c', c: 1)); // Bad name.
- checkException(() => f2('c', a: 111, c: 1)); // Bad name.
+ Expect.throwsNoSuchMethodError(() => f()); // Too few arguments.
+ Expect.throwsNoSuchMethodError(
+ () => f('abc', 1, 2, 3)); // Too many arguments.
+ Expect.throwsNoSuchMethodError(() => f2('c', c: 1)); // Bad name.
+ Expect.throwsNoSuchMethodError(() => f2('c', a: 111, c: 1)); // Bad name.
Expect.equals(7, a.calls);
}
diff --git a/tools/VERSION b/tools/VERSION
index 4af5629..b2782a7 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 10
PATCH 0
-PRERELEASE 111
+PRERELEASE 112
PRERELEASE_PATCH 0
\ No newline at end of file