@@ -22,6 +22,7 @@ pub trait SpanUtils {
22
22
fn span_after_last ( & self , original : Span , needle : & str ) -> BytePos ;
23
23
fn span_before ( & self , original : Span , needle : & str ) -> BytePos ;
24
24
fn opt_span_after ( & self , original : Span , needle : & str ) -> Option < BytePos > ;
25
+ fn opt_span_before ( & self , original : Span , needle : & str ) -> Option < BytePos > ;
25
26
}
26
27
27
28
pub trait LineRangeUtils {
@@ -35,10 +36,7 @@ pub trait LineRangeUtils {
35
36
36
37
impl < ' a > SpanUtils for SnippetProvider < ' a > {
37
38
fn span_after ( & self , original : Span , needle : & str ) -> BytePos {
38
- let snippet = self . span_to_snippet ( original) . expect ( "Bad snippet" ) ;
39
- let offset = snippet. find_uncommented ( needle) . expect ( "Bad offset" ) + needle. len ( ) ;
40
-
41
- original. lo ( ) + BytePos ( offset as u32 )
39
+ self . opt_span_after ( original, needle) . expect ( "bad span" )
42
40
}
43
41
44
42
fn span_after_last ( & self , original : Span , needle : & str ) -> BytePos {
@@ -53,15 +51,17 @@ impl<'a> SpanUtils for SnippetProvider<'a> {
53
51
}
54
52
55
53
fn span_before ( & self , original : Span , needle : & str ) -> BytePos {
56
- let snippet = self . span_to_snippet ( original) . unwrap ( ) ;
57
- let offset = snippet. find_uncommented ( needle) . unwrap ( ) ;
58
-
59
- original. lo ( ) + BytePos ( offset as u32 )
54
+ self . opt_span_before ( original, needle) . expect ( "bad span" )
60
55
}
61
56
62
57
fn opt_span_after ( & self , original : Span , needle : & str ) -> Option < BytePos > {
58
+ self . opt_span_before ( original, needle)
59
+ . map ( |bytepos| bytepos + BytePos ( needle. len ( ) as u32 ) )
60
+ }
61
+
62
+ fn opt_span_before ( & self , original : Span , needle : & str ) -> Option < BytePos > {
63
63
let snippet = self . span_to_snippet ( original) ?;
64
- let offset = snippet. find_uncommented ( needle) ? + needle . len ( ) ;
64
+ let offset = snippet. find_uncommented ( needle) ?;
65
65
66
66
Some ( original. lo ( ) + BytePos ( offset as u32 ) )
67
67
}
0 commit comments