Call computeTypeVar rather than parseTypeArguments when parsing expressions
Change-Id: I4423d1fc4941d7e7fc93c02d89ab81ade46ecf1d
Reviewed-on: https://dart-review.googlesource.com/52720
Commit-Queue: Dan Rubel <danrubel@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/front_end/lib/src/fasta/parser/parser.dart b/pkg/front_end/lib/src/fasta/parser/parser.dart
index e74907f..2ef4384 100644
--- a/pkg/front_end/lib/src/fasta/parser/parser.dart
+++ b/pkg/front_end/lib/src/fasta/parser/parser.dart
@@ -86,10 +86,13 @@
import 'type_info.dart'
show
TypeInfo,
+ TypeParamOrArgInfo,
computeType,
+ computeTypeParamOrArg,
isGeneralizedFunctionType,
isValidTypeReference,
- noType;
+ noType,
+ noTypeParamOrArg;
import 'type_info_impl.dart' show skipTypeVariables;
@@ -4112,10 +4115,12 @@
TokenType type = next.type;
int tokenLevel = type.precedence;
Token typeArguments;
- if (isValidMethodTypeArguments(next)) {
- // For example a(b)<T>(c), where token is '<'.
+ TypeParamOrArgInfo typeArg = computeTypeParamOrArg(token);
+ if (typeArg != noTypeParamOrArg &&
+ optional('(', typeArg.skip(token).next)) {
+ // For example a(b)<T>(c), where token is before '<'.
typeArguments = next;
- token = parseTypeArgumentsOpt(token);
+ token = typeArg.parseArguments(token, this);
next = token.next;
assert(optional('(', next));
type = next.type;