From 0c2ea1c134aee2993e45e3bbfb63385e9bc25e75 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sun, 22 Aug 2021 22:28:47 -0400 Subject: [PATCH] refactor(compiler-sfc): remove parseOnly mode --- .../compileScriptParseOnlyMode.spec.ts | 87 ------------ packages/compiler-sfc/src/compileScript.ts | 126 +++--------------- packages/compiler-sfc/src/parse.ts | 20 --- 3 files changed, 16 insertions(+), 217 deletions(-) delete mode 100644 packages/compiler-sfc/__tests__/compileScriptParseOnlyMode.spec.ts diff --git a/packages/compiler-sfc/__tests__/compileScriptParseOnlyMode.spec.ts b/packages/compiler-sfc/__tests__/compileScriptParseOnlyMode.spec.ts deleted file mode 100644 index 86a5a7bf00c..00000000000 --- a/packages/compiler-sfc/__tests__/compileScriptParseOnlyMode.spec.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { TextRange } from '../src/parse' -import { compileSFCScript } from './utils' - -describe('compileScript parseOnly mode', () => { - function compile(src: string) { - return compileSFCScript(src, { parseOnly: true }) - } - - function getRange(src: string, range: TextRange) { - return src.slice(range.start, range.end) - } - - test('bindings', () => { - const scriptSrc = ` - import { foo } from './x' - ` - const scriptSetupSrc = ` - import { bar } from './x' - - const a = 123 - function b() {} - class c {} - ` - const src = ` - - - ` - const { ranges } = compile(src) - - expect(getRange(scriptSrc, ranges!.scriptBindings[0])).toBe('foo') - expect( - ranges!.scriptSetupBindings.map(r => getRange(scriptSetupSrc, r)) - ).toMatchObject(['bar', 'a', 'b', 'c']) - }) - - test('defineProps', () => { - const src = ` - defineProps({ foo: String }) - ` - const { ranges } = compile(``) - expect(getRange(src, ranges!.propsRuntimeArg!)).toBe(`{ foo: String }`) - }) - - test('defineProps (type)', () => { - const src = ` - interface Props { x?: number } - defineProps() - ` - const { ranges } = compile(``) - expect(getRange(src, ranges!.propsTypeArg!)).toBe(`Props`) - }) - - test('withDefaults', () => { - const src = ` - interface Props { x?: number } - withDefaults(defineProps(), { x: 1 }) - ` - const { ranges } = compile(``) - expect(getRange(src, ranges!.withDefaultsArg!)).toBe(`{ x: 1 }`) - }) - - test('defineEmits', () => { - const src = ` - defineEmits(['foo']) - ` - const { ranges } = compile(``) - expect(getRange(src, ranges!.emitsRuntimeArg!)).toBe(`['foo']`) - }) - - test('defineEmits (type)', () => { - const src = ` - defineEmits<{ (e: 'x'): void }>() - ` - const { ranges } = compile(``) - expect(getRange(src, ranges!.emitsTypeArg!)).toBe(`{ (e: 'x'): void }`) - }) - - test('no script setup block', () => { - const src = `import { x } from './x'` - const { ranges } = compile(``) - expect(getRange(src, ranges!.scriptBindings[0])).toBe(`x`) - }) - - test('no script block', () => { - expect(() => compile(``)).not.toThrow() - }) -}) diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index 8356d717883..9d1775407c9 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -3,7 +3,6 @@ import { BindingMetadata, BindingTypes, createRoot, - locStub, NodeTypes, transform, parserOptions, @@ -12,12 +11,7 @@ import { isFunctionType, walkIdentifiers } from '@vue/compiler-dom' -import { - ScriptSetupTextRanges, - SFCDescriptor, - SFCScriptBlock, - TextRange -} from './parse' +import { SFCDescriptor, SFCScriptBlock } from './parse' import { parse as _parse, ParserOptions, ParserPlugin } from '@babel/parser' import { babelParserDefaultPlugins, @@ -103,28 +97,16 @@ export interface SFCScriptCompileOptions { * options passed to `compiler-dom`. */ templateOptions?: Partial - /** - * Skip codegen and only return AST / binding / text range information. - * Also makes the call error-tolerant. - * Used for IDE support. - */ - parseOnly?: boolean } interface ImportBinding { isType: boolean imported: string source: string - rangeNode: Node isFromSetup: boolean isUsedInTemplate: boolean } -interface VariableBinding { - type: BindingTypes - rangeNode: Node -} - /** * Compile `