Skip to content

Commit b2fc854

Browse files
committed
fix parser.evaluteExpression api
1 parent f43047c commit b2fc854

4 files changed

Lines changed: 18 additions & 30 deletions

File tree

lib/ConstPlugin.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ class ConstPlugin {
324324
}
325325
} else if (expression.operator === "??") {
326326
const param = parser.evaluateExpression(expression.left);
327-
const keepRight = param && param.asNullish();
327+
const keepRight = param.asNullish();
328328
if (typeof keepRight === "boolean") {
329329
// ------------------------------------------
330330
//
@@ -407,7 +407,7 @@ class ConstPlugin {
407407
const expression = optionalExpressionsStack.pop();
408408
const evaluated = parser.evaluateExpression(expression);
409409

410-
if (evaluated && evaluated.asNullish()) {
410+
if (evaluated.asNullish()) {
411411
// ------------------------------------------
412412
//
413413
// Given the following code:

lib/dependencies/CommonJsExportsParserPlugin.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ class CommonJsExportsParserPlugin {
201201
if (expr.arguments[1].type === "SpreadElement") return;
202202
if (expr.arguments[2].type === "SpreadElement") return;
203203
const exportsArg = parser.evaluateExpression(expr.arguments[0]);
204-
if (!exportsArg || !exportsArg.isIdentifier()) return;
204+
if (!exportsArg.isIdentifier()) return;
205205
if (
206206
exportsArg.identifier !== "exports" &&
207207
exportsArg.identifier !== "module.exports" &&
@@ -210,7 +210,6 @@ class CommonJsExportsParserPlugin {
210210
return;
211211
}
212212
const propertyArg = parser.evaluateExpression(expr.arguments[1]);
213-
if (!propertyArg) return;
214213
const property = propertyArg.asString();
215214
if (typeof property !== "string") return;
216215
enableStructuredExports();

lib/javascript/JavascriptParser.js

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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,

types.d.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5335,12 +5335,10 @@ declare class JavascriptParser extends Parser {
53355335
enterArrayPattern(pattern?: any, onIdent?: any): void;
53365336
enterRestElement(pattern?: any, onIdent?: any): void;
53375337
enterAssignmentPattern(pattern?: any, onIdent?: any): void;
5338-
evaluateExpression(
5339-
expression: Expression
5340-
): undefined | BasicEvaluatedExpression;
5338+
evaluateExpression(expression: Expression): BasicEvaluatedExpression;
53415339
parseString(expression?: any): any;
53425340
parseCalculatedString(expression?: any): any;
5343-
evaluate(source?: any): undefined | BasicEvaluatedExpression;
5341+
evaluate(source: string): BasicEvaluatedExpression;
53445342
isPure(
53455343
expr:
53465344
| undefined
@@ -7486,11 +7484,11 @@ type NodeEstreeIndex =
74867484
| PropertyDefinition
74877485
| VariableDeclarator
74887486
| Program
7489-
| Super
74907487
| SwitchCase
74917488
| CatchClause
74927489
| Property
74937490
| AssignmentProperty
7491+
| Super
74947492
| TemplateElement
74957493
| SpreadElement
74967494
| ObjectPattern

0 commit comments

Comments
 (0)