@@ -25,12 +25,13 @@ export function* generateComponent(
2525 ctx : TemplateCodegenContext ,
2626 node : CompilerDOM . ElementNode
2727) : Generator < Code > {
28- const startTagOffset = node . loc . start . offset + options . template . content . slice ( node . loc . start . offset ) . indexOf ( node . tag ) ;
29- const endTagOffset = ! node . isSelfClosing && options . template . lang === 'html' ? node . loc . start . offset + node . loc . source . lastIndexOf ( node . tag ) : undefined ;
30- const tagOffsets =
31- endTagOffset !== undefined && endTagOffset > startTagOffset
32- ? [ startTagOffset , endTagOffset ]
33- : [ startTagOffset ] ;
28+ const tagOffsets = [ node . loc . start . offset + options . template . content . slice ( node . loc . start . offset ) . indexOf ( node . tag ) ] ;
29+ if ( ! node . isSelfClosing && options . template . lang === 'html' ) {
30+ const endTagOffset = node . loc . start . offset + node . loc . source . lastIndexOf ( node . tag ) ;
31+ if ( endTagOffset > tagOffsets [ 0 ] ) {
32+ tagOffsets . push ( endTagOffset ) ;
33+ }
34+ }
3435 const failedPropExps : FailedPropExpression [ ] = [ ] ;
3536 const possibleOriginalNames = getPossibleOriginalComponentNames ( node . tag , true ) ;
3637 const matchImportName = possibleOriginalNames . find ( name => options . scriptSetupImportComponentNames . has ( name ) ) ;
@@ -51,7 +52,7 @@ export function* generateComponent(
5152 let props = node . props ;
5253 let dynamicTagInfo : {
5354 tag : string ;
54- offsets : [ number , number | undefined ] ;
55+ offsets : number [ ] ;
5556 astHolder : CompilerDOM . SourceLocation ;
5657 } | undefined ;
5758
@@ -68,7 +69,7 @@ export function* generateComponent(
6869 }
6970 dynamicTagInfo = {
7071 tag : prop . exp . content ,
71- offsets : [ prop . exp . loc . start . offset , undefined ] ,
72+ offsets : [ prop . exp . loc . start . offset ] ,
7273 astHolder : prop . exp . loc ,
7374 } ;
7475 props = props . filter ( p => p !== prop ) ;
@@ -80,7 +81,7 @@ export function* generateComponent(
8081 // namespace tag
8182 dynamicTagInfo = {
8283 tag : node . tag ,
83- offsets : [ startTagOffset , endTagOffset ] ,
84+ offsets : tagOffsets ,
8485 astHolder : node . loc ,
8586 } ;
8687 }
@@ -157,7 +158,7 @@ export function* generateComponent(
157158 yield `>).` ;
158159 yield * generateCanonicalComponentName (
159160 node . tag ,
160- startTagOffset ,
161+ tagOffsets [ 0 ] ,
161162 ctx . codeFeatures . withoutHighlightAndCompletionAndNavigation
162163 ) ;
163164 yield `${ endOfLine } ` ;
@@ -189,7 +190,7 @@ export function* generateComponent(
189190 yield `// @ts-ignore${ newLine } ` ; // #2304
190191 yield * generateCamelized (
191192 capitalize ( node . tag ) ,
192- startTagOffset ,
193+ tagOffsets [ 0 ] ,
193194 {
194195 completion : {
195196 isAdditional : true ,
@@ -227,8 +228,8 @@ export function* generateComponent(
227228 yield * generateComponentGeneric ( ctx ) ;
228229 yield `(` ;
229230 yield * wrapWith (
230- startTagOffset ,
231- startTagOffset + node . tag . length ,
231+ tagOffsets [ 0 ] ,
232+ tagOffsets [ 0 ] + node . tag . length ,
232233 ctx . codeFeatures . verification ,
233234 `{${ newLine } ` ,
234235 ...generateElementProps ( options , ctx , node , props , options . vueCompilerOptions . strictTemplates , true , failedPropExps ) ,
0 commit comments