From 93f77292c9f2c4dcc83aae6b5943a8b1d7443092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E6=99=BA=E5=AD=90=20Kevin=20Deng?= Date: Tue, 28 Mar 2023 17:32:37 +0800 Subject: [PATCH] fix(compiler-sfc): disallow `expose` property in `defineOptions` (#7967) --- packages/compiler-sfc/src/compileScript.ts | 8 ++++++++ packages/runtime-core/src/apiSetupHelpers.ts | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index 44d998a3c46..c253359720c 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -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 } diff --git a/packages/runtime-core/src/apiSetupHelpers.ts b/packages/runtime-core/src/apiSetupHelpers.ts index 981e8d60a6a..bdda22e9398 100644 --- a/packages/runtime-core/src/apiSetupHelpers.ts +++ b/packages/runtime-core/src/apiSetupHelpers.ts @@ -169,7 +169,7 @@ export function defineOptions< Extends, E, EE - > & { emits?: undefined } + > & { emits?: undefined; expose?: undefined } ): void { if (__DEV__) { warnRuntimeUsage(`defineOptions`)