fix(compiler-sfc): should extract comment for import or type declarations (#2107)
fix #2102
This commit is contained in:
parent
98cc1f9d84
commit
05df696a2b
@ -373,6 +373,19 @@ export function setup() {
|
|||||||
|
|
||||||
x()
|
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 { }
|
return { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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', () => {
|
test('explicit setup signature', () => {
|
||||||
assertCode(
|
assertCode(
|
||||||
compile(`<script setup="props, { emit }">emit('foo')</script>`).content
|
compile(`<script setup="props, { emit }">emit('foo')</script>`).content
|
||||||
|
@ -266,6 +266,12 @@ export function compileScript(
|
|||||||
const start = node.start! + startOffset
|
const start = node.start! + startOffset
|
||||||
let end = node.end! + startOffset
|
let end = node.end! + startOffset
|
||||||
// import or type declarations: move to top
|
// 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
|
// locate the end of whitespace between this statement and the next
|
||||||
while (end <= source.length) {
|
while (end <= source.length) {
|
||||||
if (!/\s/.test(source.charAt(end))) {
|
if (!/\s/.test(source.charAt(end))) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user