fix(compiler-sfc): disallow `expose` property in `defineOptions` (#7967)

This commit is contained in:
三咲智子 Kevin Deng 2023-03-28 17:32:37 +08:00 committed by GitHub
parent b7bd50f505
commit 93f77292c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

View File

@ -684,6 +684,7 @@ export function compileScript(
let propsOption = undefined
let emitsOption = undefined
let exposeOption = undefined
if (optionsRuntimeDecl.type === 'ObjectExpression') {
for (const prop of optionsRuntimeDecl.properties) {
if (
@ -692,6 +693,7 @@ export function compileScript(
) {
if (prop.key.name === 'props') propsOption = prop
if (prop.key.name === 'emits') emitsOption = prop
if (prop.key.name === 'expose') exposeOption = prop
}
}
}
@ -708,6 +710,12 @@ export function compileScript(
emitsOption
)
}
if (exposeOption) {
error(
`${DEFINE_OPTIONS}() cannot be used to declare expose. Use ${DEFINE_EXPOSE}() instead.`,
exposeOption
)
}
return true
}

View File

@ -169,7 +169,7 @@ export function defineOptions<
Extends,
E,
EE
> & { emits?: undefined }
> & { emits?: undefined; expose?: undefined }
): void {
if (__DEV__) {
warnRuntimeUsage(`defineOptions`)