@@ -4951,54 +4951,60 @@ namespace ts {
49514951 || kind === SyntaxKind . NoSubstitutionTemplateLiteral ;
49524952 }
49534953
4954- function isLeftHandSideExpressionKind ( kind : SyntaxKind ) : boolean {
4955- return kind === SyntaxKind . PropertyAccessExpression
4956- || kind === SyntaxKind . ElementAccessExpression
4957- || kind === SyntaxKind . NewExpression
4958- || kind === SyntaxKind . CallExpression
4959- || kind === SyntaxKind . JsxElement
4960- || kind === SyntaxKind . JsxSelfClosingElement
4961- || kind === SyntaxKind . TaggedTemplateExpression
4962- || kind === SyntaxKind . ArrayLiteralExpression
4963- || kind === SyntaxKind . ParenthesizedExpression
4964- || kind === SyntaxKind . ObjectLiteralExpression
4965- || kind === SyntaxKind . ClassExpression
4966- || kind === SyntaxKind . FunctionExpression
4967- || kind === SyntaxKind . Identifier
4968- || kind === SyntaxKind . RegularExpressionLiteral
4969- || kind === SyntaxKind . NumericLiteral
4970- || kind === SyntaxKind . StringLiteral
4971- || kind === SyntaxKind . NoSubstitutionTemplateLiteral
4972- || kind === SyntaxKind . TemplateExpression
4973- || kind === SyntaxKind . FalseKeyword
4974- || kind === SyntaxKind . NullKeyword
4975- || kind === SyntaxKind . ThisKeyword
4976- || kind === SyntaxKind . TrueKeyword
4977- || kind === SyntaxKind . SuperKeyword
4978- || kind === SyntaxKind . ImportKeyword
4979- || kind === SyntaxKind . NonNullExpression
4980- || kind === SyntaxKind . MetaProperty ;
4981- }
4982-
49834954 /* @internal */
49844955 export function isLeftHandSideExpression ( node : Node ) : node is LeftHandSideExpression {
4985- return isLeftHandSideExpressionKind ( skipPartiallyEmittedExpressions ( node ) . kind ) ;
4986- }
4987-
4988- function isUnaryExpressionKind ( kind : SyntaxKind ) : boolean {
4989- return kind === SyntaxKind . PrefixUnaryExpression
4990- || kind === SyntaxKind . PostfixUnaryExpression
4991- || kind === SyntaxKind . DeleteExpression
4992- || kind === SyntaxKind . TypeOfExpression
4993- || kind === SyntaxKind . VoidExpression
4994- || kind === SyntaxKind . AwaitExpression
4995- || kind === SyntaxKind . TypeAssertionExpression
4996- || isLeftHandSideExpressionKind ( kind ) ;
4956+ switch ( node . kind ) {
4957+ case SyntaxKind . PropertyAccessExpression :
4958+ case SyntaxKind . ElementAccessExpression :
4959+ case SyntaxKind . NewExpression :
4960+ case SyntaxKind . CallExpression :
4961+ case SyntaxKind . JsxElement :
4962+ case SyntaxKind . JsxSelfClosingElement :
4963+ case SyntaxKind . TaggedTemplateExpression :
4964+ case SyntaxKind . ArrayLiteralExpression :
4965+ case SyntaxKind . ParenthesizedExpression :
4966+ case SyntaxKind . ObjectLiteralExpression :
4967+ case SyntaxKind . ClassExpression :
4968+ case SyntaxKind . FunctionExpression :
4969+ case SyntaxKind . Identifier :
4970+ case SyntaxKind . RegularExpressionLiteral :
4971+ case SyntaxKind . NumericLiteral :
4972+ case SyntaxKind . StringLiteral :
4973+ case SyntaxKind . NoSubstitutionTemplateLiteral :
4974+ case SyntaxKind . TemplateExpression :
4975+ case SyntaxKind . FalseKeyword :
4976+ case SyntaxKind . NullKeyword :
4977+ case SyntaxKind . ThisKeyword :
4978+ case SyntaxKind . TrueKeyword :
4979+ case SyntaxKind . SuperKeyword :
4980+ case SyntaxKind . NonNullExpression :
4981+ case SyntaxKind . MetaProperty :
4982+ return true ;
4983+ case SyntaxKind . PartiallyEmittedExpression :
4984+ return isLeftHandSideExpression ( ( node as PartiallyEmittedExpression ) . expression ) ;
4985+ case SyntaxKind . ImportKeyword :
4986+ return node . parent . kind === SyntaxKind . CallExpression ;
4987+ default :
4988+ return false ;
4989+ }
49974990 }
49984991
49994992 /* @internal */
50004993 export function isUnaryExpression ( node : Node ) : node is UnaryExpression {
5001- return isUnaryExpressionKind ( skipPartiallyEmittedExpressions ( node ) . kind ) ;
4994+ switch ( node . kind ) {
4995+ case SyntaxKind . PrefixUnaryExpression :
4996+ case SyntaxKind . PostfixUnaryExpression :
4997+ case SyntaxKind . DeleteExpression :
4998+ case SyntaxKind . TypeOfExpression :
4999+ case SyntaxKind . VoidExpression :
5000+ case SyntaxKind . AwaitExpression :
5001+ case SyntaxKind . TypeAssertionExpression :
5002+ return true ;
5003+ case SyntaxKind . PartiallyEmittedExpression :
5004+ return isUnaryExpression ( ( node as PartiallyEmittedExpression ) . expression ) ;
5005+ default :
5006+ return isLeftHandSideExpression ( node ) ;
5007+ }
50025008 }
50035009
50045010 /* @internal */
@@ -5014,21 +5020,22 @@ namespace ts {
50145020 }
50155021 }
50165022
5017- function isExpressionKind ( kind : SyntaxKind ) {
5018- return kind === SyntaxKind . ConditionalExpression
5019- || kind === SyntaxKind . YieldExpression
5020- || kind === SyntaxKind . ArrowFunction
5021- || kind === SyntaxKind . BinaryExpression
5022- || kind === SyntaxKind . SpreadElement
5023- || kind === SyntaxKind . AsExpression
5024- || kind === SyntaxKind . OmittedExpression
5025- || kind === SyntaxKind . CommaListExpression
5026- || isUnaryExpressionKind ( kind ) ;
5027- }
5028-
50295023 /* @internal */
50305024 export function isExpression ( node : Node ) : node is Expression {
5031- return isExpressionKind ( skipPartiallyEmittedExpressions ( node ) . kind ) ;
5025+ switch ( node . kind ) {
5026+ case SyntaxKind . ConditionalExpression :
5027+ case SyntaxKind . YieldExpression :
5028+ case SyntaxKind . ArrowFunction :
5029+ case SyntaxKind . BinaryExpression :
5030+ case SyntaxKind . SpreadElement :
5031+ case SyntaxKind . AsExpression :
5032+ case SyntaxKind . OmittedExpression :
5033+ case SyntaxKind . CommaListExpression :
5034+ case SyntaxKind . PartiallyEmittedExpression :
5035+ return true ;
5036+ default :
5037+ return isUnaryExpression ( node ) ;
5038+ }
50325039 }
50335040
50345041 export function isAssertionExpression ( node : Node ) : node is AssertionExpression {
0 commit comments