feat(compiler): correct source map generation
This commit is contained in:
@@ -3,8 +3,8 @@ import { SourceMapConsumer, RawSourceMap } from 'source-map'
|
||||
|
||||
describe('compiler: integration tests', () => {
|
||||
const source = `
|
||||
<div id="foo" :class="bar">
|
||||
{{ world }}
|
||||
<div id="foo" :class="bar.baz">
|
||||
{{ world.burn() }}
|
||||
<div v-if="ok">yes</div>
|
||||
<template v-else>no</template>
|
||||
<div v-for="(value, index) in list"><span>{{ value + index }}</span></div>
|
||||
@@ -55,7 +55,6 @@ describe('compiler: integration tests', () => {
|
||||
)
|
||||
|
||||
expect(code).toMatchSnapshot()
|
||||
expect(map).toMatchSnapshot()
|
||||
expect(map!.sources).toEqual([`foo.vue`])
|
||||
expect(map!.sourcesContent).toEqual([source])
|
||||
|
||||
@@ -77,9 +76,21 @@ describe('compiler: integration tests', () => {
|
||||
consumer.originalPositionFor(getPositionInCode(code, `bar`))
|
||||
).toMatchObject(getPositionInCode(source, `bar`))
|
||||
|
||||
// without prefixIdentifiers: true, identifiers inside compound expressions
|
||||
// are mapped to closest parent expression.
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `baz`))
|
||||
).toMatchObject(getPositionInCode(source, `bar`))
|
||||
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `world`))
|
||||
).toMatchObject(getPositionInCode(source, `{{ world }}`))
|
||||
).toMatchObject(getPositionInCode(source, `world`))
|
||||
|
||||
// without prefixIdentifiers: true, identifiers inside compound expressions
|
||||
// are mapped to closest parent expression.
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `burn()`))
|
||||
).toMatchObject(getPositionInCode(source, `world`))
|
||||
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `ok`))
|
||||
@@ -99,7 +110,7 @@ describe('compiler: integration tests', () => {
|
||||
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `value + index`))
|
||||
).toMatchObject(getPositionInCode(source, `{{ value + index }}`))
|
||||
).toMatchObject(getPositionInCode(source, `value + index`))
|
||||
})
|
||||
|
||||
test('function mode w/ prefixIdentifiers: true', async () => {
|
||||
@@ -112,7 +123,6 @@ describe('compiler: integration tests', () => {
|
||||
expect(code).toMatch(`const { createVNode, toString, renderList } = Vue`)
|
||||
|
||||
expect(code).toMatchSnapshot()
|
||||
expect(map).toMatchSnapshot()
|
||||
expect(map!.sources).toEqual([`foo.vue`])
|
||||
expect(map!.sourcesContent).toEqual([source])
|
||||
|
||||
@@ -136,15 +146,22 @@ describe('compiler: integration tests', () => {
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `_ctx.bar`, `bar`))
|
||||
).toMatchObject(getPositionInCode(source, `bar`, true))
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `baz`))
|
||||
).toMatchObject(getPositionInCode(source, `baz`))
|
||||
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `world`, true))
|
||||
).toMatchObject(getPositionInCode(source, `{{ world }}`, `world`))
|
||||
).toMatchObject(getPositionInCode(source, `world`, `world`))
|
||||
expect(
|
||||
consumer.originalPositionFor(
|
||||
getPositionInCode(code, `_ctx.world`, `world`)
|
||||
)
|
||||
).toMatchObject(getPositionInCode(source, `{{ world }}`, `world`))
|
||||
).toMatchObject(getPositionInCode(source, `world`, `world`))
|
||||
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `burn()`))
|
||||
).toMatchObject(getPositionInCode(source, `burn()`))
|
||||
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `ok`))
|
||||
@@ -208,15 +225,22 @@ describe('compiler: integration tests', () => {
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `_ctx.bar`, `bar`))
|
||||
).toMatchObject(getPositionInCode(source, `bar`, true))
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `baz`))
|
||||
).toMatchObject(getPositionInCode(source, `baz`))
|
||||
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `world`, true))
|
||||
).toMatchObject(getPositionInCode(source, `{{ world }}`, `world`))
|
||||
).toMatchObject(getPositionInCode(source, `world`, `world`))
|
||||
expect(
|
||||
consumer.originalPositionFor(
|
||||
getPositionInCode(code, `_ctx.world`, `world`)
|
||||
)
|
||||
).toMatchObject(getPositionInCode(source, `{{ world }}`, `world`))
|
||||
).toMatchObject(getPositionInCode(source, `world`, `world`))
|
||||
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `burn()`))
|
||||
).toMatchObject(getPositionInCode(source, `burn()`))
|
||||
|
||||
expect(
|
||||
consumer.originalPositionFor(getPositionInCode(code, `ok`))
|
||||
|
||||
Reference in New Issue
Block a user