From 1d8620044a82429c5c33f52d854c2e80e9459163 Mon Sep 17 00:00:00 2001 From: danrubel Date: Tue, 8 May 2018 15:17:02 +0000 Subject: [PATCH] Call computeTypeVar rather than parseTypeArguments when parsing expressions Change-Id: I4423d1fc4941d7e7fc93c02d89ab81ade46ecf1d Reviewed-on: https://dart-review.googlesource.com/52720 Commit-Queue: Dan Rubel Reviewed-by: Brian Wilkerson --- pkg/front_end/lib/src/fasta/parser/parser.dart | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/pkg/front_end/lib/src/fasta/parser/parser.dart b/pkg/front_end/lib/src/fasta/parser/parser.dart index e74907f9db4..2ef43845be3 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_continuation.dart' show TypeContinuation; 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 @@ class Parser { TokenType type = next.type; int tokenLevel = type.precedence; Token typeArguments; - if (isValidMethodTypeArguments(next)) { - // For example a(b)(c), where token is '<'. + TypeParamOrArgInfo typeArg = computeTypeParamOrArg(token); + if (typeArg != noTypeParamOrArg && + optional('(', typeArg.skip(token).next)) { + // For example a(b)(c), where token is before '<'. typeArguments = next; - token = parseTypeArgumentsOpt(token); + token = typeArg.parseArguments(token, this); next = token.next; assert(optional('(', next)); type = next.type;