@@ -12,7 +12,7 @@ use rustc_lexer::{tokenize, TokenKind};
1212use rustc_lint:: { LateContext , LateLintPass , LintContext } ;
1313use rustc_middle:: lint:: in_external_macro;
1414use rustc_session:: { declare_tool_lint, impl_lint_pass} ;
15- use rustc_span:: { BytePos , Pos , Span , SyntaxContext } ;
15+ use rustc_span:: { BytePos , Pos , RelativeBytePos , Span , SyntaxContext } ;
1616
1717declare_clippy_lint ! {
1818 /// ### What it does
@@ -490,7 +490,7 @@ fn item_has_safety_comment(cx: &LateContext<'_>, item: &hir::Item<'_>) -> HasSaf
490490 match text_has_safety_comment (
491491 src,
492492 & lines[ comment_start_line. line + 1 ..=unsafe_line. line ] ,
493- unsafe_line. sf . start_pos . to_usize ( ) ,
493+ unsafe_line. sf . start_pos ,
494494 ) {
495495 Some ( b) => HasSafetyComment :: Yes ( b) ,
496496 None => HasSafetyComment :: No ,
@@ -534,7 +534,7 @@ fn stmt_has_safety_comment(cx: &LateContext<'_>, span: Span, hir_id: HirId) -> H
534534 match text_has_safety_comment (
535535 src,
536536 & lines[ comment_start_line. line + 1 ..=unsafe_line. line ] ,
537- unsafe_line. sf . start_pos . to_usize ( ) ,
537+ unsafe_line. sf . start_pos ,
538538 ) {
539539 Some ( b) => HasSafetyComment :: Yes ( b) ,
540540 None => HasSafetyComment :: No ,
@@ -595,7 +595,7 @@ fn span_from_macro_expansion_has_safety_comment(cx: &LateContext<'_>, span: Span
595595 match text_has_safety_comment (
596596 src,
597597 & lines[ macro_line. line + 1 ..=unsafe_line. line ] ,
598- unsafe_line. sf . start_pos . to_usize ( ) ,
598+ unsafe_line. sf . start_pos ,
599599 ) {
600600 Some ( b) => HasSafetyComment :: Yes ( b) ,
601601 None => HasSafetyComment :: No ,
@@ -658,7 +658,7 @@ fn span_has_safety_comment(cx: &LateContext<'_>, span: Span) -> bool {
658658 body_line. line < unsafe_line. line && text_has_safety_comment (
659659 src,
660660 & lines[ body_line. line + 1 ..=unsafe_line. line ] ,
661- unsafe_line. sf . start_pos . to_usize ( ) ,
661+ unsafe_line. sf . start_pos ,
662662 ) . is_some ( )
663663 } )
664664 } else {
@@ -671,13 +671,13 @@ fn span_has_safety_comment(cx: &LateContext<'_>, span: Span) -> bool {
671671}
672672
673673/// Checks if the given text has a safety comment for the immediately proceeding line.
674- fn text_has_safety_comment ( src : & str , line_starts : & [ BytePos ] , offset : usize ) -> Option < BytePos > {
674+ fn text_has_safety_comment ( src : & str , line_starts : & [ RelativeBytePos ] , start_pos : BytePos ) -> Option < BytePos > {
675675 let mut lines = line_starts
676676 . array_windows :: < 2 > ( )
677677 . rev ( )
678678 . map_while ( |[ start, end] | {
679- let start = start. to_usize ( ) - offset ;
680- let end = end. to_usize ( ) - offset ;
679+ let start = start. to_usize ( ) ;
680+ let end = end. to_usize ( ) ;
681681 let text = src. get ( start..end) ?;
682682 let trimmed = text. trim_start ( ) ;
683683 Some ( ( start + ( text. len ( ) - trimmed. len ( ) ) , trimmed) )
@@ -692,9 +692,7 @@ fn text_has_safety_comment(src: &str, line_starts: &[BytePos], offset: usize) ->
692692 let ( mut line, mut line_start) = ( line, line_start) ;
693693 loop {
694694 if line. to_ascii_uppercase ( ) . contains ( "SAFETY:" ) {
695- return Some ( BytePos (
696- u32:: try_from ( line_start) . unwrap ( ) + u32:: try_from ( offset) . unwrap ( ) ,
697- ) ) ;
695+ return Some ( start_pos + BytePos ( u32:: try_from ( line_start) . unwrap ( ) ) ) ;
698696 }
699697 match lines. next ( ) {
700698 Some ( ( s, x) ) if x. starts_with ( "//" ) => ( line, line_start) = ( x, s) ,
@@ -707,15 +705,13 @@ fn text_has_safety_comment(src: &str, line_starts: &[BytePos], offset: usize) ->
707705 let ( mut line_start, mut line) = ( line_start, line) ;
708706 loop {
709707 if line. starts_with ( "/*" ) {
710- let src = & src[ line_start..line_starts. last ( ) . unwrap ( ) . to_usize ( ) - offset ] ;
708+ let src = & src[ line_start..line_starts. last ( ) . unwrap ( ) . to_usize ( ) ] ;
711709 let mut tokens = tokenize ( src) ;
712710 return ( src[ ..tokens. next ( ) . unwrap ( ) . len as usize ]
713711 . to_ascii_uppercase ( )
714712 . contains ( "SAFETY:" )
715713 && tokens. all ( |t| t. kind == TokenKind :: Whitespace ) )
716- . then_some ( BytePos (
717- u32:: try_from ( line_start) . unwrap ( ) + u32:: try_from ( offset) . unwrap ( ) ,
718- ) ) ;
714+ . then_some ( start_pos + BytePos ( u32:: try_from ( line_start) . unwrap ( ) ) ) ;
719715 }
720716 match lines. next ( ) {
721717 Some ( x) => ( line_start, line) = x,
0 commit comments