build: stricter conditions for UnaryExpression in const enum plugin

This commit is contained in:
Evan You 2023-02-03 18:29:17 +08:00
parent a871fd0cc0
commit b49b9eff20
1 changed files with 11 additions and 3 deletions

View File

@ -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) {