diff --git a/packages/compiler-core/__tests__/compile.spec.ts b/packages/compiler-core/__tests__/compile.spec.ts index 668519511..33766f71b 100644 --- a/packages/compiler-core/__tests__/compile.spec.ts +++ b/packages/compiler-core/__tests__/compile.spec.ts @@ -44,7 +44,7 @@ describe('compiler: integration tests', () => { return res } - test('function mode', async () => { + test('function mode', () => { const { code, map } = compile(source, { sourceMap: true, filename: `foo.vue` @@ -54,7 +54,7 @@ describe('compiler: integration tests', () => { expect(map!.sources).toEqual([`foo.vue`]) expect(map!.sourcesContent).toEqual([source]) - const consumer = await new SourceMapConsumer(map as RawSourceMap) + const consumer = new SourceMapConsumer(map as RawSourceMap) expect( consumer.originalPositionFor(getPositionInCode(code, `id`)) @@ -109,7 +109,7 @@ describe('compiler: integration tests', () => { ).toMatchObject(getPositionInCode(source, `value + index`)) }) - test('function mode w/ prefixIdentifiers: true', async () => { + test('function mode w/ prefixIdentifiers: true', () => { const { code, map } = compile(source, { sourceMap: true, filename: `foo.vue`, @@ -120,7 +120,7 @@ describe('compiler: integration tests', () => { expect(map!.sources).toEqual([`foo.vue`]) expect(map!.sourcesContent).toEqual([source]) - const consumer = await new SourceMapConsumer(map as RawSourceMap) + const consumer = new SourceMapConsumer(map as RawSourceMap) expect( consumer.originalPositionFor(getPositionInCode(code, `id`)) @@ -184,7 +184,7 @@ describe('compiler: integration tests', () => { ).toMatchObject(getPositionInCode(source, `value + index`)) }) - test('module mode', async () => { + test('module mode', () => { const { code, map } = compile(source, { mode: 'module', sourceMap: true, @@ -195,7 +195,7 @@ describe('compiler: integration tests', () => { expect(map!.sources).toEqual([`foo.vue`]) expect(map!.sourcesContent).toEqual([source]) - const consumer = await new SourceMapConsumer(map as RawSourceMap) + const consumer = new SourceMapConsumer(map as RawSourceMap) expect( consumer.originalPositionFor(getPositionInCode(code, `id`)) diff --git a/packages/compiler-core/package.json b/packages/compiler-core/package.json index 4af472bb1..5f6311730 100644 --- a/packages/compiler-core/package.json +++ b/packages/compiler-core/package.json @@ -31,6 +31,6 @@ "dependencies": { "acorn": "^7.1.0", "estree-walker": "^0.8.1", - "source-map": "^0.7.3" + "source-map": "^0.6.1" } } diff --git a/packages/compiler-core/src/codegen.ts b/packages/compiler-core/src/codegen.ts index fed615196..939a07f8e 100644 --- a/packages/compiler-core/src/codegen.ts +++ b/packages/compiler-core/src/codegen.ts @@ -10,7 +10,6 @@ import { CallExpression, ArrayExpression, ObjectExpression, - SourceLocation, Position, InterpolationNode, CompoundExpressionNode, @@ -18,7 +17,8 @@ import { FunctionExpression, SequenceExpression, ConditionalExpression, - CacheExpression + CacheExpression, + locStub } from './ast' import { SourceMapGenerator, RawSourceMap } from 'source-map' import { @@ -58,8 +58,7 @@ export interface CodegenContext extends Required { indentLevel: number map?: SourceMapGenerator helper(key: symbol): string - push(code: string, node?: CodegenNode, openOnly?: boolean): void - resetMapping(loc: SourceLocation): void + push(code: string, node?: CodegenNode): void indent(): void deindent(withoutNewLine?: boolean): void newline(): void @@ -96,7 +95,7 @@ function createCodegenContext( const name = helperNameMap[key] return prefixIdentifiers ? name : `_${name}` }, - push(code, node, openOnly) { + push(code, node) { context.code += code if (!__BROWSER__ && context.map) { if (node) { @@ -110,16 +109,11 @@ function createCodegenContext( addMapping(node.loc.start, name) } advancePositionWithMutation(context, code) - if (node && !openOnly) { + if (node && node.loc !== locStub) { addMapping(node.loc.end) } } }, - resetMapping(loc: SourceLocation) { - if (!__BROWSER__ && context.map) { - addMapping(loc.start) - } - }, indent() { newline(++context.indentLevel) }, @@ -279,7 +273,8 @@ export function generate( return { ast, code: context.code, - map: context.map ? context.map.toJSON() : undefined + // SourceMapGenerator does have toJSON() method but it's not in the types + map: context.map ? (context.map as any).toJSON() : undefined } } @@ -510,13 +505,13 @@ function genCallExpression(node: CallExpression, context: CodegenContext) { const callee = isString(node.callee) ? node.callee : context.helper(node.callee) - context.push(callee + `(`, node, true) + context.push(callee + `(`, node) genNodeList(node.arguments, context) context.push(`)`) } function genObjectExpression(node: ObjectExpression, context: CodegenContext) { - const { push, indent, deindent, newline, resetMapping } = context + const { push, indent, deindent, newline } = context const { properties } = node if (!properties.length) { push(`{}`, node) @@ -529,8 +524,7 @@ function genObjectExpression(node: ObjectExpression, context: CodegenContext) { push(multilines ? `{` : `{ `) multilines && indent() for (let i = 0; i < properties.length; i++) { - const { key, value, loc } = properties[i] - resetMapping(loc) // reset source mapping for every property. + const { key, value } = properties[i] // key genExpressionAsPropertyKey(key, context) push(`: `) diff --git a/packages/compiler-sfc/__tests__/__snapshots__/compileTemplate.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/compileTemplate.spec.ts.snap index 8cb28f25e..d5ef08a12 100644 --- a/packages/compiler-sfc/__tests__/__snapshots__/compileTemplate.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/__snapshots__/compileTemplate.spec.ts.snap @@ -2,7 +2,7 @@ exports[`source map 1`] = ` Object { - "mappings": ";;;;UAAA,aACE;IAAK,gCAAMA,WAAM", + "mappings": ";;;;UAAA,aACE,YAA8B;IAAzB,YAAmB,oBAAbA,WAAM", "names": Array [ "render", ], diff --git a/packages/compiler-sfc/package.json b/packages/compiler-sfc/package.json index aa16a9ca4..e6762b4bb 100644 --- a/packages/compiler-sfc/package.json +++ b/packages/compiler-sfc/package.json @@ -35,7 +35,7 @@ "merge-source-map": "^1.1.0", "postcss": "^7.0.21", "postcss-selector-parser": "^6.0.2", - "source-map": "^0.7.3" + "source-map": "^0.6.1" }, "devDependencies": { "@types/consolidate": "^0.14.0", diff --git a/yarn.lock b/yarn.lock index 784174a25..a7a1e88f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4990,11 +4990,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - sourcemap-codec@^1.4.4: version "1.4.6" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz#e30a74f0402bad09807640d39e971090a08ce1e9"