@@ -416,7 +416,6 @@ class JavascriptParser extends Parser {
416416 const expr = /** @type {LogicalExpressionNode } */ ( _expr ) ;
417417
418418 const left = this . evaluateExpression ( expr . left ) ;
419- if ( ! left ) return ;
420419 let returnRight = false ;
421420 /** @type {boolean|undefined } */
422421 let allowedRight ;
@@ -437,7 +436,6 @@ class JavascriptParser extends Parser {
437436 returnRight = true ;
438437 } else return ;
439438 const right = this . evaluateExpression ( expr . right ) ;
440- if ( ! right ) return ;
441439 if ( returnRight ) {
442440 if ( left . couldHaveSideEffects ( ) ) right . setSideEffects ( ) ;
443441 return right . setRange ( expr . range ) ;
@@ -486,10 +484,10 @@ class JavascriptParser extends Parser {
486484
487485 const handleConstOperation = fn => {
488486 const left = this . evaluateExpression ( expr . left ) ;
489- if ( ! left || ! left . isCompileTimeValue ( ) ) return ;
487+ if ( ! left . isCompileTimeValue ( ) ) return ;
490488
491489 const right = this . evaluateExpression ( expr . right ) ;
492- if ( ! right || ! right . isCompileTimeValue ( ) ) return ;
490+ if ( ! right . isCompileTimeValue ( ) ) return ;
493491
494492 const result = fn (
495493 left . asCompileTimeValue ( ) ,
@@ -545,9 +543,7 @@ class JavascriptParser extends Parser {
545543
546544 const handleStrictEqualityComparison = eql => {
547545 const left = this . evaluateExpression ( expr . left ) ;
548- if ( ! left ) return ;
549546 const right = this . evaluateExpression ( expr . right ) ;
550- if ( ! right ) return ;
551547 const res = new BasicEvaluatedExpression ( ) ;
552548 res . setRange ( expr . range ) ;
553549
@@ -600,9 +596,7 @@ class JavascriptParser extends Parser {
600596
601597 const handleAbstractEqualityComparison = eql => {
602598 const left = this . evaluateExpression ( expr . left ) ;
603- if ( ! left ) return ;
604599 const right = this . evaluateExpression ( expr . right ) ;
605- if ( ! right ) return ;
606600 const res = new BasicEvaluatedExpression ( ) ;
607601 res . setRange ( expr . range ) ;
608602
@@ -635,9 +629,7 @@ class JavascriptParser extends Parser {
635629
636630 if ( expr . operator === "+" ) {
637631 const left = this . evaluateExpression ( expr . left ) ;
638- if ( ! left ) return ;
639632 const right = this . evaluateExpression ( expr . right ) ;
640- if ( ! right ) return ;
641633 const res = new BasicEvaluatedExpression ( ) ;
642634 if ( left . isString ( ) ) {
643635 if ( right . isString ( ) ) {
@@ -816,7 +808,7 @@ class JavascriptParser extends Parser {
816808
817809 const handleConstOperation = fn => {
818810 const argument = this . evaluateExpression ( expr . argument ) ;
819- if ( ! argument || ! argument . isCompileTimeValue ( ) ) return ;
811+ if ( ! argument . isCompileTimeValue ( ) ) return ;
820812 const result = fn ( argument . asCompileTimeValue ( ) ) ;
821813 return valueAsExpression (
822814 result ,
@@ -915,7 +907,6 @@ class JavascriptParser extends Parser {
915907 }
916908 } else if ( expr . operator === "!" ) {
917909 const argument = this . evaluateExpression ( expr . argument ) ;
918- if ( ! argument ) return ;
919910 const bool = argument . asBool ( ) ;
920911 if ( typeof bool !== "boolean" ) return ;
921912 return new BasicEvaluatedExpression ( )
@@ -1039,7 +1030,6 @@ class JavascriptParser extends Parser {
10391030 const param = this . evaluateExpression (
10401031 /** @type {ExpressionNode } */ ( expr . callee . object )
10411032 ) ;
1042- if ( ! param ) return ;
10431033 const property =
10441034 expr . callee . property . type === "Literal"
10451035 ? `${ expr . callee . property . value } `
@@ -1306,7 +1296,6 @@ class JavascriptParser extends Parser {
13061296 if ( conditionValue === undefined ) {
13071297 const consequent = this . evaluateExpression ( expr . consequent ) ;
13081298 const alternate = this . evaluateExpression ( expr . alternate ) ;
1309- if ( ! consequent || ! alternate ) return ;
13101299 res = new BasicEvaluatedExpression ( ) ;
13111300 if ( consequent . isConditional ( ) ) {
13121301 res . setOptions ( consequent . options ) ;
@@ -1380,7 +1369,7 @@ class JavascriptParser extends Parser {
13801369 const expression = optionalExpressionsStack . pop ( ) ;
13811370 const evaluated = this . evaluateExpression ( expression ) ;
13821371
1383- if ( evaluated && evaluated . asNullish ( ) ) {
1372+ if ( evaluated . asNullish ( ) ) {
13841373 return evaluated . setRange ( _expr . range ) ;
13851374 }
13861375 }
@@ -1390,7 +1379,7 @@ class JavascriptParser extends Parser {
13901379
13911380 getRenameIdentifier ( expr ) {
13921381 const result = this . evaluateExpression ( expr ) ;
1393- if ( result && result . isIdentifier ( ) ) {
1382+ if ( result . isIdentifier ( ) ) {
13941383 return result . identifier ;
13951384 }
13961385 }
@@ -3167,17 +3156,15 @@ class JavascriptParser extends Parser {
31673156
31683157 /**
31693158 * @param {ExpressionNode } expression expression node
3170- * @returns {BasicEvaluatedExpression | undefined } evaluation result
3159+ * @returns {BasicEvaluatedExpression } evaluation result
31713160 */
31723161 evaluateExpression ( expression ) {
31733162 try {
31743163 const hook = this . hooks . evaluate . get ( expression . type ) ;
31753164 if ( hook !== undefined ) {
31763165 const result = hook . call ( expression ) ;
3177- if ( result !== undefined ) {
3178- if ( result ) {
3179- result . setExpression ( expression ) ;
3180- }
3166+ if ( result !== undefined && result !== null ) {
3167+ result . setExpression ( expression ) ;
31813168 return result ;
31823169 }
31833170 }
@@ -3348,6 +3335,10 @@ class JavascriptParser extends Parser {
33483335 return state ;
33493336 }
33503337
3338+ /**
3339+ * @param {string } source source code
3340+ * @returns {BasicEvaluatedExpression } evaluation result
3341+ */
33513342 evaluate ( source ) {
33523343 const ast = JavascriptParser . _parse ( "(" + source + ")" , {
33533344 sourceType : this . sourceType ,
0 commit comments