Skip to content

Commit 7eb3841

Browse files
committed
fix(compiler-sfc): make sure rewriteDefault get current result when use decorator before export default
1 parent 8dcb6c7 commit 7eb3841

File tree

2 files changed

+7
-43
lines changed

2 files changed

+7
-43
lines changed

Diff for: packages/compiler-sfc/__tests__/rewriteDefault.spec.ts

+1-42
Original file line numberDiff line numberDiff line change
@@ -152,45 +152,4 @@ describe('compiler sfc: rewriteDefault', () => {
152152
})
153153

154154
test('export default class', async () => {
155-
expect(rewriteDefault(`export default class Foo {}`, 'script'))
156-
.toMatchInlineSnapshot(`
157-
"class Foo {}
158-
const script = Foo"
159-
`)
160-
})
161-
162-
test('export default class w/ comments', async () => {
163-
expect(
164-
rewriteDefault(`// export default\nexport default class Foo {}`, 'script')
165-
).toMatchInlineSnapshot(`
166-
"// export default
167-
class Foo {}
168-
const script = Foo"
169-
`)
170-
})
171-
172-
test('export default class w/ comments 2', async () => {
173-
expect(
174-
rewriteDefault(
175-
`export default {}\n` + `// export default class Foo {}`,
176-
'script'
177-
)
178-
).toMatchInlineSnapshot(`
179-
"const script = {}
180-
// export default class Foo {}"
181-
`)
182-
})
183-
184-
test('export default class w/ comments 3', async () => {
185-
expect(
186-
rewriteDefault(
187-
`/*\nexport default class Foo {}*/\n` + `export default class Bar {}`,
188-
'script'
189-
)
190-
).toMatchInlineSnapshot(`
191-
"/*
192-
export default class Foo {}*/
193-
const script = class Bar {}"
194-
`)
195-
})
196-
})
155+
expect(rewriteDefault(`export d

Diff for: packages/compiler-sfc/src/rewriteDefault.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@ export function rewriteDefault(
4242
}).program.body
4343
ast.forEach(node => {
4444
if (node.type === 'ExportDefaultDeclaration') {
45-
s.overwrite(node.start!, node.declaration.start!, `const ${as} = `)
45+
if (node.declaration.type === 'ClassDeclaration') {
46+
s.overwrite(node.start!, node.declaration.id.start!, `class `)
47+
s.append(`\nconst ${as} = ${node.declaration.id.name}`)
48+
} else {
49+
s.overwrite(node.start!, node.declaration.start!, `const ${as} = `)
50+
}
4651
}
4752
if (node.type === 'ExportNamedDeclaration') {
4853
for (const specifier of node.specifiers) {

0 commit comments

Comments
 (0)