getLeftmostExpression: handle AsExpression and NonNullExpression

Fixes: #25223
This commit is contained in:
Klaus Meinhardt 2018-06-30 22:23:48 +02:00
parent a1746d4cfe
commit 7077dd91a8

View file

@ -4340,7 +4340,7 @@ namespace ts {
}
}
function getLeftmostExpression(node: Expression, stopAtCallExpressions: boolean) {
function getLeftmostExpression(node: Expression, stopAtCallExpressions: boolean | undefined) {
while (true) {
switch (node.kind) {
case SyntaxKind.PostfixUnaryExpression:
@ -4354,19 +4354,17 @@ namespace ts {
case SyntaxKind.ConditionalExpression:
node = (<ConditionalExpression>node).condition;
continue;
case SyntaxKind.CallExpression:
if (stopAtCallExpressions) {
return node;
}
// falls through
case SyntaxKind.AsExpression:
case SyntaxKind.ElementAccessExpression:
case SyntaxKind.PropertyAccessExpression:
node = (<CallExpression | PropertyAccessExpression | ElementAccessExpression>node).expression;
continue;
case SyntaxKind.NonNullExpression:
case SyntaxKind.PartiallyEmittedExpression:
node = (<PartiallyEmittedExpression>node).expression;
node = (<CallExpression | PropertyAccessExpression | ElementAccessExpression | AsExpression | NonNullExpression | PartiallyEmittedExpression>node).expression;
continue;
}