})
})
+ test('should not bail constant on strings w/ ()', () => {
+ const node = parseWithExpressionTransform(
+ `{{ new Date().getFullYear() }}`,
+ ) as InterpolationNode
+ expect(node.content).toMatchObject({
+ children: [
+ 'new ',
+ { constType: ConstantTypes.NOT_CONSTANT },
+ '().',
+ { constType: ConstantTypes.NOT_CONSTANT },
+ '()',
+ ],
+ })
+ })
+
describe('ES Proposals support', () => {
test('bigInt', () => {
const node = parseWithExpressionTransform(
} else {
// The identifier is considered constant unless it's pointing to a
// local scope variable (a v-for alias, or a v-slot prop)
- if (!(needPrefix && isLocal)) {
+ if (
+ !(needPrefix && isLocal) &&
+ parent.type !== 'CallExpression' &&
+ parent.type !== 'NewExpression' &&
+ parent.type !== 'MemberExpression'
+ ) {
;(node as QualifiedId).isConstant = true
}
// also generate sub-expressions for other identifiers for better