test('should handle parse error', () => {
const onError = jest.fn()
parseWithExpressionTransform(`{{ a( }}`, { onError })
- expect(onError.mock.calls[0][0].message).toMatch(`Unexpected token (1:4)`)
+ expect(onError.mock.calls[0][0].message).toMatch(
+ `Invalid JavaScript expression. (1:4)`
+ )
})
})
X_V_MODEL_NO_EXPRESSION,
X_V_MODEL_MALFORMED_EXPRESSION,
X_V_MODEL_ON_SCOPE_VARIABLE,
+ X_INVALID_EXPRESSION,
// generic errors
X_PREFIX_ID_NOT_SUPPORTED,
[ErrorCodes.X_V_MODEL_NO_EXPRESSION]: `v-model is missing expression.`,
[ErrorCodes.X_V_MODEL_MALFORMED_EXPRESSION]: `v-model value must be a valid JavaScript member expression.`,
[ErrorCodes.X_V_MODEL_ON_SCOPE_VARIABLE]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
+ [ErrorCodes.X_INVALID_EXPRESSION]: `Invalid JavaScript expression.`,
// generic errors
[ErrorCodes.X_PREFIX_ID_NOT_SUPPORTED]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
walkJS
} from '../utils'
import { isGloballyWhitelisted, makeMap } from '@vue/shared'
+import { createCompilerError, ErrorCodes } from '../errors'
const isLiteralWhitelisted = /*#__PURE__*/ makeMap('true,false,null,this')
try {
ast = parseJS(source, { ranges: true })
} catch (e) {
- context.onError(e)
+ context.onError(
+ createCompilerError(ErrorCodes.X_INVALID_EXPRESSION, node.loc)
+ )
return node
}