[parser] Add missing handling of null-aware elements in if-else
Part of https://github.com/dart-lang/sdk/issues/55954
Change-Id: Ie22ff9ddf50f47e20b1cfbf11f01bdc900123619
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/388003
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
diff --git a/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart b/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
index a8add65..dfe8876 100644
--- a/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart
@@ -254,6 +254,8 @@
return new Nested(ifCondition, const IfElseComplete());
} else if (optional('...', next) || optional('...?', next)) {
return const ElseSpread();
+ } else if (optional('?', next)) {
+ return new Nested(nullAwareEntry, const IfElseComplete());
}
return const ElseEntry();
}
diff --git a/pkg/front_end/parser_testcases/null_aware_elements/nested.dart b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart
new file mode 100644
index 0000000..cef91a2
--- /dev/null
+++ b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart
@@ -0,0 +1,110 @@
+test1(List list, bool Function(dynamic) p, int? a) {
+ return {
+ for (var element in list)
+ if (p(element))
+ ?a
+ };
+}
+
+test2(List list, bool Function(dynamic) p, int? a, int? b) {
+ return {
+ for (var element in list)
+ if (p(element))
+ ?a
+ else
+ ?b
+ };
+}
+
+test3(List list, bool t, int? a) {
+ return {
+ if (t)
+ for (var element in list)
+ ?a
+ };
+}
+
+test4(List list, bool t, int? a, int? b) {
+ return {
+ if (t)
+ for (var element in list)
+ ?a
+ else
+ for (var element in list)
+ ?b
+ };
+}
+
+test5(List list, bool Function(dynamic) p, int? a) {
+ return {
+ for (var element in list)
+ if (p(element))
+ ?a: "value"
+ };
+}
+
+test6(List list, bool Function(dynamic) p, int? a, int? b) {
+ return {
+ for (var element in list)
+ if (p(element))
+ ?a: "value"
+ else
+ ?b: "value"
+ };
+}
+
+test7(List list, bool t, int? a) {
+ return {
+ if (t)
+ for (var element in list)
+ ?a: "value"
+ };
+}
+
+test8(List list, bool t, int? a, int? b) {
+ return {
+ if (t)
+ for (var element in list)
+ ?a: "value"
+ else
+ for (var element in list)
+ ?b: "value"
+ };
+}
+
+test9(List list, bool Function(dynamic) p, int? a) {
+ return {
+ for (var element in list)
+ if (p(element))
+ "key": ?a
+ };
+}
+
+test10(List list, bool Function(dynamic) p, int? a, int? b) {
+ return {
+ for (var element in list)
+ if (p(element))
+ "key": ?a
+ else
+ "key": ?b
+ };
+}
+
+test11(List list, bool t, int? a) {
+ return {
+ if (t)
+ for (var element in list)
+ "key": ?a
+ };
+}
+
+test12(List list, bool t, int? a, int? b) {
+ return {
+ if (t)
+ for (var element in list)
+ "key": ?a
+ else
+ for (var element in list)
+ "key": ?b
+ };
+}
diff --git a/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.expect b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.expect
new file mode 100644
index 0000000..71036ae
--- /dev/null
+++ b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.expect
@@ -0,0 +1,1211 @@
+beginCompilationUnit(test1)
+ beginMetadataStar(test1)
+ endMetadataStar(0)
+ beginTopLevelMember(test1)
+ beginTopLevelMethod(, null, null)
+ handleNoType()
+ handleIdentifier(test1, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ beginFunctionType(bool)
+ handleNoTypeVariables(()
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(Function)
+ handleType(bool, null)
+ beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ beginMetadataStar(dynamic)
+ endMetadataStar(0)
+ beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ handleIdentifier(dynamic, typeReference)
+ handleNoTypeArguments())
+ handleType(dynamic, null)
+ handleNoName())
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ endFunctionType(Function, null)
+ handleIdentifier(p, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ beginIfControlFlow(if)
+ handleIdentifier(p, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(element, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(element, ))
+ endArguments(1, (, ))
+ handleSend(p, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(a, })
+ handleNullAwareElement(?)
+ endIfControlFlow(a)
+ endForInControlFlow(a)
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test1, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test2)
+ endMetadataStar(0)
+ beginTopLevelMember(test2)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test2, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ beginFunctionType(bool)
+ handleNoTypeVariables(()
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(Function)
+ handleType(bool, null)
+ beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ beginMetadataStar(dynamic)
+ endMetadataStar(0)
+ beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ handleIdentifier(dynamic, typeReference)
+ handleNoTypeArguments())
+ handleType(dynamic, null)
+ handleNoName())
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ endFunctionType(Function, null)
+ handleIdentifier(p, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ beginIfControlFlow(if)
+ handleIdentifier(p, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(element, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(element, ))
+ endArguments(1, (, ))
+ handleSend(p, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(else)
+ handleNoArguments(else)
+ handleSend(a, else)
+ handleNullAwareElement(?)
+ handleElseControlFlow(else)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(b, })
+ handleNullAwareElement(?)
+ endIfElseControlFlow(b)
+ endForInControlFlow(b)
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test2, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test3)
+ endMetadataStar(0)
+ beginTopLevelMember(test3)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test3, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(t)
+ handleType(bool, null)
+ handleIdentifier(t, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginIfControlFlow(if)
+ handleIdentifier(t, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(t, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(a, })
+ handleNullAwareElement(?)
+ endForInControlFlow(a)
+ endIfControlFlow(a)
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test3, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test4)
+ endMetadataStar(0)
+ beginTopLevelMember(test4)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test4, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(t)
+ handleType(bool, null)
+ handleIdentifier(t, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginIfControlFlow(if)
+ handleIdentifier(t, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(t, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(else)
+ handleNoArguments(else)
+ handleSend(a, else)
+ handleNullAwareElement(?)
+ endForInControlFlow(a)
+ handleElseControlFlow(else)
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(b, })
+ handleNullAwareElement(?)
+ endForInControlFlow(b)
+ endIfElseControlFlow(b)
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test4, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test5)
+ endMetadataStar(0)
+ beginTopLevelMember(test5)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test5, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ beginFunctionType(bool)
+ handleNoTypeVariables(()
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(Function)
+ handleType(bool, null)
+ beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ beginMetadataStar(dynamic)
+ endMetadataStar(0)
+ beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ handleIdentifier(dynamic, typeReference)
+ handleNoTypeArguments())
+ handleType(dynamic, null)
+ handleNoName())
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ endFunctionType(Function, null)
+ handleIdentifier(p, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ beginIfControlFlow(if)
+ handleIdentifier(p, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(element, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(element, ))
+ endArguments(1, (, ))
+ handleSend(p, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(:)
+ handleNoArguments(:)
+ handleSend(a, :)
+ beginLiteralString("value")
+ endLiteralString(0, })
+ handleLiteralMapEntry(:, "value", ?, null)
+ endIfControlFlow("value")
+ endForInControlFlow("value")
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test5, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test6)
+ endMetadataStar(0)
+ beginTopLevelMember(test6)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test6, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ beginFunctionType(bool)
+ handleNoTypeVariables(()
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(Function)
+ handleType(bool, null)
+ beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ beginMetadataStar(dynamic)
+ endMetadataStar(0)
+ beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ handleIdentifier(dynamic, typeReference)
+ handleNoTypeArguments())
+ handleType(dynamic, null)
+ handleNoName())
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ endFunctionType(Function, null)
+ handleIdentifier(p, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ beginIfControlFlow(if)
+ handleIdentifier(p, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(element, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(element, ))
+ endArguments(1, (, ))
+ handleSend(p, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(:)
+ handleNoArguments(:)
+ handleSend(a, :)
+ beginLiteralString("value")
+ endLiteralString(0, else)
+ handleLiteralMapEntry(:, "value", ?, null)
+ handleElseControlFlow(else)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(:)
+ handleNoArguments(:)
+ handleSend(b, :)
+ beginLiteralString("value")
+ endLiteralString(0, })
+ handleLiteralMapEntry(:, "value", ?, null)
+ endIfElseControlFlow("value")
+ endForInControlFlow("value")
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test6, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test7)
+ endMetadataStar(0)
+ beginTopLevelMember(test7)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test7, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(t)
+ handleType(bool, null)
+ handleIdentifier(t, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginIfControlFlow(if)
+ handleIdentifier(t, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(t, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(:)
+ handleNoArguments(:)
+ handleSend(a, :)
+ beginLiteralString("value")
+ endLiteralString(0, })
+ handleLiteralMapEntry(:, "value", ?, null)
+ endForInControlFlow("value")
+ endIfControlFlow("value")
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test7, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test8)
+ endMetadataStar(0)
+ beginTopLevelMember(test8)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test8, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(t)
+ handleType(bool, null)
+ handleIdentifier(t, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginIfControlFlow(if)
+ handleIdentifier(t, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(t, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(:)
+ handleNoArguments(:)
+ handleSend(a, :)
+ beginLiteralString("value")
+ endLiteralString(0, else)
+ handleLiteralMapEntry(:, "value", ?, null)
+ endForInControlFlow("value")
+ handleElseControlFlow(else)
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(:)
+ handleNoArguments(:)
+ handleSend(b, :)
+ beginLiteralString("value")
+ endLiteralString(0, })
+ handleLiteralMapEntry(:, "value", ?, null)
+ endForInControlFlow("value")
+ endIfElseControlFlow("value")
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test8, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test9)
+ endMetadataStar(0)
+ beginTopLevelMember(test9)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test9, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ beginFunctionType(bool)
+ handleNoTypeVariables(()
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(Function)
+ handleType(bool, null)
+ beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ beginMetadataStar(dynamic)
+ endMetadataStar(0)
+ beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ handleIdentifier(dynamic, typeReference)
+ handleNoTypeArguments())
+ handleType(dynamic, null)
+ handleNoName())
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ endFunctionType(Function, null)
+ handleIdentifier(p, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ beginIfControlFlow(if)
+ handleIdentifier(p, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(element, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(element, ))
+ endArguments(1, (, ))
+ handleSend(p, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ beginLiteralString("key")
+ endLiteralString(0, :)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(a, })
+ handleLiteralMapEntry(:, a, null, ?)
+ endIfControlFlow(a)
+ endForInControlFlow(a)
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test9, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test10)
+ endMetadataStar(0)
+ beginTopLevelMember(test10)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test10, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ beginFunctionType(bool)
+ handleNoTypeVariables(()
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(Function)
+ handleType(bool, null)
+ beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ beginMetadataStar(dynamic)
+ endMetadataStar(0)
+ beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ handleIdentifier(dynamic, typeReference)
+ handleNoTypeArguments())
+ handleType(dynamic, null)
+ handleNoName())
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ endFunctionType(Function, null)
+ handleIdentifier(p, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ beginIfControlFlow(if)
+ handleIdentifier(p, expression)
+ handleNoTypeArguments(()
+ beginArguments(()
+ handleIdentifier(element, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(element, ))
+ endArguments(1, (, ))
+ handleSend(p, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ beginLiteralString("key")
+ endLiteralString(0, :)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(else)
+ handleNoArguments(else)
+ handleSend(a, else)
+ handleLiteralMapEntry(:, a, null, ?)
+ handleElseControlFlow(else)
+ beginLiteralString("key")
+ endLiteralString(0, :)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(b, })
+ handleLiteralMapEntry(:, b, null, ?)
+ endIfElseControlFlow(b)
+ endForInControlFlow(b)
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test10, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test11)
+ endMetadataStar(0)
+ beginTopLevelMember(test11)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test11, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(t)
+ handleType(bool, null)
+ handleIdentifier(t, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginIfControlFlow(if)
+ handleIdentifier(t, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(t, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ beginLiteralString("key")
+ endLiteralString(0, :)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(a, })
+ handleLiteralMapEntry(:, a, null, ?)
+ endForInControlFlow(a)
+ endIfControlFlow(a)
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test11, null, })
+ endTopLevelDeclaration(})
+ beginMetadataStar(test12)
+ endMetadataStar(0)
+ beginTopLevelMember(test12)
+ beginTopLevelMethod(}, null, null)
+ handleNoType(})
+ handleIdentifier(test12, topLevelFunctionDeclaration)
+ handleNoTypeVariables(()
+ beginFormalParameters((, MemberKind.TopLevelMethod)
+ beginMetadataStar(List)
+ endMetadataStar(0)
+ beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(List, typeReference)
+ handleNoTypeArguments(list)
+ handleType(List, null)
+ handleIdentifier(list, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(bool)
+ endMetadataStar(0)
+ beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(bool, typeReference)
+ handleNoTypeArguments(t)
+ handleType(bool, null)
+ handleIdentifier(t, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(a, formalParameterDeclaration)
+ handleFormalParameterWithoutValue(,)
+ endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ beginMetadataStar(int)
+ endMetadataStar(0)
+ beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ handleIdentifier(int, typeReference)
+ handleNoTypeArguments(?)
+ handleType(int, ?)
+ handleIdentifier(b, formalParameterDeclaration)
+ handleFormalParameterWithoutValue())
+ endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ handleAsyncModifier(null, null)
+ beginBlockFunctionBody({)
+ beginReturnStatement(return)
+ handleNoTypeArguments({)
+ beginIfControlFlow(if)
+ handleIdentifier(t, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(t, ))
+ handleParenthesizedCondition((, null, null)
+ handleThenControlFlow())
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ beginLiteralString("key")
+ endLiteralString(0, :)
+ handleIdentifier(a, expression)
+ handleNoTypeArguments(else)
+ handleNoArguments(else)
+ handleSend(a, else)
+ handleLiteralMapEntry(:, a, null, ?)
+ endForInControlFlow(a)
+ handleElseControlFlow(else)
+ beginForControlFlow(null, for)
+ beginMetadataStar(var)
+ endMetadataStar(0)
+ handleNoType(var)
+ beginVariablesDeclaration(element, null, var)
+ handleIdentifier(element, localVariableDeclaration)
+ beginInitializedIdentifier(element)
+ handleNoVariableInitializer(element)
+ endInitializedIdentifier(element)
+ endVariablesDeclaration(1, null)
+ handleForInitializerLocalVariableDeclaration(element, true)
+ beginForInExpression(list)
+ handleIdentifier(list, expression)
+ handleNoTypeArguments())
+ handleNoArguments())
+ handleSend(list, ))
+ endForInExpression())
+ handleForInLoopParts(null, for, (, null, in)
+ beginLiteralString("key")
+ endLiteralString(0, :)
+ handleIdentifier(b, expression)
+ handleNoTypeArguments(})
+ handleNoArguments(})
+ handleSend(b, })
+ handleLiteralMapEntry(:, b, null, ?)
+ endForInControlFlow(b)
+ endIfElseControlFlow(b)
+ handleLiteralSetOrMap(1, {, null, }, false)
+ endReturnStatement(true, return, ;)
+ endBlockFunctionBody(1, {, })
+ endTopLevelMethod(test12, null, })
+ endTopLevelDeclaration(})
+endCompilationUnit(12, )
diff --git a/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.intertwined.expect b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.intertwined.expect
new file mode 100644
index 0000000..91ed87c
--- /dev/null
+++ b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.intertwined.expect
@@ -0,0 +1,2406 @@
+parseUnit(test1)
+ skipErrorTokens(test1)
+ listener: beginCompilationUnit(test1)
+ syntheticPreviousToken(test1)
+ parseTopLevelDeclarationImpl(, DirectiveContext(DirectiveState.Unknown))
+ parseMetadataStar()
+ listener: beginMetadataStar(test1)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl()
+ listener: beginTopLevelMember(test1)
+ isReservedKeyword(()
+ parseTopLevelMethod(, null, null, , NoType(), null, test1, false)
+ listener: beginTopLevelMethod(, null, null)
+ listener: handleNoType()
+ ensureIdentifierPotentiallyRecovered(, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test1, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test1)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test1, test1, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test1, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: beginFunctionType(bool)
+ listener: handleNoTypeVariables(()
+ ensureIdentifier(,, typeReference)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(Function)
+ listener: handleType(bool, null)
+ parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
+ parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+ listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ parseMetadataStar(()
+ listener: beginMetadataStar(dynamic)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ listener: handleIdentifier(dynamic, typeReference)
+ listener: handleNoTypeArguments())
+ listener: handleType(dynamic, null)
+ listener: handleNoName())
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ listener: endFunctionType(Function, null)
+ ensureIdentifier(), formalParameterDeclaration)
+ listener: handleIdentifier(p, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ looksLikeFunctionBody())
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(p, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(p)
+ parseArguments(p)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(element, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(element)
+ listener: handleNoArguments())
+ listener: handleSend(element, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(p, ))
+ ensureCloseParen(), ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(})
+ listener: handleSend(a, })
+ listener: handleNullAwareElement(?)
+ listener: endIfControlFlow(a)
+ listener: endForInControlFlow(a)
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test1, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test2)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test2)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test2, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test2, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test2)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test2, test2, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test2, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: beginFunctionType(bool)
+ listener: handleNoTypeVariables(()
+ ensureIdentifier(,, typeReference)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(Function)
+ listener: handleType(bool, null)
+ parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
+ parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+ listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ parseMetadataStar(()
+ listener: beginMetadataStar(dynamic)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ listener: handleIdentifier(dynamic, typeReference)
+ listener: handleNoTypeArguments())
+ listener: handleType(dynamic, null)
+ listener: handleNoName())
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ listener: endFunctionType(Function, null)
+ ensureIdentifier(), formalParameterDeclaration)
+ listener: handleIdentifier(p, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ looksLikeFunctionBody())
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(p, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(p)
+ parseArguments(p)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(element, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(element)
+ listener: handleNoArguments())
+ listener: handleSend(element, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(p, ))
+ ensureCloseParen(), ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(else)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(else)
+ listener: handleSend(a, else)
+ listener: handleNullAwareElement(?)
+ listener: handleElseControlFlow(else)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(})
+ listener: handleSend(b, })
+ listener: handleNullAwareElement(?)
+ listener: endIfElseControlFlow(b)
+ listener: endForInControlFlow(b)
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test2, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test3)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test3)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test3, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test3, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test3)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test3, test3, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test3, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(t)
+ listener: handleType(bool, null)
+ ensureIdentifier(bool, formalParameterDeclaration)
+ listener: handleIdentifier(t, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(t, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(t)
+ listener: handleNoArguments())
+ listener: handleSend(t, ))
+ ensureCloseParen(t, ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(})
+ listener: handleSend(a, })
+ listener: handleNullAwareElement(?)
+ listener: endForInControlFlow(a)
+ listener: endIfControlFlow(a)
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test3, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test4)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test4)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test4, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test4, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test4)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test4, test4, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test4, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(t)
+ listener: handleType(bool, null)
+ ensureIdentifier(bool, formalParameterDeclaration)
+ listener: handleIdentifier(t, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(t, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(t)
+ listener: handleNoArguments())
+ listener: handleSend(t, ))
+ ensureCloseParen(t, ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(else)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(else)
+ listener: handleSend(a, else)
+ listener: handleNullAwareElement(?)
+ listener: endForInControlFlow(a)
+ listener: handleElseControlFlow(else)
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(})
+ listener: handleSend(b, })
+ listener: handleNullAwareElement(?)
+ listener: endForInControlFlow(b)
+ listener: endIfElseControlFlow(b)
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test4, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test5)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test5)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test5, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test5, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test5)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test5, test5, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test5, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: beginFunctionType(bool)
+ listener: handleNoTypeVariables(()
+ ensureIdentifier(,, typeReference)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(Function)
+ listener: handleType(bool, null)
+ parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
+ parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+ listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ parseMetadataStar(()
+ listener: beginMetadataStar(dynamic)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ listener: handleIdentifier(dynamic, typeReference)
+ listener: handleNoTypeArguments())
+ listener: handleType(dynamic, null)
+ listener: handleNoName())
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ listener: endFunctionType(Function, null)
+ ensureIdentifier(), formalParameterDeclaration)
+ listener: handleIdentifier(p, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ looksLikeFunctionBody())
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(p, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(p)
+ parseArguments(p)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(element, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(element)
+ listener: handleNoArguments())
+ listener: handleSend(element, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(p, ))
+ ensureCloseParen(), ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(:)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(:)
+ listener: handleSend(a, :)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(:, true, ConstantPatternContext.none)
+ parsePrimary(:, expression, ConstantPatternContext.none)
+ parseLiteralString(:)
+ parseSingleLiteralString(:)
+ listener: beginLiteralString("value")
+ listener: endLiteralString(0, })
+ listener: handleLiteralMapEntry(:, "value", ?, null)
+ listener: endIfControlFlow("value")
+ listener: endForInControlFlow("value")
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test5, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test6)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test6)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test6, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test6, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test6)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test6, test6, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test6, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: beginFunctionType(bool)
+ listener: handleNoTypeVariables(()
+ ensureIdentifier(,, typeReference)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(Function)
+ listener: handleType(bool, null)
+ parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
+ parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+ listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ parseMetadataStar(()
+ listener: beginMetadataStar(dynamic)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ listener: handleIdentifier(dynamic, typeReference)
+ listener: handleNoTypeArguments())
+ listener: handleType(dynamic, null)
+ listener: handleNoName())
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ listener: endFunctionType(Function, null)
+ ensureIdentifier(), formalParameterDeclaration)
+ listener: handleIdentifier(p, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ looksLikeFunctionBody())
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(p, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(p)
+ parseArguments(p)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(element, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(element)
+ listener: handleNoArguments())
+ listener: handleSend(element, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(p, ))
+ ensureCloseParen(), ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(:)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(:)
+ listener: handleSend(a, :)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(:, true, ConstantPatternContext.none)
+ parsePrimary(:, expression, ConstantPatternContext.none)
+ parseLiteralString(:)
+ parseSingleLiteralString(:)
+ listener: beginLiteralString("value")
+ listener: endLiteralString(0, else)
+ listener: handleLiteralMapEntry(:, "value", ?, null)
+ listener: handleElseControlFlow(else)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(:)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(:)
+ listener: handleSend(b, :)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(:, true, ConstantPatternContext.none)
+ parsePrimary(:, expression, ConstantPatternContext.none)
+ parseLiteralString(:)
+ parseSingleLiteralString(:)
+ listener: beginLiteralString("value")
+ listener: endLiteralString(0, })
+ listener: handleLiteralMapEntry(:, "value", ?, null)
+ listener: endIfElseControlFlow("value")
+ listener: endForInControlFlow("value")
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test6, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test7)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test7)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test7, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test7, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test7)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test7, test7, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test7, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(t)
+ listener: handleType(bool, null)
+ ensureIdentifier(bool, formalParameterDeclaration)
+ listener: handleIdentifier(t, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(t, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(t)
+ listener: handleNoArguments())
+ listener: handleSend(t, ))
+ ensureCloseParen(t, ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(:)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(:)
+ listener: handleSend(a, :)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(:, true, ConstantPatternContext.none)
+ parsePrimary(:, expression, ConstantPatternContext.none)
+ parseLiteralString(:)
+ parseSingleLiteralString(:)
+ listener: beginLiteralString("value")
+ listener: endLiteralString(0, })
+ listener: handleLiteralMapEntry(:, "value", ?, null)
+ listener: endForInControlFlow("value")
+ listener: endIfControlFlow("value")
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test7, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test8)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test8)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test8, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test8, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test8)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test8, test8, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test8, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(t)
+ listener: handleType(bool, null)
+ ensureIdentifier(bool, formalParameterDeclaration)
+ listener: handleIdentifier(t, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(t, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(t)
+ listener: handleNoArguments())
+ listener: handleSend(t, ))
+ ensureCloseParen(t, ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(:)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(:)
+ listener: handleSend(a, :)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(:, true, ConstantPatternContext.none)
+ parsePrimary(:, expression, ConstantPatternContext.none)
+ parseLiteralString(:)
+ parseSingleLiteralString(:)
+ listener: beginLiteralString("value")
+ listener: endLiteralString(0, else)
+ listener: handleLiteralMapEntry(:, "value", ?, null)
+ listener: endForInControlFlow("value")
+ listener: handleElseControlFlow(else)
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(:)
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(:)
+ listener: handleSend(b, :)
+ parseExpression(:)
+ parsePrecedenceExpression(:, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(:, true, ConstantPatternContext.none)
+ parsePrimary(:, expression, ConstantPatternContext.none)
+ parseLiteralString(:)
+ parseSingleLiteralString(:)
+ listener: beginLiteralString("value")
+ listener: endLiteralString(0, })
+ listener: handleLiteralMapEntry(:, "value", ?, null)
+ listener: endForInControlFlow("value")
+ listener: endIfElseControlFlow("value")
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test8, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test9)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test9)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test9, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test9, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test9)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test9, test9, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test9, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: beginFunctionType(bool)
+ listener: handleNoTypeVariables(()
+ ensureIdentifier(,, typeReference)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(Function)
+ listener: handleType(bool, null)
+ parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
+ parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+ listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ parseMetadataStar(()
+ listener: beginMetadataStar(dynamic)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ listener: handleIdentifier(dynamic, typeReference)
+ listener: handleNoTypeArguments())
+ listener: handleType(dynamic, null)
+ listener: handleNoName())
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ listener: endFunctionType(Function, null)
+ ensureIdentifier(), formalParameterDeclaration)
+ listener: handleIdentifier(p, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ looksLikeFunctionBody())
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(p, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(p)
+ parseArguments(p)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(element, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(element)
+ listener: handleNoArguments())
+ listener: handleSend(element, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(p, ))
+ ensureCloseParen(), ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ parseExpression())
+ parsePrecedenceExpression(), 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(), true, ConstantPatternContext.none)
+ parsePrimary(), expression, ConstantPatternContext.none)
+ parseLiteralString())
+ parseSingleLiteralString())
+ listener: beginLiteralString("key")
+ listener: endLiteralString(0, :)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(})
+ listener: handleSend(a, })
+ listener: handleLiteralMapEntry(:, a, null, ?)
+ listener: endIfControlFlow(a)
+ listener: endForInControlFlow(a)
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test9, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test10)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test10)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test10, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test10, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test10)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test10, test10, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test10, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: beginFunctionType(bool)
+ listener: handleNoTypeVariables(()
+ ensureIdentifier(,, typeReference)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(Function)
+ listener: handleType(bool, null)
+ parseFormalParametersRequiredOpt(Function, MemberKind.GeneralizedFunctionType)
+ parseFormalParametersRest((, MemberKind.GeneralizedFunctionType)
+ listener: beginFormalParameters((, MemberKind.GeneralizedFunctionType)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ parseMetadataStar(()
+ listener: beginMetadataStar(dynamic)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(dynamic, MemberKind.GeneralizedFunctionType, null, null, null)
+ listener: handleIdentifier(dynamic, typeReference)
+ listener: handleNoTypeArguments())
+ listener: handleType(dynamic, null)
+ listener: handleNoName())
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, ), null, null, FormalParameterKind.requiredPositional, MemberKind.GeneralizedFunctionType)
+ listener: endFormalParameters(1, (, ), MemberKind.GeneralizedFunctionType)
+ listener: endFunctionType(Function, null)
+ ensureIdentifier(), formalParameterDeclaration)
+ listener: handleIdentifier(p, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, p, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ looksLikeFunctionBody())
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(p, expression)
+ listener: handleNoTypeArguments(()
+ parseArgumentsOpt(p)
+ parseArguments(p)
+ parseArgumentsRest(()
+ listener: beginArguments(()
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(element, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(element)
+ listener: handleNoArguments())
+ listener: handleSend(element, ))
+ listener: endArguments(1, (, ))
+ listener: handleSend(p, ))
+ ensureCloseParen(), ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ parseExpression())
+ parsePrecedenceExpression(), 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(), true, ConstantPatternContext.none)
+ parsePrimary(), expression, ConstantPatternContext.none)
+ parseLiteralString())
+ parseSingleLiteralString())
+ listener: beginLiteralString("key")
+ listener: endLiteralString(0, :)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(else)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(else)
+ listener: handleSend(a, else)
+ listener: handleLiteralMapEntry(:, a, null, ?)
+ listener: handleElseControlFlow(else)
+ parseExpression(else)
+ parsePrecedenceExpression(else, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(else, true, ConstantPatternContext.none)
+ parsePrimary(else, expression, ConstantPatternContext.none)
+ parseLiteralString(else)
+ parseSingleLiteralString(else)
+ listener: beginLiteralString("key")
+ listener: endLiteralString(0, :)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(})
+ listener: handleSend(b, })
+ listener: handleLiteralMapEntry(:, b, null, ?)
+ listener: endIfElseControlFlow(b)
+ listener: endForInControlFlow(b)
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test10, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test11)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test11)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test11, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test11, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test11)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test11, test11, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test11, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(t)
+ listener: handleType(bool, null)
+ ensureIdentifier(bool, formalParameterDeclaration)
+ listener: handleIdentifier(t, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(3, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(t, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(t)
+ listener: handleNoArguments())
+ listener: handleSend(t, ))
+ ensureCloseParen(t, ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ parseExpression())
+ parsePrecedenceExpression(), 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(), true, ConstantPatternContext.none)
+ parsePrimary(), expression, ConstantPatternContext.none)
+ parseLiteralString())
+ parseSingleLiteralString())
+ listener: beginLiteralString("key")
+ listener: endLiteralString(0, :)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(})
+ listener: handleSend(a, })
+ listener: handleLiteralMapEntry(:, a, null, ?)
+ listener: endForInControlFlow(a)
+ listener: endIfControlFlow(a)
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test11, null, })
+ listener: endTopLevelDeclaration(})
+ parseTopLevelDeclarationImpl(}, DirectiveContext(DirectiveState.Declarations))
+ parseMetadataStar(})
+ listener: beginMetadataStar(test12)
+ listener: endMetadataStar(0)
+ parseTopLevelMemberImpl(})
+ listener: beginTopLevelMember(test12)
+ isReservedKeyword(()
+ parseTopLevelMethod(}, null, null, }, NoType(), null, test12, false)
+ listener: beginTopLevelMethod(}, null, null)
+ listener: handleNoType(})
+ ensureIdentifierPotentiallyRecovered(}, topLevelFunctionDeclaration, false)
+ listener: handleIdentifier(test12, topLevelFunctionDeclaration)
+ parseMethodTypeVar(test12)
+ listener: handleNoTypeVariables(()
+ parseGetterOrFormalParameters(test12, test12, false, MemberKind.TopLevelMethod)
+ parseFormalParameters(test12, MemberKind.TopLevelMethod)
+ parseFormalParametersRest((, MemberKind.TopLevelMethod)
+ listener: beginFormalParameters((, MemberKind.TopLevelMethod)
+ parseFormalParameter((, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(()
+ listener: beginMetadataStar(List)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(List, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(List, typeReference)
+ listener: handleNoTypeArguments(list)
+ listener: handleType(List, null)
+ ensureIdentifier(List, formalParameterDeclaration)
+ listener: handleIdentifier(list, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, list, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(bool)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(bool, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(bool, typeReference)
+ listener: handleNoTypeArguments(t)
+ listener: handleType(bool, null)
+ ensureIdentifier(bool, formalParameterDeclaration)
+ listener: handleIdentifier(t, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, t, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(a, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue(,)
+ listener: endFormalParameter(null, null, null, a, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseFormalParameter(,, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ parseMetadataStar(,)
+ listener: beginMetadataStar(int)
+ listener: endMetadataStar(0)
+ listener: beginFormalParameter(int, MemberKind.TopLevelMethod, null, null, null)
+ listener: handleIdentifier(int, typeReference)
+ listener: handleNoTypeArguments(?)
+ listener: handleType(int, ?)
+ ensureIdentifier(?, formalParameterDeclaration)
+ listener: handleIdentifier(b, formalParameterDeclaration)
+ listener: handleFormalParameterWithoutValue())
+ listener: endFormalParameter(null, null, null, b, null, null, FormalParameterKind.requiredPositional, MemberKind.TopLevelMethod)
+ listener: endFormalParameters(4, (, ), MemberKind.TopLevelMethod)
+ parseAsyncModifierOpt())
+ listener: handleAsyncModifier(null, null)
+ inPlainSync()
+ parseFunctionBody(), false, false)
+ listener: beginBlockFunctionBody({)
+ notEofOrValue(}, return)
+ parseStatement({)
+ parseStatementX({)
+ parseReturnStatement({)
+ listener: beginReturnStatement(return)
+ parseExpression(return)
+ parsePrecedenceExpression(return, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(return, true, ConstantPatternContext.none)
+ parsePrimary(return, expression, ConstantPatternContext.none)
+ listener: handleNoTypeArguments({)
+ parseLiteralSetOrMapSuffix(return, null)
+ listener: beginIfControlFlow(if)
+ ensureParenthesizedCondition(if, allowCase: false)
+ parseExpressionInParenthesisRest((, allowCase: false)
+ parseExpression(()
+ parsePrecedenceExpression((, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression((, true, ConstantPatternContext.none)
+ parsePrimary((, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral((, expression, ConstantPatternContext.none)
+ parseSend((, expression, ConstantPatternContext.none)
+ isNextIdentifier(()
+ ensureIdentifier((, expression)
+ listener: handleIdentifier(t, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(t)
+ listener: handleNoArguments())
+ listener: handleSend(t, ))
+ ensureCloseParen(t, ()
+ listener: handleParenthesizedCondition((, null, null)
+ listener: handleThenControlFlow())
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ parseExpression())
+ parsePrecedenceExpression(), 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(), true, ConstantPatternContext.none)
+ parsePrimary(), expression, ConstantPatternContext.none)
+ parseLiteralString())
+ parseSingleLiteralString())
+ listener: beginLiteralString("key")
+ listener: endLiteralString(0, :)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(a, expression)
+ listener: handleNoTypeArguments(else)
+ parseArgumentsOpt(a)
+ listener: handleNoArguments(else)
+ listener: handleSend(a, else)
+ listener: handleLiteralMapEntry(:, a, null, ?)
+ listener: endForInControlFlow(a)
+ listener: handleElseControlFlow(else)
+ listener: beginForControlFlow(null, for)
+ parseForLoopPartsStart(null, for, ForPartsContext(null))
+ parseExpressionStatementOrDeclaration((, ForPartsContext(null))
+ parseExpressionStatementOrDeclarationAfterModifiers(var, (, null, var, null, ForPartsContext(null))
+ listener: beginMetadataStar(var)
+ listener: endMetadataStar(0)
+ listener: handleNoType(var)
+ listener: beginVariablesDeclaration(element, null, var)
+ parseForLoopPartsMid(var, null, for)
+ parseVariablesDeclarationRest(var, false)
+ parseOptionallyInitializedIdentifier(var)
+ ensureIdentifier(var, localVariableDeclaration)
+ listener: handleIdentifier(element, localVariableDeclaration)
+ listener: beginInitializedIdentifier(element)
+ parseVariableInitializerOpt(element)
+ listener: handleNoVariableInitializer(element)
+ listener: endInitializedIdentifier(element)
+ listener: endVariablesDeclaration(1, null)
+ listener: handleForInitializerLocalVariableDeclaration(element, true)
+ parseForInLoopPartsRest(element, null, for, null, element)
+ listener: beginForInExpression(list)
+ parseExpression(in)
+ parsePrecedenceExpression(in, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(in, true, ConstantPatternContext.none)
+ parsePrimary(in, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(in, expression, ConstantPatternContext.none)
+ parseSend(in, expression, ConstantPatternContext.none)
+ isNextIdentifier(in)
+ ensureIdentifier(in, expression)
+ listener: handleIdentifier(list, expression)
+ listener: handleNoTypeArguments())
+ parseArgumentsOpt(list)
+ listener: handleNoArguments())
+ listener: handleSend(list, ))
+ ensureCloseParen(list, ()
+ listener: endForInExpression())
+ listener: handleForInLoopParts(null, for, (, null, in)
+ parseExpression())
+ parsePrecedenceExpression(), 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(), true, ConstantPatternContext.none)
+ parsePrimary(), expression, ConstantPatternContext.none)
+ parseLiteralString())
+ parseSingleLiteralString())
+ listener: beginLiteralString("key")
+ listener: endLiteralString(0, :)
+ parseExpression(?)
+ parsePrecedenceExpression(?, 1, true, ConstantPatternContext.none)
+ parseUnaryExpression(?, true, ConstantPatternContext.none)
+ parsePrimary(?, expression, ConstantPatternContext.none)
+ parseSendOrFunctionLiteral(?, expression, ConstantPatternContext.none)
+ parseSend(?, expression, ConstantPatternContext.none)
+ isNextIdentifier(?)
+ ensureIdentifier(?, expression)
+ listener: handleIdentifier(b, expression)
+ listener: handleNoTypeArguments(})
+ parseArgumentsOpt(b)
+ listener: handleNoArguments(})
+ listener: handleSend(b, })
+ listener: handleLiteralMapEntry(:, b, null, ?)
+ listener: endForInControlFlow(b)
+ listener: endIfElseControlFlow(b)
+ listener: handleLiteralSetOrMap(1, {, null, }, false)
+ ensureSemicolon(})
+ listener: endReturnStatement(true, return, ;)
+ inGenerator()
+ notEofOrValue(}, })
+ listener: endBlockFunctionBody(1, {, })
+ listener: endTopLevelMethod(test12, null, })
+ listener: endTopLevelDeclaration(})
+ reportAllErrorTokens(test1)
+ listener: endCompilationUnit(12, )
diff --git a/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.parser.expect b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.parser.expect
new file mode 100644
index 0000000..dcd3e0d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.parser.expect
@@ -0,0 +1,223 @@
+test1(List list, bool Function(dynamic) p, int? a) {
+return {
+for (var element in list)
+if (p(element))
+?a
+};
+}
+
+test2(List list, bool Function(dynamic) p, int? a, int? b) {
+return {
+for (var element in list)
+if (p(element))
+?a
+else
+?b
+};
+}
+
+test3(List list, bool t, int? a) {
+return {
+if (t)
+for (var element in list)
+?a
+};
+}
+
+test4(List list, bool t, int? a, int? b) {
+return {
+if (t)
+for (var element in list)
+?a
+else
+for (var element in list)
+?b
+};
+}
+
+test5(List list, bool Function(dynamic) p, int? a) {
+return {
+for (var element in list)
+if (p(element))
+?a: "value"
+};
+}
+
+test6(List list, bool Function(dynamic) p, int? a, int? b) {
+return {
+for (var element in list)
+if (p(element))
+?a: "value"
+else
+?b: "value"
+};
+}
+
+test7(List list, bool t, int? a) {
+return {
+if (t)
+for (var element in list)
+?a: "value"
+};
+}
+
+test8(List list, bool t, int? a, int? b) {
+return {
+if (t)
+for (var element in list)
+?a: "value"
+else
+for (var element in list)
+?b: "value"
+};
+}
+
+test9(List list, bool Function(dynamic) p, int? a) {
+return {
+for (var element in list)
+if (p(element))
+"key": ?a
+};
+}
+
+test10(List list, bool Function(dynamic) p, int? a, int? b) {
+return {
+for (var element in list)
+if (p(element))
+"key": ?a
+else
+"key": ?b
+};
+}
+
+test11(List list, bool t, int? a) {
+return {
+if (t)
+for (var element in list)
+"key": ?a
+};
+}
+
+test12(List list, bool t, int? a, int? b) {
+return {
+if (t)
+for (var element in list)
+"key": ?a
+else
+for (var element in list)
+"key": ?b
+};
+}
+
+
+test1[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+?[SimpleToken]a[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test2[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+?[SimpleToken]a[StringToken]
+else[KeywordToken]
+?[SimpleToken]b[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test3[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]a[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test4[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]a[StringToken]
+else[KeywordToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]b[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test5[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+?[SimpleToken]a[StringToken]:[SimpleToken] "value"[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test6[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+?[SimpleToken]a[StringToken]:[SimpleToken] "value"[StringToken]
+else[KeywordToken]
+?[SimpleToken]b[StringToken]:[SimpleToken] "value"[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test7[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]a[StringToken]:[SimpleToken] "value"[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test8[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]a[StringToken]:[SimpleToken] "value"[StringToken]
+else[KeywordToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]b[StringToken]:[SimpleToken] "value"[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test9[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]a[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test10[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]a[StringToken]
+else[KeywordToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]b[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test11[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]a[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test12[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]a[StringToken]
+else[KeywordToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]b[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]
diff --git a/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.scanner.expect b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.scanner.expect
new file mode 100644
index 0000000..dcd3e0d
--- /dev/null
+++ b/pkg/front_end/parser_testcases/null_aware_elements/nested.dart.scanner.expect
@@ -0,0 +1,223 @@
+test1(List list, bool Function(dynamic) p, int? a) {
+return {
+for (var element in list)
+if (p(element))
+?a
+};
+}
+
+test2(List list, bool Function(dynamic) p, int? a, int? b) {
+return {
+for (var element in list)
+if (p(element))
+?a
+else
+?b
+};
+}
+
+test3(List list, bool t, int? a) {
+return {
+if (t)
+for (var element in list)
+?a
+};
+}
+
+test4(List list, bool t, int? a, int? b) {
+return {
+if (t)
+for (var element in list)
+?a
+else
+for (var element in list)
+?b
+};
+}
+
+test5(List list, bool Function(dynamic) p, int? a) {
+return {
+for (var element in list)
+if (p(element))
+?a: "value"
+};
+}
+
+test6(List list, bool Function(dynamic) p, int? a, int? b) {
+return {
+for (var element in list)
+if (p(element))
+?a: "value"
+else
+?b: "value"
+};
+}
+
+test7(List list, bool t, int? a) {
+return {
+if (t)
+for (var element in list)
+?a: "value"
+};
+}
+
+test8(List list, bool t, int? a, int? b) {
+return {
+if (t)
+for (var element in list)
+?a: "value"
+else
+for (var element in list)
+?b: "value"
+};
+}
+
+test9(List list, bool Function(dynamic) p, int? a) {
+return {
+for (var element in list)
+if (p(element))
+"key": ?a
+};
+}
+
+test10(List list, bool Function(dynamic) p, int? a, int? b) {
+return {
+for (var element in list)
+if (p(element))
+"key": ?a
+else
+"key": ?b
+};
+}
+
+test11(List list, bool t, int? a) {
+return {
+if (t)
+for (var element in list)
+"key": ?a
+};
+}
+
+test12(List list, bool t, int? a, int? b) {
+return {
+if (t)
+for (var element in list)
+"key": ?a
+else
+for (var element in list)
+"key": ?b
+};
+}
+
+
+test1[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+?[SimpleToken]a[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test2[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+?[SimpleToken]a[StringToken]
+else[KeywordToken]
+?[SimpleToken]b[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test3[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]a[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test4[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]a[StringToken]
+else[KeywordToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]b[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test5[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+?[SimpleToken]a[StringToken]:[SimpleToken] "value"[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test6[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+?[SimpleToken]a[StringToken]:[SimpleToken] "value"[StringToken]
+else[KeywordToken]
+?[SimpleToken]b[StringToken]:[SimpleToken] "value"[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test7[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]a[StringToken]:[SimpleToken] "value"[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test8[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]a[StringToken]:[SimpleToken] "value"[StringToken]
+else[KeywordToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+?[SimpleToken]b[StringToken]:[SimpleToken] "value"[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test9[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]a[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test10[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] Function[KeywordToken]([BeginToken]dynamic[KeywordToken])[SimpleToken] p[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+if[KeywordToken] ([BeginToken]p[StringToken]([BeginToken]element[StringToken])[SimpleToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]a[StringToken]
+else[KeywordToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]b[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test11[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]a[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+
+test12[StringToken]([BeginToken]List[StringToken] list[StringToken],[SimpleToken] bool[StringToken] t[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] a[StringToken],[SimpleToken] int[StringToken]?[SimpleToken] b[StringToken])[SimpleToken] {[BeginToken]
+return[KeywordToken] {[BeginToken]
+if[KeywordToken] ([BeginToken]t[StringToken])[SimpleToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]a[StringToken]
+else[KeywordToken]
+for[KeywordToken] ([BeginToken]var[KeywordToken] element[StringToken] in[KeywordToken] list[StringToken])[SimpleToken]
+"key"[StringToken]:[SimpleToken] ?[SimpleToken]b[StringToken]
+}[SimpleToken];[SimpleToken]
+}[SimpleToken]
+[SimpleToken]