@@ -4951,54 +4951,60 @@ namespace ts {
4951
4951
|| kind === SyntaxKind . NoSubstitutionTemplateLiteral ;
4952
4952
}
4953
4953
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
-
4983
4954
/* @internal */
4984
4955
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
+ }
4997
4990
}
4998
4991
4999
4992
/* @internal */
5000
4993
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
+ }
5002
5008
}
5003
5009
5004
5010
/* @internal */
@@ -5014,21 +5020,22 @@ namespace ts {
5014
5020
}
5015
5021
}
5016
5022
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
-
5029
5023
/* @internal */
5030
5024
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
+ }
5032
5039
}
5033
5040
5034
5041
export function isAssertionExpression ( node : Node ) : node is AssertionExpression {
0 commit comments