Skip to content

Commit

Permalink
Rollup merge of rust-lang#99026 - anall:buffix/clippy-9131, r=xFrednet
Browse files Browse the repository at this point in the history
Add test for and fix rust-lang/rust-clippy#9131

This lint seems to have been broken by rust-lang#98446 -- but of course, there was no clippy test for this case at the time.

`expr.span.ctxt().outer_expn_data()` now has `MacroKind::Derive` instead of `MacroKind::Attr` for something like:

```
#[derive(Clone, Debug)]
pub struct UnderscoreInStruct {
    _foo: u32,
}
```

---

changelog: none

closes: rust-lang/rust-clippy#9131
  • Loading branch information
Dylan-DPC authored Jul 8, 2022
2 parents fea7e45 + 98b8419 commit e7c69bf
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/tools/clippy/clippy_lints/src/misc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ fn in_attributes_expansion(expr: &Expr<'_>) -> bool {
use rustc_span::hygiene::MacroKind;
if expr.span.from_expansion() {
let data = expr.span.ctxt().outer_expn_data();
matches!(data.kind, ExpnKind::Macro(MacroKind::Attr, _))
matches!(data.kind, ExpnKind::Macro(MacroKind::Attr|MacroKind::Derive, _))
} else {
false
}
Expand Down
6 changes: 6 additions & 0 deletions src/tools/clippy/tests/ui/used_underscore_binding.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ fn in_struct_field() {
s._underscore_field += 1;
}

/// Tests that we do not lint if the struct field is used in code created with derive.
#[derive(Clone, Debug)]
pub struct UnderscoreInStruct {
_foo: u32,
}

/// Tests that we do not lint if the underscore is not a prefix
fn non_prefix_underscore(some_foo: u32) -> u32 {
some_foo + 1
Expand Down
2 changes: 1 addition & 1 deletion src/tools/clippy/tests/ui/used_underscore_binding.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ LL | s._underscore_field += 1;
| ^^^^^^^^^^^^^^^^^^^

error: used binding `_i` which is prefixed with an underscore. A leading underscore signals that a binding will not be used
--> $DIR/used_underscore_binding.rs:99:16
--> $DIR/used_underscore_binding.rs:105:16
|
LL | uses_i(_i);
| ^^
Expand Down

0 comments on commit e7c69bf

Please sign in to comment.