@@ -5735,34 +5735,10 @@ namespace ts {
5735
5735
case SyntaxKind.OpenParenToken: // foo<x>(
5736
5736
case SyntaxKind.NoSubstitutionTemplateLiteral: // foo<T> `...`
5737
5737
case SyntaxKind.TemplateHead: // foo<T> `...${100}...`
5738
- // These tokens can't follow in a call expression, nor can they start an
5739
- // expression. So, consider the type argument list part of an instantiation
5740
- // expression.
5741
- // falls through
5742
- case SyntaxKind.CommaToken: // foo<x>,
5743
- case SyntaxKind.DotToken: // foo<x>.
5744
- case SyntaxKind.QuestionDotToken: // foo<x>?.
5745
- case SyntaxKind.CloseParenToken: // foo<x>)
5746
- case SyntaxKind.CloseBracketToken: // foo<x>]
5747
- case SyntaxKind.ColonToken: // foo<x>:
5748
- case SyntaxKind.SemicolonToken: // foo<x>;
5749
- case SyntaxKind.QuestionToken: // foo<x>?
5750
- case SyntaxKind.EqualsEqualsToken: // foo<x> ==
5751
- case SyntaxKind.EqualsEqualsEqualsToken: // foo<x> ===
5752
- case SyntaxKind.ExclamationEqualsToken: // foo<x> !=
5753
- case SyntaxKind.ExclamationEqualsEqualsToken: // foo<x> !==
5754
- case SyntaxKind.AmpersandAmpersandToken: // foo<x> &&
5755
- case SyntaxKind.BarBarToken: // foo<x> ||
5756
- case SyntaxKind.QuestionQuestionToken: // foo<x> ??
5757
- case SyntaxKind.CaretToken: // foo<x> ^
5758
- case SyntaxKind.AmpersandToken: // foo<x> &
5759
- case SyntaxKind.BarToken: // foo<x> |
5760
- case SyntaxKind.CloseBraceToken: // foo<x> }
5761
- case SyntaxKind.EndOfFileToken: // foo<x>
5762
5738
return true;
5763
5739
}
5764
- // Treat anything else as an expression.
5765
- return false ;
5740
+ // Consider something a type argument list only if the following token can't start an expression.
5741
+ return !isStartOfExpression() ;
5766
5742
}
5767
5743
5768
5744
function parsePrimaryExpression(): PrimaryExpression {
0 commit comments