Update endFunctionType event to take questionMark token
... which in this CL will always null.
This is another step when adding NNDB support as outlined in
https://github.com/dart-lang/language/issues/110
Change-Id: I3974fcb885c63be4af9d1007258383f3f8191ae0
Reviewed-on: https://dart-review.googlesource.com/c/87080
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index aebb4f0..a83282c 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -1118,9 +1118,10 @@
}
@override
- void endFunctionType(Token functionToken) {
+ void endFunctionType(Token functionToken, Token questionMark) {
assert(optional('Function', functionToken));
debugEvent("FunctionType");
+ reportErrorIfNullableType(questionMark);
FormalParameterList parameters = pop();
TypeAnnotation returnType = pop();
diff --git a/pkg/analyzer/test/generated/parser_fasta_listener.dart b/pkg/analyzer/test/generated/parser_fasta_listener.dart
index f692d58..d6646c3 100644
--- a/pkg/analyzer/test/generated/parser_fasta_listener.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_listener.dart
@@ -776,9 +776,9 @@
}
@override
- void endFunctionType(Token functionToken) {
+ void endFunctionType(Token functionToken, Token questionMark) {
end('FunctionType');
- super.endFunctionType(functionToken);
+ super.endFunctionType(functionToken, questionMark);
}
@override
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 75ec6e0..5d3ad9e 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -2540,8 +2540,9 @@
}
@override
- void endFunctionType(Token functionToken) {
+ void endFunctionType(Token functionToken, Token questionMark) {
debugEvent("FunctionType");
+ reportErrorIfNullableType(questionMark);
FormalParameters formals = pop();
UnresolvedType<KernelTypeBuilder> returnType = pop();
List<KernelTypeVariableBuilder> typeVariables = pop();
diff --git a/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart b/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart
index f297798..c789a59 100644
--- a/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart
+++ b/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart
@@ -625,8 +625,8 @@
}
@override
- void endFunctionType(Token functionToken) {
- listener?.endFunctionType(functionToken);
+ void endFunctionType(Token functionToken, Token questionMark) {
+ listener?.endFunctionType(functionToken, questionMark);
}
@override
diff --git a/pkg/front_end/lib/src/fasta/parser/listener.dart b/pkg/front_end/lib/src/fasta/parser/listener.dart
index 720f244..aba67e3 100644
--- a/pkg/front_end/lib/src/fasta/parser/listener.dart
+++ b/pkg/front_end/lib/src/fasta/parser/listener.dart
@@ -963,7 +963,7 @@
/// - Type variables
/// - Return type
/// - Formal parameters
- void endFunctionType(Token functionToken) {
+ void endFunctionType(Token functionToken, Token questionMark) {
logEvent("FunctionType");
}
diff --git a/pkg/front_end/lib/src/fasta/parser/type_info_impl.dart b/pkg/front_end/lib/src/fasta/parser/type_info_impl.dart
index ae7c464..2b87c5b 100644
--- a/pkg/front_end/lib/src/fasta/parser/type_info_impl.dart
+++ b/pkg/front_end/lib/src/fasta/parser/type_info_impl.dart
@@ -469,7 +469,7 @@
--endGroupIndex;
token = parser.parseFormalParametersRequiredOpt(
token, MemberKind.GeneralizedFunctionType);
- parser.listener.endFunctionType(functionToken);
+ parser.listener.endFunctionType(functionToken, null);
}
// There are two situations in which the [token] != [end]:
diff --git a/pkg/front_end/lib/src/fasta/source/diet_listener.dart b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
index e8015fc..8adf73a 100644
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
@@ -223,7 +223,7 @@
}
@override
- void endFunctionType(Token functionToken) {
+ void endFunctionType(Token functionToken, Token questionMark) {
debugEvent("FunctionType");
discard(1);
}
diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
index c39ef6a..4bf8f66 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -1184,8 +1184,9 @@
}
@override
- void endFunctionType(Token functionToken) {
+ void endFunctionType(Token functionToken, Token questionMark) {
debugEvent("FunctionType");
+ reportErrorIfNullableType(questionMark);
List<FormalParameterBuilder> formals = pop();
pop(); // formals offset
TypeBuilder returnType = pop();
diff --git a/pkg/front_end/lib/src/fasta/source/type_promotion_look_ahead_listener.dart b/pkg/front_end/lib/src/fasta/source/type_promotion_look_ahead_listener.dart
index 1fa2e5d..35194502 100644
--- a/pkg/front_end/lib/src/fasta/source/type_promotion_look_ahead_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/type_promotion_look_ahead_listener.dart
@@ -619,7 +619,7 @@
}
@override
- void endFunctionType(Token functionToken) {
+ void endFunctionType(Token functionToken, Token questionMark) {
debugEvent("FunctionType", functionToken);
}
diff --git a/pkg/front_end/test/fasta/parser/type_info_test.dart b/pkg/front_end/test/fasta/parser/type_info_test.dart
index fedbeca..7b9b003 100644
--- a/pkg/front_end/test/fasta/parser/type_info_test.dart
+++ b/pkg/front_end/test/fasta/parser/type_info_test.dart
@@ -700,7 +700,7 @@
'handleNoType ',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
expectComplexInfo('Function<T>() m', expectedAfter: 'm', expectedCalls: [
'beginTypeVariables <',
@@ -716,7 +716,7 @@
'handleNoType ',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
expectComplexInfo('Function(int) m', expectedAfter: 'm', expectedCalls: [
'handleNoTypeVariables (',
@@ -734,7 +734,7 @@
'endFormalParameter null null ) FormalParameterKind.mandatory '
'MemberKind.GeneralizedFunctionType',
'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
expectComplexInfo('Function<T>(int) m', expectedAfter: 'm', expectedCalls: [
'beginTypeVariables <',
@@ -760,7 +760,7 @@
'endFormalParameter null null ) FormalParameterKind.mandatory'
' MemberKind.GeneralizedFunctionType',
'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
expectComplexInfo('Function(int x)', required: true);
@@ -796,7 +796,7 @@
'handleType C null',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
}
@@ -878,7 +878,7 @@
'handleType C null',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
expectComplexInfo('C<T> Function<T>(int x) Function<T>(int x)',
required: false, expectedAfter: 'Function');
@@ -992,7 +992,7 @@
'handleType C null',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
expectComplexInfo('C.a Function<T>(int x) Function<T>(int x)',
required: false, expectedAfter: 'Function');
@@ -1071,7 +1071,7 @@
'endFormalParameter null null x FormalParameterKind.mandatory '
'MemberKind.GeneralizedFunctionType',
'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'beginMetadataStar int',
'endMetadataStar 0',
@@ -1084,7 +1084,7 @@
'endFormalParameter null null x FormalParameterKind.mandatory '
'MemberKind.GeneralizedFunctionType',
'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
}
@@ -1097,7 +1097,7 @@
'handleVoidKeyword void',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
}
@@ -1108,7 +1108,7 @@
'handleVoidKeyword void',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
]);
expectComplexInfo('void Function<T>()', required: true);
@@ -1367,7 +1367,7 @@
'handleType S null',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
'endTypeArguments 1 < >'
]);
expectComplexTypeArg('<void Function()>',
@@ -1379,7 +1379,7 @@
'handleVoidKeyword void',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
'endTypeArguments 1 < >'
]);
expectComplexTypeArg('<S<T>>', typeArgumentCount: 1, expectedCalls: [
@@ -1451,7 +1451,7 @@
'handleNoType <',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
'endTypeArguments 1 < >',
'handleType S null',
'endTypeArguments 1 < >'
@@ -1468,7 +1468,7 @@
'handleNoType <',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
'endTypeArguments 1 < >',
'handleType S null',
'endTypeArguments 1 < >'
@@ -1484,7 +1484,7 @@
'handleVoidKeyword void', // was 'handleNoType <'
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
'endTypeArguments 1 < >',
'handleType S null',
'endTypeArguments 1 < >'
@@ -1502,7 +1502,7 @@
'handleVoidKeyword void', // was 'handleNoType <'
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
'endTypeArguments 1 < >',
'handleType T null',
'endTypeArguments 1 < >',
@@ -1680,7 +1680,7 @@
'handleVoidKeyword void',
'beginFormalParameters ( MemberKind.GeneralizedFunctionType',
'endFormalParameters 0 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
'endTypeVariable > 1 extends',
'handleNoType R',
'endTypeVariable , 0 null',
@@ -1943,7 +1943,7 @@
'handleFormalParameterWithoutValue )',
'endFormalParameter null null ) FormalParameterKind.mandatory MemberKind.GeneralizedFunctionType',
'endFormalParameters 1 ( ) MemberKind.GeneralizedFunctionType',
- 'endFunctionType Function',
+ 'endFunctionType Function null',
'endTypeVariable > 0 extends',
'endTypeVariables < >'
]);
@@ -2339,8 +2339,8 @@
}
@override
- void endFunctionType(Token functionToken) {
- calls.add('endFunctionType $functionToken');
+ void endFunctionType(Token functionToken, Token questionMark) {
+ calls.add('endFunctionType $functionToken $questionMark');
}
@override