use rustc_span::Span;
use clippy_utils::diagnostics::span_lint;
-use clippy_utils::source::snippet;
+use clippy_utils::source::snippet_opt;
use super::TOO_MANY_LINES;
return;
}
- let code_snippet = snippet(cx, body.value.span, "..");
+ let code_snippet = match snippet_opt(cx, body.value.span) {
+ Some(s) => s,
+ _ => return,
+ };
let mut line_count: u64 = 0;
let mut in_comment = false;
let mut code_in_line;
- // Skip the surrounding function decl.
- let start_brace_idx = code_snippet.find('{').map_or(0, |i| i + 1);
- let end_brace_idx = code_snippet.rfind('}').unwrap_or_else(|| code_snippet.len());
- let function_lines = code_snippet[start_brace_idx..end_brace_idx].lines();
+ let function_lines = if matches!(body.value.kind, hir::ExprKind::Block(..))
+ && code_snippet.as_bytes().first().copied() == Some(b'{')
+ && code_snippet.as_bytes().last().copied() == Some(b'}')
+ {
+ // Removing the braces from the enclosing block
+ &code_snippet[1..code_snippet.len() - 1]
+ } else {
+ &code_snippet
+ }
+ .trim() // Remove leading and trailing blank lines
+ .lines();
for mut line in function_lines {
code_in_line = false;
--- /dev/null
+// aux-build:ice-7272-aux.rs
+
+#![allow(clippy::no_effect)]
+
+extern crate ice_7272_aux;
+
+use ice_7272_aux::*;
+
+pub fn main() {
+ || WARNING!("Style changed!");
+ || "}{";
+}