Index: runtime/vm/parser.cc |
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc |
index 6e83ad6ded5681538d7c7850ccce109337ad2d85..72f078e230c2e0d2ebd48d395761846368e917e4 100644 |
--- a/runtime/vm/parser.cc |
+++ b/runtime/vm/parser.cc |
@@ -8248,10 +8248,17 @@ bool Parser::TryParseTypeArguments() { |
} else if (ct == Token::kSHR) { |
nesting_level -= 2; |
} else if (ct == Token::kIDENT) { |
- // Check to see if it is a qualified identifier. |
- if (LookaheadToken(1) == Token::kPERIOD) { |
- // Consume the identifier, the period will be consumed below. |
- ConsumeToken(); |
+ if (IsFunctionTypeSymbol()) { |
+ if (!TryParseType(false)) { |
+ return false; |
+ } |
+ continue; |
+ } else { |
+ // Check to see if it is a qualified identifier. |
+ if (LookaheadToken(1) == Token::kPERIOD) { |
+ // Consume the identifier, the period will be consumed below. |
+ ConsumeToken(); |
+ } |
} |
} else if (ct != Token::kCOMMA) { |
return false; |
@@ -8384,7 +8391,7 @@ bool Parser::TryParseType(bool allow_void) { |
if (!TryParseQualIdent()) { |
return false; |
} |
- if ((CurrentToken() == Token::kLT) && !TryParseTypeParameters()) { |
+ if ((CurrentToken() == Token::kLT) && !TryParseTypeArguments()) { |
return false; |
} |
found = true; |