}"
`;
+exports[`scopeId compiler support > should push typescript-compatible scopeId for hoisted nodes 1`] = `
+"import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from "vue"
+
+const _withScopeId = (n: any) => (_pushScopeId("test"),n=n(),_popScopeId(),n)
+const _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode("div", null, "hello", -1 /* HOISTED */))
+const _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode("div", null, "world", -1 /* HOISTED */))
+
+export function render(_ctx: any,_cache: any) {
+ return (_openBlock(), _createElementBlock("div", null, [
+ _hoisted_1,
+ _createTextVNode(_toDisplayString(_ctx.foo), 1 /* TEXT */),
+ _hoisted_2
+ ]))
+}"
+`;
+
exports[`scopeId compiler support > should wrap default slot 1`] = `
"import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from "vue"
].forEach(c => expect(code).toMatch(c))
expect(code).toMatchSnapshot()
})
+
+ test('should push typescript-compatible scopeId for hoisted nodes', () => {
+ const { ast, code } = baseCompile(
+ `<div><div>hello</div>{{ foo }}<div>world</div></div>`,
+ {
+ mode: 'module',
+ scopeId: 'test',
+ hoistStatic: true,
+ isTS: true,
+ },
+ )
+ expect(ast.helpers).toContain(PUSH_SCOPE_ID)
+ expect(ast.helpers).toContain(POP_SCOPE_ID)
+ expect(ast.hoists.length).toBe(2)
+ ;[
+ `const _withScopeId = (n: any) => (_pushScopeId("test"),n=n(),_popScopeId(),n)`,
+ `const _hoisted_1 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode("div", null, "hello", ${genFlagText(
+ PatchFlags.HOISTED,
+ )}))`,
+ `const _hoisted_2 = /*#__PURE__*/ _withScopeId(() => /*#__PURE__*/_createElementVNode("div", null, "world", ${genFlagText(
+ PatchFlags.HOISTED,
+ )}))`,
+ ].forEach(c => expect(code).toMatch(c))
+ expect(code).toMatchSnapshot()
+ })
})
// generate inlined withScopeId helper
if (genScopeId) {
+ const param = context.isTS ? '(n: any)' : 'n'
push(
- `const _withScopeId = n => (${helper(
+ `const _withScopeId = ${param} => (${helper(
PUSH_SCOPE_ID,
)}("${scopeId}"),n=n(),${helper(POP_SCOPE_ID)}(),n)`,
)