diff --git a/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineRender.spec.ts.snap b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineRender.spec.ts.snap new file mode 100644 index 00000000000..e2914e7add0 --- /dev/null +++ b/packages/compiler-sfc/__tests__/compileScript/__snapshots__/defineRender.spec.ts.snap @@ -0,0 +1,62 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`defineRender() > JSX Element 1`] = ` +"import { defineComponent as _defineComponent } from 'vue' + +export default /*#__PURE__*/_defineComponent({ + setup(__props, { expose: __expose }) { + __expose(); + + + +return () =>
+} + +})" +`; + +exports[`defineRender() > empty argument 1`] = ` +"const foo = 'bar' + +export default { + setup(__props, { expose: __expose }) { + __expose(); + + + +return { foo } +} + +}" +`; + +exports[`defineRender() > function 1`] = ` +"import { defineComponent as _defineComponent } from 'vue' + +export default /*#__PURE__*/_defineComponent({ + setup(__props, { expose: __expose }) { + __expose(); + + + +return () =>
+} + +})" +`; + +exports[`defineRender() > identifier 1`] = ` +"import { defineComponent as _defineComponent } from 'vue' +import { renderFn } from './ctx' + +export default /*#__PURE__*/_defineComponent({ + setup(__props, { expose: __expose }) { + __expose(); + + + +return renderFn +} + +})" +`; diff --git a/packages/compiler-sfc/__tests__/compileScript/defineRender.spec.ts b/packages/compiler-sfc/__tests__/compileScript/defineRender.spec.ts new file mode 100644 index 00000000000..d33eb551ca2 --- /dev/null +++ b/packages/compiler-sfc/__tests__/compileScript/defineRender.spec.ts @@ -0,0 +1,79 @@ +import { assertCode, compileSFCScript as compile } from '../utils' + +describe('defineRender()', () => { + test('JSX Element', () => { + const { content } = compile( + ` + + `, + { defineRender: true }, + ) + assertCode(content) + expect(content).toMatch(`return () =>
`) + expect(content).not.toMatch('defineRender') + }) + + test('function', () => { + const { content } = compile( + ` + + `, + { defineRender: true }, + ) + assertCode(content) + expect(content).toMatch(`return () =>
`) + expect(content).not.toMatch('defineRender') + }) + + test('identifier', () => { + const { content } = compile( + ` + + `, + { defineRender: true }, + ) + assertCode(content) + expect(content).toMatch(`return renderFn`) + expect(content).not.toMatch('defineRender') + }) + + test('empty argument', () => { + const { content } = compile( + ` + + `, + { defineRender: true }, + ) + assertCode(content) + expect(content).toMatch(`return { foo }`) + expect(content).not.toMatch('defineRender') + }) + + describe('errors', () => { + test('w/