Skip to content

Commit

Permalink
fix(compiler-sfc): fix 'export default' rewrite with extra whitespaces (
Browse files Browse the repository at this point in the history
  • Loading branch information
lidlanca committed Aug 23, 2021
1 parent 9043d0d commit 4792ebd
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 5 deletions.
Expand Up @@ -33,6 +33,48 @@ return { x }
export const n = 1"
`;
exports[`SFC compile <script setup> <script> and <script setup> co-usage spaces in ExportDefaultDeclaration node with many spaces and newline 1`] = `
"import { x } from './x'
export const n = 1
const __default__ = {
some:'option'
}
function setup(__props, { expose }) {
x()
return { x }
}
export default /*#__PURE__*/ Object.assign(__default__, {
setup
})"
`;
exports[`SFC compile <script setup> <script> and <script setup> co-usage spaces in ExportDefaultDeclaration node with minimal spaces 1`] = `
"import { x } from './x'
export const n = 1
const __default__ = {
some:'option'
}
function setup(__props, { expose }) {
x()
return { x }
}
export default /*#__PURE__*/ Object.assign(__default__, {
setup
})"
`;
exports[`SFC compile <script setup> defineEmits() 1`] = `
"export default {
emits: ['foo', 'bar'],
Expand Down
37 changes: 37 additions & 0 deletions packages/compiler-sfc/__tests__/compileScript.spec.ts
Expand Up @@ -140,6 +140,43 @@ defineExpose({ foo: 123 })
})

describe('<script> and <script setup> co-usage', () => {
describe('spaces in ExportDefaultDeclaration node', () => {
// #4371
test('with many spaces and newline', () => {
// #4371
const { content } = compile(`
<script>
export const n = 1
export default
{
some:'option'
}
</script>
<script setup>
import { x } from './x'
x()
</script>
`)
assertCode(content)
})

test('with minimal spaces', () => {
const { content } = compile(`
<script>
export const n = 1
export default{
some:'option'
}
</script>
<script setup>
import { x } from './x'
x()
</script>
`)
assertCode(content)
})
})

test('script first', () => {
const { content } = compile(`
<script>
Expand Down
7 changes: 2 additions & 5 deletions packages/compiler-sfc/src/compileScript.ts
Expand Up @@ -605,11 +605,8 @@ export function compileScript(
// export default
defaultExport = node
const start = node.start! + scriptStartOffset!
s.overwrite(
start,
start + `export default`.length,
`const ${defaultTempVar} =`
)
const end = node.declaration.start! + scriptStartOffset!
s.overwrite(start, end, `const ${defaultTempVar} = `)
} else if (node.type === 'ExportNamedDeclaration' && node.specifiers) {
const defaultSpecifier = node.specifiers.find(
s => s.exported.type === 'Identifier' && s.exported.name === 'default'
Expand Down

0 comments on commit 4792ebd

Please sign in to comment.