Skip to content

Commit

Permalink
fix(compiler-sfc): should extract comment for import or type declarat…
Browse files Browse the repository at this point in the history
…ions

fix vuejs#2102
  • Loading branch information
underfin committed Sep 13, 2020
1 parent 7417bac commit 25e4162
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
Expand Up @@ -373,6 +373,19 @@ export function setup() {
x()
return { }
}
export default { setup }"
`;
exports[`SFC compile <script setup> should extract comment for import or type declarations 1`] = `
"import a from 'a' // comment
import b from 'b'
export function setup() {
return { }
}
Expand Down
9 changes: 9 additions & 0 deletions packages/compiler-sfc/__tests__/compileScript.spec.ts
Expand Up @@ -28,6 +28,15 @@ describe('SFC compile <script setup>', () => {
)
})

test('should extract comment for import or type declarations', () => {
assertCode(
compile(`<script setup>
import a from 'a' // comment
import b from 'b'
</script>`).content
)
})

test('explicit setup signature', () => {
assertCode(
compile(`<script setup="props, { emit }">emit('foo')</script>`).content
Expand Down
6 changes: 6 additions & 0 deletions packages/compiler-sfc/src/compileScript.ts
Expand Up @@ -260,6 +260,12 @@ export function compileScript(
const start = node.start! + startOffset
let end = node.end! + startOffset
// import or type declarations: move to top
// locate comment
if (node.trailingComments && node.trailingComments.length > 0) {
const lastCommentNode =
node.trailingComments[node.trailingComments.length - 1]
end = lastCommentNode.end + startOffset
}
// locate the end of whitespace between this statement and the next
while (end <= source.length) {
if (!/\s/.test(source.charAt(end))) {
Expand Down

0 comments on commit 25e4162

Please sign in to comment.