From d13095b317426a72948142a4f287daeb1f057358 Mon Sep 17 00:00:00 2001 From: Disservin Date: Thu, 8 Aug 2024 20:54:29 +0200 Subject: [PATCH 1/3] fix(compiler-core): warn when slot used on non-root template Implements the warning from vue2 in vue3. fixes https://github.com/vuejs/core/issues/11521 --- .../compiler-core/__tests__/transform.spec.ts | 72 +++++++++++++++++++ packages/compiler-core/src/errors.ts | 4 ++ packages/compiler-core/src/transform.ts | 16 ++++- packages/compiler-dom/src/errors.ts | 2 +- 4 files changed, 92 insertions(+), 2 deletions(-) diff --git a/packages/compiler-core/__tests__/transform.spec.ts b/packages/compiler-core/__tests__/transform.spec.ts index 0946d3648..89e13856e 100644 --- a/packages/compiler-core/__tests__/transform.spec.ts +++ b/packages/compiler-core/__tests__/transform.spec.ts @@ -20,6 +20,7 @@ import { transformElement } from '../src/transforms/transformElement' import { transformSlotOutlet } from '../src/transforms/transformSlotOutlet' import { transformText } from '../src/transforms/transformText' import { PatchFlags } from '@vue/shared' +import type { CompilerOptions } from '@vue/compiler-core' describe('compiler: transform', () => { test('context state', () => { @@ -378,4 +379,75 @@ describe('compiler: transform', () => { ) }) }) + + describe('errors', () => { + function transformWithCodegen( + template: string, + options: CompilerOptions = {}, + ) { + const ast = baseParse(template) + transform(ast, { + nodeTransforms: [ + transformIf, + transformFor, + transformText, + transformSlotOutlet, + transformElement, + ], + ...options, + }) + return ast + } + + test('warn when v-slot used on non-root level