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