@@ -13,6 +13,7 @@ use crate::nodelist::NodeList;
1313use crate :: nodelist:: TagBit ;
1414use crate :: nodelist:: TagName ;
1515use crate :: nodelist:: VariableName ;
16+ use crate :: spans:: SpanPair ;
1617use crate :: tokens:: span_from_token;
1718use crate :: tokens:: Token ;
1819use crate :: tokens:: TokenStream ;
@@ -76,10 +77,10 @@ impl<'db> Parser<'db> {
7677 let token = self . peek_previous ( ) ?;
7778
7879 let span = span_from_token ( token, self . db ) ;
80+ let full_span = token. full_span ( ) . unwrap_or ( span) ;
7981 Ok ( Node :: Comment {
8082 content : token. content ( self . db ) ,
81- span,
82- full_span : token. full_span ( ) . unwrap_or ( span) ,
83+ spans : SpanPair :: new ( span, full_span) ,
8384 } )
8485 }
8586
@@ -125,8 +126,7 @@ impl<'db> Parser<'db> {
125126 Ok ( Node :: Tag {
126127 name,
127128 bits,
128- span,
129- full_span,
129+ spans : SpanPair :: new ( span, full_span) ,
130130 } )
131131 }
132132
@@ -160,8 +160,7 @@ impl<'db> Parser<'db> {
160160 Ok ( Node :: Variable {
161161 var,
162162 filters,
163- span,
164- full_span,
163+ spans : SpanPair :: new ( span, full_span) ,
165164 } )
166165 }
167166
@@ -196,8 +195,7 @@ impl<'db> Parser<'db> {
196195 let span = Span :: new ( start, length) ;
197196
198197 Ok ( Node :: Text {
199- span,
200- full_span : span,
198+ spans : SpanPair :: new ( span, span) ,
201199 } )
202200 }
203201
@@ -265,22 +263,18 @@ impl<'db> Parser<'db> {
265263 . map ( |token| {
266264 let span = span_from_token ( token, self . db ) ;
267265 let full_span = token. full_span ( ) . unwrap_or ( span) ;
268- ( span, full_span)
266+ SpanPair :: new ( span, full_span)
269267 } ) ;
270268
271- let ( span , full_span ) = spans. unwrap_or_else ( || {
269+ let spans = spans. unwrap_or_else ( || {
272270 let empty = Span :: new ( 0 , 0 ) ;
273- ( empty, empty)
271+ SpanPair :: new ( empty, empty)
274272 } ) ;
275273
276274 self . report_error ( & error) ;
277275
278276 Node :: Error {
279- node : ErrorNode {
280- span,
281- full_span,
282- error,
283- } ,
277+ node : ErrorNode { spans, error } ,
284278 }
285279 }
286280}
@@ -433,44 +427,34 @@ mod tests {
433427 impl TestNode {
434428 fn from_node ( node : & Node < ' _ > , db : & dyn crate :: db:: Db ) -> Self {
435429 match node {
436- Node :: Tag {
437- name,
438- bits,
439- span,
440- full_span,
441- } => TestNode :: Tag {
430+ Node :: Tag { name, bits, spans } => TestNode :: Tag {
442431 name : name. text ( db) . to_string ( ) ,
443432 bits : bits. iter ( ) . map ( |b| b. text ( db) . to_string ( ) ) . collect ( ) ,
444- span : ( span . start , span . length ) ,
445- full_span : ( full_span . start , full_span . length ) ,
433+ span : spans . content_tuple ( ) ,
434+ full_span : spans . lexeme_tuple ( ) ,
446435 } ,
447- Node :: Comment {
448- content,
449- span,
450- full_span,
451- } => TestNode :: Comment {
436+ Node :: Comment { content, spans } => TestNode :: Comment {
452437 content : content. clone ( ) ,
453- span : ( span . start , span . length ) ,
454- full_span : ( full_span . start , full_span . length ) ,
438+ span : spans . content_tuple ( ) ,
439+ full_span : spans . lexeme_tuple ( ) ,
455440 } ,
456- Node :: Text { span , full_span } => TestNode :: Text {
457- span : ( span . start , span . length ) ,
458- full_span : ( full_span . start , full_span . length ) ,
441+ Node :: Text { spans } => TestNode :: Text {
442+ span : spans . content_tuple ( ) ,
443+ full_span : spans . lexeme_tuple ( ) ,
459444 } ,
460445 Node :: Variable {
461446 var,
462447 filters,
463- span,
464- full_span,
448+ spans,
465449 } => TestNode :: Variable {
466450 var : var. text ( db) . to_string ( ) ,
467451 filters : filters. iter ( ) . map ( |f| f. text ( db) . to_string ( ) ) . collect ( ) ,
468- span : ( span . start , span . length ) ,
469- full_span : ( full_span . start , full_span . length ) ,
452+ span : spans . content_tuple ( ) ,
453+ full_span : spans . lexeme_tuple ( ) ,
470454 } ,
471455 Node :: Error { node } => TestNode :: Error {
472- span : ( node. span . start , node . span . length ) ,
473- full_span : ( node. full_span . start , node . full_span . length ) ,
456+ span : node. spans . content_tuple ( ) ,
457+ full_span : node. spans . lexeme_tuple ( ) ,
474458 error : node. error . clone ( ) ,
475459 } ,
476460 }
0 commit comments