@@ -13,7 +13,7 @@ fn adapt_pattern(pattern: &mut ast::Pattern<String>, crlf: bool) {
1313 let mut elements = vec ! [ ] ;
1414 for element in & pattern. elements {
1515 match element {
16- ast:: PatternElement :: TextElement { value } => {
16+ ast:: PatternElement :: TextElement { value, .. } => {
1717 let mut start = 0 ;
1818 let len = value. len ( ) ;
1919 for ( i, b) in value. as_bytes ( ) . iter ( ) . enumerate ( ) {
@@ -22,29 +22,33 @@ fn adapt_pattern(pattern: &mut ast::Pattern<String>, crlf: bool) {
2222 if i > start {
2323 let chunk = & value. as_bytes ( ) [ start..=i - 1 ] ;
2424 let value = String :: from_utf8_lossy ( chunk) . to_string ( ) ;
25- elements. push ( ast:: PatternElement :: TextElement { value } ) ;
25+ elements. push ( ast:: PatternElement :: TextElement { value, # [ cfg ( feature = "spans" ) ] span : ast :: Span ( start..i ) } ) ;
2626 }
27+
2728 elements. push ( ast:: PatternElement :: TextElement {
2829 value : "\n " . to_string ( ) ,
30+ #[ cfg( feature = "spans" ) ]
31+ span : ast:: Span ( i..i+1 )
2932 } ) ;
3033 } else {
3134 let chunk = & value. as_bytes ( ) [ start..=i] ;
3235 let value = String :: from_utf8_lossy ( chunk) . to_string ( ) ;
33- elements. push ( ast:: PatternElement :: TextElement { value } ) ;
36+ elements. push ( ast:: PatternElement :: TextElement { value, # [ cfg ( feature = "spans" ) ] span : ast :: Span ( start..i+ 1 ) } ) ;
3437 }
3538 start = i + 1 ;
3639 }
3740 }
41+
3842 if start < len {
3943 let chunk = & value. as_bytes ( ) [ start..len] ;
4044 let value = String :: from_utf8_lossy ( chunk) . to_string ( ) ;
41- elements. push ( ast:: PatternElement :: TextElement { value } ) ;
45+ elements. push ( ast:: PatternElement :: TextElement { value, # [ cfg ( feature = "spans" ) ] span : ast :: Span ( start..len ) } ) ;
4246 }
4347 }
44- ast:: PatternElement :: Placeable { expression } => {
48+ ast:: PatternElement :: Placeable { expression, # [ cfg ( feature = "spans" ) ] span } => {
4549 let mut expression = expression. clone ( ) ;
4650 adapt_expression ( & mut expression, crlf) ;
47- elements. push ( ast:: PatternElement :: Placeable { expression } ) ;
51+ elements. push ( ast:: PatternElement :: Placeable { expression, # [ cfg ( feature = "spans" ) ] span : span . clone ( ) } ) ;
4852 }
4953 }
5054 }
@@ -58,7 +62,7 @@ fn adapt_expression(expression: &mut ast::Expression<String>, crlf: bool) {
5862 adapt_pattern ( & mut variant. value , crlf) ;
5963 }
6064 }
61- ast:: Expression :: Inline ( _ ) => { }
65+ ast:: Expression :: Inline ( .. ) => { }
6266 }
6367}
6468
0 commit comments