Ver código fonte

build: stricter conditions for UnaryExpression in const enum plugin

Evan You 3 anos atrás
pai
commit
b49b9eff20
1 arquivos alterados com 11 adições e 3 exclusões
  1. 11 3
      scripts/const-enum.js

+ 11 - 3
scripts/const-enum.js

@@ -112,9 +112,17 @@ export async function constEnum() {
             }
 
             if (init.type === 'UnaryExpression') {
-              // @ts-ignore assume all operands are literals
-              const exp = `${init.operator}${init.argument.value}`
-              value = evaluate(exp)
+              if (
+                init.argument.type === 'StringLiteral' ||
+                init.argument.type === 'NumericLiteral'
+              ) {
+                const exp = `${init.operator}${init.argument.value}`
+                value = evaluate(exp)
+              } else {
+                throw new Error(
+                  `unhandled UnaryExpression argument type ${init.argument.type} in ${file}`
+                )
+              }
             }
 
             if (value === undefined) {