`${PatchFlags.TEXT} /* ${PatchFlagNames[PatchFlags.TEXT]} */`,
)
})
+
+ // #10754
+ test('await expression in right hand of assignment, inline mode', () => {
+ const node = parseWithExpressionTransform(
+ `{{ (async () => { x = await bar })() }}`,
+ {
+ inline: true,
+ bindingMetadata: {
+ x: BindingTypes.SETUP_LET,
+ bar: BindingTypes.SETUP_CONST,
+ },
+ },
+ ) as InterpolationNode
+ expect(node.content).toMatchObject({
+ type: NodeTypes.COMPOUND_EXPRESSION,
+ children: [
+ `(async () => { `,
+ {
+ content: `_isRef(x) ? x.value = await bar : x`,
+ },
+ ` = await `,
+ {
+ content: `bar`,
+ },
+ ` })()`,
+ ],
+ })
+ })
})
})
UpdateExpression,
} from '@babel/types'
import { validateBrowserExpression } from '../validateExpression'
-import { parse } from '@babel/parser'
+import { parseExpression } from '@babel/parser'
import { IS_REF, UNREF } from '../runtimeHelpers'
import { BindingTypes } from '../options'
? ` ${rawExp} `
: `(${rawExp})${asParams ? `=>{}` : ``}`
try {
- ast = parse(source, {
+ ast = parseExpression(source, {
+ sourceType: 'module',
plugins: context.expressionPlugins,
- }).program
+ })
} catch (e: any) {
context.onError(
createCompilerError(