fix(compiler-sfc): avoid codegen conflict with user variable named `expose` (#7949)

rename `expose` to `__expose` to avoid duplicate identifier

relate #7890
This commit is contained in:
三咲智子 Kevin Deng 2023-03-28 17:34:23 +08:00 committed by GitHub
parent 93f77292c9
commit c839129ab9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 188 additions and 186 deletions

View File

@ -4,8 +4,8 @@ exports[`SFC analyze <script> bindings > auto name inference > basic 1`] = `
"const a = 1 "const a = 1
export default { export default {
__name: 'FooBar', __name: 'FooBar',
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { a } return { a }
} }
@ -20,8 +20,8 @@ exports[`SFC analyze <script> bindings > auto name inference > do not overwrite
}) })
export default /*#__PURE__*/Object.assign(__default__, { export default /*#__PURE__*/Object.assign(__default__, {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
const a = 1 const a = 1
return { a, defineComponent } return { a, defineComponent }
} }
@ -35,8 +35,8 @@ exports[`SFC analyze <script> bindings > auto name inference > do not overwrite
} }
export default /*#__PURE__*/Object.assign(__default__, { export default /*#__PURE__*/Object.assign(__default__, {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
const a = 1 const a = 1
return { a } return { a }
} }
@ -49,8 +49,8 @@ exports[`SFC compile <script setup> > <script> after <script setup> the script c
const n = 1 const n = 1
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { n, get x() { return x } } return { n, get x() { return x } }
@ -85,8 +85,8 @@ exports[`SFC compile <script setup> > <script> and <script setup> co-usage > scr
const __default__ = {} const __default__ = {}
export default /*#__PURE__*/Object.assign(__default__, { export default /*#__PURE__*/Object.assign(__default__, {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
x() x()
@ -104,8 +104,8 @@ exports[`SFC compile <script setup> > <script> and <script setup> co-usage > scr
export default /*#__PURE__*/Object.assign(__default__, { export default /*#__PURE__*/Object.assign(__default__, {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
x() x()
@ -126,8 +126,8 @@ import { x } from './x'
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
...__default__, ...__default__,
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
x() x()
@ -148,8 +148,8 @@ const __default__ = def
export default /*#__PURE__*/Object.assign(__default__, { export default /*#__PURE__*/Object.assign(__default__, {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
x() x()
@ -168,8 +168,8 @@ exports[`SFC compile <script setup> > <script> and <script setup> co-usage > spa
} }
export default /*#__PURE__*/Object.assign(__default__, { export default /*#__PURE__*/Object.assign(__default__, {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
x() x()
@ -188,8 +188,8 @@ exports[`SFC compile <script setup> > <script> and <script setup> co-usage > spa
} }
export default /*#__PURE__*/Object.assign(__default__, { export default /*#__PURE__*/Object.assign(__default__, {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
x() x()
@ -203,8 +203,8 @@ exports[`SFC compile <script setup> > async/await detection > expression stateme
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
;( ;(
@ -222,8 +222,8 @@ exports[`SFC compile <script setup> > async/await detection > multiple \`if for\
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
if (ok) { if (ok) {
@ -257,8 +257,8 @@ exports[`SFC compile <script setup> > async/await detection > multiple \`if whil
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
if (ok) { if (ok) {
@ -312,8 +312,8 @@ exports[`SFC compile <script setup> > async/await detection > multiple \`if\` ne
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
if (ok) { if (ok) {
@ -389,8 +389,8 @@ exports[`SFC compile <script setup> > async/await detection > nested await 1`] =
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
;( ;(
@ -413,8 +413,8 @@ exports[`SFC compile <script setup> > async/await detection > nested await 2`] =
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
;( ;(
@ -437,8 +437,8 @@ exports[`SFC compile <script setup> > async/await detection > nested await 3`] =
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
;( ;(
@ -466,8 +466,8 @@ exports[`SFC compile <script setup> > async/await detection > nested leading awa
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
foo() foo()
@ -492,8 +492,8 @@ exports[`SFC compile <script setup> > async/await detection > nested statements
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
if (ok) { ( if (ok) { (
@ -515,8 +515,8 @@ exports[`SFC compile <script setup> > async/await detection > ref 1`] = `
"import { withAsyncContext as _withAsyncContext, ref as _ref } from 'vue' "import { withAsyncContext as _withAsyncContext, ref as _ref } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
let a = _ref(1 + (( let a = _ref(1 + ((
@ -533,8 +533,8 @@ return { a }
exports[`SFC compile <script setup> > async/await detection > should ignore await inside functions 1`] = ` exports[`SFC compile <script setup> > async/await detection > should ignore await inside functions 1`] = `
"export default { "export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
async function foo() { await bar } async function foo() { await bar }
return { foo } return { foo }
} }
@ -544,8 +544,8 @@ return { foo }
exports[`SFC compile <script setup> > async/await detection > should ignore await inside functions 2`] = ` exports[`SFC compile <script setup> > async/await detection > should ignore await inside functions 2`] = `
"export default { "export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
const foo = async () => { await bar } const foo = async () => { await bar }
return { foo } return { foo }
} }
@ -555,8 +555,8 @@ return { foo }
exports[`SFC compile <script setup> > async/await detection > should ignore await inside functions 3`] = ` exports[`SFC compile <script setup> > async/await detection > should ignore await inside functions 3`] = `
"export default { "export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
const obj = { async method() { await bar }} const obj = { async method() { await bar }}
return { obj } return { obj }
} }
@ -566,8 +566,8 @@ return { obj }
exports[`SFC compile <script setup> > async/await detection > should ignore await inside functions 4`] = ` exports[`SFC compile <script setup> > async/await detection > should ignore await inside functions 4`] = `
"export default { "export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
const cls = class Foo { async method() { await bar }} const cls = class Foo { async method() { await bar }}
return { cls } return { cls }
} }
@ -579,8 +579,8 @@ exports[`SFC compile <script setup> > async/await detection > single line condit
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
if (false) ( if (false) (
@ -598,8 +598,8 @@ exports[`SFC compile <script setup> > async/await detection > variable 1`] = `
"import { withAsyncContext as _withAsyncContext } from 'vue' "import { withAsyncContext as _withAsyncContext } from 'vue'
export default { export default {
async setup(__props, { expose }) { async setup(__props, { expose: __expose }) {
expose(); __expose();
let __temp, __restore let __temp, __restore
const a = 1 + (( const a = 1 + ((
@ -616,8 +616,8 @@ return { a }
exports[`SFC compile <script setup> > binding analysis for destructure 1`] = ` exports[`SFC compile <script setup> > binding analysis for destructure 1`] = `
"export default { "export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
const { foo, b: bar, ['x' + 'y']: baz, x: { y, zz: { z }}} = {} const { foo, b: bar, ['x' + 'y']: baz, x: { y, zz: { z }}} = {}
@ -630,8 +630,8 @@ return { foo, bar, baz, y, z }
exports[`SFC compile <script setup> > defineEmits() 1`] = ` exports[`SFC compile <script setup> > defineEmits() 1`] = `
"export default { "export default {
emits: ['foo', 'bar'], emits: ['foo', 'bar'],
setup(__props, { expose, emit: myEmit }) { setup(__props, { expose: __expose, emit: myEmit }) {
expose(); __expose();
@ -643,7 +643,7 @@ return { myEmit }
exports[`SFC compile <script setup> > defineExpose() 1`] = ` exports[`SFC compile <script setup> > defineExpose() 1`] = `
"export default { "export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose({ foo: 123 }) expose({ foo: 123 })
@ -655,8 +655,8 @@ return { }
exports[`SFC compile <script setup> > defineOptions() > basic usage 1`] = ` exports[`SFC compile <script setup> > defineOptions() > basic usage 1`] = `
"export default /*#__PURE__*/Object.assign({ name: 'FooApp' }, { "export default /*#__PURE__*/Object.assign({ name: 'FooApp' }, {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
@ -671,8 +671,8 @@ exports[`SFC compile <script setup> > defineProps w/ external definition 1`] = `
export default { export default {
props: propsModel, props: propsModel,
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
const props = __props; const props = __props;
@ -689,8 +689,8 @@ exports[`SFC compile <script setup> > defineProps w/ leading code 1`] = `
export default { export default {
props: {}, props: {},
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
const props = __props; const props = __props;
@ -708,8 +708,8 @@ export default {
props: { props: {
foo: String foo: String
}, },
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
const props = __props; const props = __props;
@ -725,8 +725,8 @@ exports[`SFC compile <script setup> > defineProps/defineEmits in multi-variable
"export default { "export default {
props: ['item'], props: ['item'],
emits: ['a'], emits: ['a'],
setup(__props, { expose, emit }) { setup(__props, { expose: __expose, emit }) {
expose(); __expose();
const props = __props; const props = __props;
@ -742,8 +742,8 @@ exports[`SFC compile <script setup> > defineProps/defineEmits in multi-variable
"export default { "export default {
props: ['item'], props: ['item'],
emits: ['a'], emits: ['a'],
setup(__props, { expose, emit }) { setup(__props, { expose: __expose, emit }) {
expose(); __expose();
const props = __props; const props = __props;
@ -759,8 +759,8 @@ exports[`SFC compile <script setup> > defineProps/defineEmits in multi-variable
"export default { "export default {
props: ['item'], props: ['item'],
emits: ['a'], emits: ['a'],
setup(__props, { expose, emit }) { setup(__props, { expose: __expose, emit }) {
expose(); __expose();
const props = __props; const props = __props;
@ -796,8 +796,8 @@ import { Foo, Bar, Baz, Qux, Fred } from './x'
const a = 1 const a = 1
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
function b() {} function b() {}
@ -813,8 +813,8 @@ import { bar, baz } from './x'
const cond = true const cond = true
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { cond, get bar() { return bar }, get baz() { return baz } } return { cond, get bar() { return bar }, get baz() { return baz } }
@ -829,8 +829,8 @@ import { FooBar, FooBaz, FooQux, foo } from './x'
const fooBar: FooBar = 1 const fooBar: FooBar = 1
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { fooBar, get FooBaz() { return FooBaz }, get FooQux() { return FooQux }, get foo() { return foo } } return { fooBar, get FooBaz() { return FooBaz }, get FooQux() { return FooQux }, get foo() { return foo } }
@ -844,8 +844,8 @@ exports[`SFC compile <script setup> > dev mode import usage check > directive 1`
import { vMyDir } from './x' import { vMyDir } from './x'
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { get vMyDir() { return vMyDir } } return { get vMyDir() { return vMyDir } }
@ -859,8 +859,8 @@ exports[`SFC compile <script setup> > dev mode import usage check > js template
import { VAR, VAR2, VAR3 } from './x' import { VAR, VAR2, VAR3 } from './x'
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { get VAR() { return VAR }, get VAR3() { return VAR3 } } return { get VAR() { return VAR }, get VAR3() { return VAR3 } }
@ -874,8 +874,8 @@ exports[`SFC compile <script setup> > dev mode import usage check > last tag 1`]
import { FooBaz, Last } from './x' import { FooBaz, Last } from './x'
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { get FooBaz() { return FooBaz }, get Last() { return Last } } return { get FooBaz() { return FooBaz }, get Last() { return Last } }
@ -889,8 +889,8 @@ exports[`SFC compile <script setup> > dev mode import usage check > vue interpol
import { x, y, z, x$y } from './x' import { x, y, z, x$y } from './x'
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { get x() { return x }, get z() { return z }, get x$y() { return x$y } } return { get x() { return x }, get z() { return z }, get x$y() { return x$y } }
@ -911,8 +911,8 @@ export default {
emits: { emits: {
foo: () => bar > 1 foo: () => bar > 1
}, },
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
@ -935,8 +935,8 @@ export default {
emits: { emits: {
foo: bar => bar > 1 foo: bar => bar > 1
}, },
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
@ -952,8 +952,8 @@ exports[`SFC compile <script setup> > imports > dedupe between user & helper 1`]
import { ref } from 'vue' import { ref } from 'vue'
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
let foo = _ref(1) let foo = _ref(1)
@ -967,8 +967,8 @@ exports[`SFC compile <script setup> > imports > import dedupe between <script> a
"import { x } from './x' "import { x } from './x'
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
x() x()
@ -984,8 +984,8 @@ exports[`SFC compile <script setup> > imports > should allow defineProps/Emit at
export default { export default {
props: ['foo'], props: ['foo'],
emits: ['bar'], emits: ['bar'],
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
@ -1002,8 +1002,8 @@ exports[`SFC compile <script setup> > imports > should extract comment for impor
import b from 'b' import b from 'b'
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { get a() { return a }, get b() { return b } } return { get a() { return a }, get b() { return b } }
@ -1017,8 +1017,8 @@ exports[`SFC compile <script setup> > imports > should hoist and expose imports
import 'foo/css' import 'foo/css'
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { ref } return { ref }
@ -1316,7 +1316,7 @@ return (_ctx, _cache) => {
exports[`SFC compile <script setup> > inlineTemplate mode > with defineExpose() 1`] = ` exports[`SFC compile <script setup> > inlineTemplate mode > with defineExpose() 1`] = `
"export default { "export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
const count = ref(0) const count = ref(0)
expose({ count }) expose({ count })
@ -1353,8 +1353,8 @@ exports[`SFC compile <script setup> > should expose top level declarations 1`] =
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
let a = 1 let a = 1
const b = 2 const b = 2
@ -1372,8 +1372,8 @@ exports[`SFC compile <script setup> > with TypeScript > const Enum 1`] = `
const enum Foo { A = 123 } const enum Foo { A = 123 }
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { Foo } return { Foo }
@ -1388,8 +1388,8 @@ export interface Emits { (e: 'foo' | 'bar'): void }
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: [\\"foo\\", \\"bar\\"], emits: [\\"foo\\", \\"bar\\"],
setup(__props, { expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) { setup(__props, { expose: __expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {
expose(); __expose();
@ -1405,8 +1405,8 @@ export type Emits = { (e: 'foo' | 'bar'): void }
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: [\\"foo\\", \\"bar\\"], emits: [\\"foo\\", \\"bar\\"],
setup(__props, { expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) { setup(__props, { expose: __expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {
expose(); __expose();
@ -1422,8 +1422,8 @@ interface Emits { (e: 'foo'): void }
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: ['foo'], emits: ['foo'],
setup(__props, { expose, emit }) { setup(__props, { expose: __expose, emit }) {
expose(); __expose();
@ -1439,8 +1439,8 @@ interface Emits { (e: 'foo' | 'bar'): void }
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: [\\"foo\\", \\"bar\\"], emits: [\\"foo\\", \\"bar\\"],
setup(__props, { expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) { setup(__props, { expose: __expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {
expose(); __expose();
@ -1456,8 +1456,8 @@ export type Emits = (e: 'foo' | 'bar') => void
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: [\\"foo\\", \\"bar\\"], emits: [\\"foo\\", \\"bar\\"],
setup(__props, { expose, emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) { setup(__props, { expose: __expose, emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) {
expose(); __expose();
@ -1473,8 +1473,8 @@ type Emits = (e: 'foo' | 'bar') => void
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: [\\"foo\\", \\"bar\\"], emits: [\\"foo\\", \\"bar\\"],
setup(__props, { expose, emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) { setup(__props, { expose: __expose, emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) {
expose(); __expose();
@ -1490,8 +1490,8 @@ type Emits = { (e: 'foo' | 'bar'): void }
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: [\\"foo\\", \\"bar\\"], emits: [\\"foo\\", \\"bar\\"],
setup(__props, { expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) { setup(__props, { expose: __expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {
expose(); __expose();
@ -1506,8 +1506,8 @@ exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type (typ
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: [\\"foo\\", \\"bar\\", \\"baz\\"], emits: [\\"foo\\", \\"bar\\", \\"baz\\"],
setup(__props, { expose, emit }: { emit: ({(e: 'foo' | 'bar'): void; (e: 'baz', id: number): void;}), expose: any, slots: any, attrs: any }) { setup(__props, { expose: __expose, emit }: { emit: ({(e: 'foo' | 'bar'): void; (e: 'baz', id: number): void;}), expose: any, slots: any, attrs: any }) {
expose(); __expose();
@ -1522,8 +1522,8 @@ exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type 1`]
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: [\\"foo\\", \\"bar\\"], emits: [\\"foo\\", \\"bar\\"],
setup(__props, { expose, emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) { setup(__props, { expose: __expose, emit }: { emit: ((e: 'foo' | 'bar') => void), expose: any, slots: any, attrs: any }) {
expose(); __expose();
@ -1540,8 +1540,8 @@ exports[`SFC compile <script setup> > with TypeScript > defineEmits w/ type from
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
emits: [\\"foo\\", \\"bar\\"], emits: [\\"foo\\", \\"bar\\"],
setup(__props, { expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) { setup(__props, { expose: __expose, emit }: { emit: ({ (e: 'foo' | 'bar'): void }), expose: any, slots: any, attrs: any }) {
expose(); __expose();
@ -1575,8 +1575,8 @@ export default /*#__PURE__*/_defineComponent({
props: { props: {
x: { type: Number, required: false } x: { type: Number, required: false }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
@ -1595,8 +1595,8 @@ export default /*#__PURE__*/_defineComponent({
props: { props: {
x: { type: Number, required: false } x: { type: Number, required: false }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
@ -1614,8 +1614,8 @@ export default /*#__PURE__*/_defineComponent({
props: { props: {
x: { type: Number, required: false } x: { type: Number, required: false }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
@ -1641,8 +1641,8 @@ export default /*#__PURE__*/_defineComponent({
y: { type: String, required: true }, y: { type: String, required: true },
x: { type: Number, required: false } x: { type: Number, required: false }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
@ -1660,8 +1660,8 @@ export default /*#__PURE__*/_defineComponent({
props: { props: {
x: { type: Number, required: false } x: { type: Number, required: false }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
@ -1717,8 +1717,8 @@ export default /*#__PURE__*/_defineComponent({
unknownUnion: { type: null, required: true }, unknownUnion: { type: null, required: true },
unknownIntersection: { type: Object, required: true } unknownIntersection: { type: Object, required: true }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
@ -1736,8 +1736,8 @@ export default /*#__PURE__*/_defineComponent({
props: { props: {
x: { type: Number, required: false } x: { type: Number, required: false }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
@ -1753,8 +1753,8 @@ exports[`SFC compile <script setup> > with TypeScript > defineProps/Emit w/ runt
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
props: { foo: String }, props: { foo: String },
emits: ['a', 'b'], emits: ['a', 'b'],
setup(__props, { expose, emit }) { setup(__props, { expose: __expose, emit }) {
expose(); __expose();
const props = __props; const props = __props;
@ -1773,8 +1773,8 @@ export interface Foo {}
type Bar = {} type Bar = {}
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { } return { }
@ -1789,8 +1789,8 @@ import type { Foo } from './main.ts'
import { type Bar, Baz } from './main.ts' import { type Bar, Baz } from './main.ts'
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { get Baz() { return Baz } } return { get Baz() { return Baz } }
@ -1804,8 +1804,8 @@ exports[`SFC compile <script setup> > with TypeScript > runtime Enum 1`] = `
enum Foo { A = 123 } enum Foo { A = 123 }
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
return { Foo } return { Foo }
@ -1822,8 +1822,8 @@ exports[`SFC compile <script setup> > with TypeScript > runtime Enum in normal s
enum B { B = \\"B\\" } enum B { B = \\"B\\" }
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
enum Foo { A = 123 } enum Foo { A = 123 }
@ -1843,8 +1843,8 @@ export default /*#__PURE__*/_defineComponent({
bar: { type: Number, required: false }, bar: { type: Number, required: false },
baz: { type: Boolean, required: true } baz: { type: Boolean, required: true }
}, { ...defaults }), }, { ...defaults }),
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
const props = __props as { const props = __props as {
foo?: string foo?: string
@ -1871,8 +1871,8 @@ export default /*#__PURE__*/_defineComponent({
baz: { type: [Boolean, Function] }, baz: { type: [Boolean, Function] },
qux: null qux: null
}, { ...defaults }), }, { ...defaults }),
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
const props = __props as { const props = __props as {
foo: () => void foo: () => void
@ -1900,8 +1900,8 @@ export default /*#__PURE__*/_defineComponent({
props: { props: {
a: { type: String, required: false, default: \\"a\\" } a: { type: String, required: false, default: \\"a\\" }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
const props = __props as { a: string }; const props = __props as { a: string };
@ -1926,8 +1926,8 @@ export default /*#__PURE__*/_defineComponent({
quuxx: { type: Promise, required: false, async default() { return await Promise.resolve('hi') } }, quuxx: { type: Promise, required: false, async default() { return await Promise.resolve('hi') } },
fred: { type: String, required: false, get default() { return 'fred' } } fred: { type: String, required: false, get default() { return 'fred' } }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
const props = __props as { foo: string, bar?: number, baz: boolean, qux(): number, quux(): void, quuxx: Promise<string>, fred: string }; const props = __props as { foo: string, bar?: number, baz: boolean, qux(): number, quux(): void, quuxx: Promise<string>, fred: string };
@ -1949,8 +1949,8 @@ export default /*#__PURE__*/_defineComponent({
baz: { type: [Boolean, Function], default: true }, baz: { type: [Boolean, Function], default: true },
qux: { default: 'hi' } qux: { default: 'hi' }
}, },
setup(__props: any, { expose }) { setup(__props: any, { expose: __expose }) {
expose(); __expose();
const props = __props as { foo: () => void, bar: boolean, baz: boolean | (() => void), qux: string | number }; const props = __props as { foo: () => void, bar: boolean, baz: boolean | (() => void), qux: string | number };

View File

@ -4,8 +4,8 @@ exports[`sfc ref transform > $ unwrapping 1`] = `
"import { ref, shallowRef } from 'vue' "import { ref, shallowRef } from 'vue'
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
let foo = (ref()) let foo = (ref())
let a = (ref(1)) let a = (ref(1))
@ -25,8 +25,8 @@ exports[`sfc ref transform > $ref & $shallowRef declarations 1`] = `
"import { ref as _ref, shallowRef as _shallowRef } from 'vue' "import { ref as _ref, shallowRef as _shallowRef } from 'vue'
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
let foo = _ref() let foo = _ref()
let a = _ref(1) let a = _ref(1)
@ -46,8 +46,8 @@ exports[`sfc ref transform > usage /w typescript 1`] = `
"import { ref as _ref, defineComponent as _defineComponent } from 'vue' "import { ref as _ref, defineComponent as _defineComponent } from 'vue'
export default /*#__PURE__*/_defineComponent({ export default /*#__PURE__*/_defineComponent({
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
let msg = _ref<string | number>('foo'); let msg = _ref<string | number>('foo');
let bar = _ref <string | number>('bar'); let bar = _ref <string | number>('bar');
@ -77,8 +77,8 @@ exports[`sfc ref transform > usage with normal <script> (has macro usage) + <scr
let data = _ref() let data = _ref()
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
console.log(data.value) console.log(data.value)
@ -95,8 +95,8 @@ exports[`sfc ref transform > usage with normal <script> + <script setup> 1`] = `
let c = _ref(0) let c = _ref(0)
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
let b = _ref(0) let b = _ref(0)
let c = 0 let c = 0

View File

@ -53,8 +53,8 @@ exports[`CSS vars injection > codegen > should ignore comments 1`] = `
"import { useCssVars as _useCssVars, unref as _unref } from 'vue' "import { useCssVars as _useCssVars, unref as _unref } from 'vue'
const color = 'red';const width = 100 const color = 'red';const width = 100
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
_useCssVars(_ctx => ({ _useCssVars(_ctx => ({
\\"xxxxxxxx-width\\": (width) \\"xxxxxxxx-width\\": (width)
@ -70,8 +70,8 @@ exports[`CSS vars injection > codegen > should work with w/ complex expression 1
"import { useCssVars as _useCssVars, unref as _unref } from 'vue' "import { useCssVars as _useCssVars, unref as _unref } from 'vue'
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
_useCssVars(_ctx => ({ _useCssVars(_ctx => ({
\\"xxxxxxxx-foo\\": (_unref(foo)), \\"xxxxxxxx-foo\\": (_unref(foo)),
@ -94,8 +94,8 @@ exports[`CSS vars injection > codegen > w/ <script setup> 1`] = `
"import { useCssVars as _useCssVars, unref as _unref } from 'vue' "import { useCssVars as _useCssVars, unref as _unref } from 'vue'
const color = 'red' const color = 'red'
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
_useCssVars(_ctx => ({ _useCssVars(_ctx => ({
\\"xxxxxxxx-color\\": (color) \\"xxxxxxxx-color\\": (color)
@ -112,8 +112,8 @@ exports[`CSS vars injection > codegen > w/ <script setup> using the same var mul
const color = 'red' const color = 'red'
export default { export default {
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
_useCssVars(_ctx => ({ _useCssVars(_ctx => ({
\\"xxxxxxxx-color\\": (color) \\"xxxxxxxx-color\\": (color)
@ -152,8 +152,8 @@ export default {
props: { props: {
foo: String foo: String
}, },
setup(__props, { expose }) { setup(__props, { expose: __expose }) {
expose(); __expose();
_useCssVars(_ctx => ({ _useCssVars(_ctx => ({
\\"xxxxxxxx-color\\": (color), \\"xxxxxxxx-color\\": (color),

View File

@ -89,7 +89,7 @@ const bar = 1
// should remove defineOptions import and call // should remove defineOptions import and call
expect(content).not.toMatch('defineProps') expect(content).not.toMatch('defineProps')
// should generate correct setup signature // should generate correct setup signature
expect(content).toMatch(`setup(__props, { expose }) {`) expect(content).toMatch(`setup(__props, { expose: __expose }) {`)
// should assign user identifier to it // should assign user identifier to it
expect(content).toMatch(`const props = __props`) expect(content).toMatch(`const props = __props`)
// should include context options in default export // should include context options in default export
@ -136,7 +136,9 @@ const myEmit = defineEmits(['foo', 'bar'])
// should remove defineOptions import and call // should remove defineOptions import and call
expect(content).not.toMatch('defineEmits') expect(content).not.toMatch('defineEmits')
// should generate correct setup signature // should generate correct setup signature
expect(content).toMatch(`setup(__props, { expose, emit: myEmit }) {`) expect(content).toMatch(
`setup(__props, { expose: __expose, emit: myEmit }) {`
)
// should include context options in default export // should include context options in default export
expect(content).toMatch(`export default { expect(content).toMatch(`export default {
emits: ['foo', 'bar'],`) emits: ['foo', 'bar'],`)
@ -272,7 +274,7 @@ defineExpose({ foo: 123 })
// should remove defineOptions import and call // should remove defineOptions import and call
expect(content).not.toMatch('defineExpose') expect(content).not.toMatch('defineExpose')
// should generate correct setup signature // should generate correct setup signature
expect(content).toMatch(`setup(__props, { expose }) {`) expect(content).toMatch(`setup(__props, { expose: __expose }) {`)
// should replace callee // should replace callee
expect(content).toMatch(/\bexpose\(\{ foo: 123 \}\)/) expect(content).toMatch(/\bexpose\(\{ foo: 123 \}\)/)
}) })
@ -710,7 +712,7 @@ defineExpose({ foo: 123 })
{ inlineTemplate: true } { inlineTemplate: true }
) )
assertCode(content) assertCode(content)
expect(content).toMatch(`setup(__props, { expose })`) expect(content).toMatch(`setup(__props, { expose: __expose })`)
expect(content).toMatch(`expose({ count })`) expect(content).toMatch(`expose({ count })`)
}) })
@ -988,7 +990,7 @@ const emit = defineEmits(['a', 'b'])
expect(content).toMatch(`export default /*#__PURE__*/_defineComponent({ expect(content).toMatch(`export default /*#__PURE__*/_defineComponent({
props: { foo: String }, props: { foo: String },
emits: ['a', 'b'], emits: ['a', 'b'],
setup(__props, { expose, emit }) {`) setup(__props, { expose: __expose, emit }) {`)
}) })
test('defineProps w/ type', () => { test('defineProps w/ type', () => {
@ -1524,7 +1526,7 @@ const emit = defineEmits(['a', 'b'])
</script> </script>
`) `)
assertCode(content) assertCode(content)
expect(content).toMatch(`setup(__props, { expose, emit }) {`) expect(content).toMatch(`setup(__props, { expose: __expose, emit }) {`)
expect(content).toMatch(`emits: ['foo']`) expect(content).toMatch(`emits: ['foo']`)
}) })

View File

@ -1545,7 +1545,7 @@ export function compileScript(
} }
const destructureElements = const destructureElements =
hasDefineExposeCall || !options.inlineTemplate ? [`expose`] : [] hasDefineExposeCall || !options.inlineTemplate ? [`expose: __expose`] : []
if (emitIdentifier) { if (emitIdentifier) {
destructureElements.push( destructureElements.push(
emitIdentifier === `emit` ? `emit` : `emit: ${emitIdentifier}` emitIdentifier === `emit` ? `emit` : `emit: ${emitIdentifier}`
@ -1723,7 +1723,7 @@ export function compileScript(
// <script setup> components are closed by default. If the user did not // <script setup> components are closed by default. If the user did not
// explicitly call `defineExpose`, call expose() with no args. // explicitly call `defineExpose`, call expose() with no args.
const exposeCall = const exposeCall =
hasDefineExposeCall || options.inlineTemplate ? `` : ` expose();\n` hasDefineExposeCall || options.inlineTemplate ? `` : ` __expose();\n`
// wrap setup code with function. // wrap setup code with function.
if (isTS) { if (isTS) {
// for TS, make sure the exported type is still valid type with // for TS, make sure the exported type is still valid type with