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