diff options
| author | Martins Polakovs <martins.polakovs@gmail.com> | 2019-02-23 19:29:30 +0200 |
|---|---|---|
| committer | Martins Polakovs <martins.polakovs@gmail.com> | 2019-02-23 21:38:16 +0200 |
| commit | 391ee7987dca6c5ca9ea32a4d8dfd28586d4c89a (patch) | |
| tree | 0c81cefc3e5f9103b725ed989645355110180521 | |
| parent | 68114c40cbddfb0f45171d8dfe9369461bbfe411 (diff) | |
| download | rust-391ee7987dca6c5ca9ea32a4d8dfd28586d4c89a.tar.gz rust-391ee7987dca6c5ca9ea32a4d8dfd28586d4c89a.zip | |
Fix ICE #3747
[Martins Polakovs, John Firebaugh]
| -rw-r--r-- | clippy_lints/src/functions.rs | 6 | ||||
| -rw-r--r-- | tests/ui/crashes/ice-3747.rs | 17 |
2 files changed, 20 insertions, 3 deletions
diff --git a/clippy_lints/src/functions.rs b/clippy_lints/src/functions.rs index b6e0480d986..c37f45dd414 100644 --- a/clippy_lints/src/functions.rs +++ b/clippy_lints/src/functions.rs @@ -147,7 +147,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Functions { } self.check_raw_ptr(cx, unsafety, decl, body, nodeid); - self.check_line_number(cx, span); + self.check_line_number(cx, span, body); } fn check_trait_item(&mut self, cx: &LateContext<'a, 'tcx>, item: &'tcx hir::TraitItem) { @@ -178,12 +178,12 @@ impl<'a, 'tcx> Functions { } } - fn check_line_number(self, cx: &LateContext<'_, '_>, span: Span) { + fn check_line_number(self, cx: &LateContext<'_, '_>, span: Span, body: &'tcx hir::Body) { if in_external_macro(cx.sess(), span) { return; } - let code_snippet = snippet(cx, span, ".."); + let code_snippet = snippet(cx, body.value.span, ".."); let mut line_count: u64 = 0; let mut in_comment = false; let mut code_in_line; diff --git a/tests/ui/crashes/ice-3747.rs b/tests/ui/crashes/ice-3747.rs new file mode 100644 index 00000000000..cdf018cbc88 --- /dev/null +++ b/tests/ui/crashes/ice-3747.rs @@ -0,0 +1,17 @@ +/// Test for https://github.com/rust-lang/rust-clippy/issues/3747 + +macro_rules! a { + ( $pub:tt $($attr:tt)* ) => { + $($attr)* $pub fn say_hello() {} + }; +} + +macro_rules! b { + () => { + a! { pub } + }; +} + +b! {} + +fn main() {} |
