]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(compiler-sfc): fix parse-only mode when there is no script setup block
authorEvan You <yyx990803@gmail.com>
Fri, 2 Jul 2021 12:24:24 +0000 (08:24 -0400)
committerEvan You <yyx990803@gmail.com>
Fri, 2 Jul 2021 12:24:24 +0000 (08:24 -0400)
packages/compiler-sfc/__tests__/compileScriptParseOnlyMode.spec.ts
packages/compiler-sfc/src/compileScript.ts

index 50a8a1122450a32e3a6f48639a47689d73f1ffe6..86a5a7bf00c9f4da713b9ba556aba2f23022d9a3 100644 (file)
@@ -74,4 +74,14 @@ describe('compileScript parseOnly mode', () => {
     const { ranges } = compile(`<script setup lang="ts">${src}</script>`)
     expect(getRange(src, ranges!.emitsTypeArg!)).toBe(`{ (e: 'x'): void }`)
   })
+
+  test('no script setup block', () => {
+    const src = `import { x } from './x'`
+    const { ranges } = compile(`<script>${src}</script>`)
+    expect(getRange(src, ranges!.scriptBindings[0])).toBe(`x`)
+  })
+
+  test('no script block', () => {
+    expect(() => compile(`<style>hello</style>`)).not.toThrow()
+  })
 })
index bf4cec6719ec83ef69e5d3a809b8320acc6084c2..6d4733f0b858bfa0a58769adc169735c657baf8a 100644 (file)
@@ -1,5 +1,10 @@
 import MagicString from 'magic-string'
-import { BindingMetadata, BindingTypes, UNREF } from '@vue/compiler-core'
+import {
+  BindingMetadata,
+  BindingTypes,
+  locStub,
+  UNREF
+} from '@vue/compiler-core'
 import {
   ScriptSetupTextRanges,
   SFCDescriptor,
@@ -126,7 +131,7 @@ export function compileScript(
       type: 'script',
       content: '',
       attrs: {},
-      loc: null as any
+      loc: locStub
     }
   }