Use Freeze
for SourceFile.lines
This commit is contained in:
parent
953901e35c
commit
0f74faf158
@ -507,20 +507,18 @@ fn item_has_safety_comment(cx: &LateContext<'_>, item: &hir::Item<'_>) -> HasSaf
|
|||||||
&& Lrc::ptr_eq(&unsafe_line.sf, &comment_start_line.sf)
|
&& Lrc::ptr_eq(&unsafe_line.sf, &comment_start_line.sf)
|
||||||
&& let Some(src) = unsafe_line.sf.src.as_deref()
|
&& let Some(src) = unsafe_line.sf.src.as_deref()
|
||||||
{
|
{
|
||||||
return unsafe_line.sf.lines(|lines| {
|
return if comment_start_line.line >= unsafe_line.line {
|
||||||
if comment_start_line.line >= unsafe_line.line {
|
HasSafetyComment::No
|
||||||
HasSafetyComment::No
|
} else {
|
||||||
} else {
|
match text_has_safety_comment(
|
||||||
match text_has_safety_comment(
|
src,
|
||||||
src,
|
&unsafe_line.sf.lines()[comment_start_line.line + 1..=unsafe_line.line],
|
||||||
&lines[comment_start_line.line + 1..=unsafe_line.line],
|
unsafe_line.sf.start_pos,
|
||||||
unsafe_line.sf.start_pos,
|
) {
|
||||||
) {
|
Some(b) => HasSafetyComment::Yes(b),
|
||||||
Some(b) => HasSafetyComment::Yes(b),
|
None => HasSafetyComment::No,
|
||||||
None => HasSafetyComment::No,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
HasSafetyComment::Maybe
|
HasSafetyComment::Maybe
|
||||||
@ -551,20 +549,18 @@ fn stmt_has_safety_comment(cx: &LateContext<'_>, span: Span, hir_id: HirId) -> H
|
|||||||
&& Lrc::ptr_eq(&unsafe_line.sf, &comment_start_line.sf)
|
&& Lrc::ptr_eq(&unsafe_line.sf, &comment_start_line.sf)
|
||||||
&& let Some(src) = unsafe_line.sf.src.as_deref()
|
&& let Some(src) = unsafe_line.sf.src.as_deref()
|
||||||
{
|
{
|
||||||
return unsafe_line.sf.lines(|lines| {
|
return if comment_start_line.line >= unsafe_line.line {
|
||||||
if comment_start_line.line >= unsafe_line.line {
|
HasSafetyComment::No
|
||||||
HasSafetyComment::No
|
} else {
|
||||||
} else {
|
match text_has_safety_comment(
|
||||||
match text_has_safety_comment(
|
src,
|
||||||
src,
|
&unsafe_line.sf.lines()[comment_start_line.line + 1..=unsafe_line.line],
|
||||||
&lines[comment_start_line.line + 1..=unsafe_line.line],
|
unsafe_line.sf.start_pos,
|
||||||
unsafe_line.sf.start_pos,
|
) {
|
||||||
) {
|
Some(b) => HasSafetyComment::Yes(b),
|
||||||
Some(b) => HasSafetyComment::Yes(b),
|
None => HasSafetyComment::No,
|
||||||
None => HasSafetyComment::No,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
HasSafetyComment::Maybe
|
HasSafetyComment::Maybe
|
||||||
@ -614,20 +610,18 @@ fn span_from_macro_expansion_has_safety_comment(cx: &LateContext<'_>, span: Span
|
|||||||
&& Lrc::ptr_eq(&unsafe_line.sf, ¯o_line.sf)
|
&& Lrc::ptr_eq(&unsafe_line.sf, ¯o_line.sf)
|
||||||
&& let Some(src) = unsafe_line.sf.src.as_deref()
|
&& let Some(src) = unsafe_line.sf.src.as_deref()
|
||||||
{
|
{
|
||||||
unsafe_line.sf.lines(|lines| {
|
if macro_line.line < unsafe_line.line {
|
||||||
if macro_line.line < unsafe_line.line {
|
match text_has_safety_comment(
|
||||||
match text_has_safety_comment(
|
src,
|
||||||
src,
|
&unsafe_line.sf.lines()[macro_line.line + 1..=unsafe_line.line],
|
||||||
&lines[macro_line.line + 1..=unsafe_line.line],
|
unsafe_line.sf.start_pos,
|
||||||
unsafe_line.sf.start_pos,
|
) {
|
||||||
) {
|
Some(b) => HasSafetyComment::Yes(b),
|
||||||
Some(b) => HasSafetyComment::Yes(b),
|
None => HasSafetyComment::No,
|
||||||
None => HasSafetyComment::No,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
HasSafetyComment::No
|
|
||||||
}
|
}
|
||||||
})
|
} else {
|
||||||
|
HasSafetyComment::No
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Problem getting source text. Pretend a comment was found.
|
// Problem getting source text. Pretend a comment was found.
|
||||||
HasSafetyComment::Maybe
|
HasSafetyComment::Maybe
|
||||||
@ -671,13 +665,11 @@ fn span_in_body_has_safety_comment(cx: &LateContext<'_>, span: Span) -> bool {
|
|||||||
// Get the text from the start of function body to the unsafe block.
|
// Get the text from the start of function body to the unsafe block.
|
||||||
// fn foo() { some_stuff; unsafe { stuff }; other_stuff; }
|
// fn foo() { some_stuff; unsafe { stuff }; other_stuff; }
|
||||||
// ^-------------^
|
// ^-------------^
|
||||||
unsafe_line.sf.lines(|lines| {
|
body_line.line < unsafe_line.line && text_has_safety_comment(
|
||||||
body_line.line < unsafe_line.line && text_has_safety_comment(
|
src,
|
||||||
src,
|
&unsafe_line.sf.lines()[body_line.line + 1..=unsafe_line.line],
|
||||||
&lines[body_line.line + 1..=unsafe_line.line],
|
unsafe_line.sf.start_pos,
|
||||||
unsafe_line.sf.start_pos,
|
).is_some()
|
||||||
).is_some()
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
// Problem getting source text. Pretend a comment was found.
|
// Problem getting source text. Pretend a comment was found.
|
||||||
true
|
true
|
||||||
|
@ -118,7 +118,7 @@ fn first_char_in_first_line<T: LintContext>(cx: &T, span: Span) -> Option<BytePo
|
|||||||
fn line_span<T: LintContext>(cx: &T, span: Span) -> Span {
|
fn line_span<T: LintContext>(cx: &T, span: Span) -> Span {
|
||||||
let span = original_sp(span, DUMMY_SP);
|
let span = original_sp(span, DUMMY_SP);
|
||||||
let SourceFileAndLine { sf, line } = cx.sess().source_map().lookup_line(span.lo()).unwrap();
|
let SourceFileAndLine { sf, line } = cx.sess().source_map().lookup_line(span.lo()).unwrap();
|
||||||
let line_start = sf.lines(|lines| lines[line]);
|
let line_start = sf.lines()[line];
|
||||||
let line_start = sf.absolute_position(line_start);
|
let line_start = sf.absolute_position(line_start);
|
||||||
span.with_lo(line_start)
|
span.with_lo(line_start)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user