mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-02 03:33:59 +00:00
Don't lint deref_addrof
when the two operations occur in different expansions
This commit is contained in:
parent
88f5be2041
commit
d32277d78e
@ -50,6 +50,7 @@ impl EarlyLintPass for DerefAddrOf {
|
||||
if_chain! {
|
||||
if let ExprKind::Unary(UnOp::Deref, ref deref_target) = e.kind;
|
||||
if let ExprKind::AddrOf(_, ref mutability, ref addrof_target) = without_parens(deref_target).kind;
|
||||
if deref_target.span.ctxt() == e.span.ctxt();
|
||||
if !addrof_target.span.from_expansion();
|
||||
then {
|
||||
let mut applicability = Applicability::MachineApplicable;
|
||||
|
@ -37,6 +37,8 @@ fn main() {
|
||||
let b = &a;
|
||||
|
||||
let b = *aref;
|
||||
|
||||
let _ = unsafe { *core::ptr::addr_of!(a) };
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
|
@ -37,6 +37,8 @@ fn main() {
|
||||
let b = *&&a;
|
||||
|
||||
let b = **&aref;
|
||||
|
||||
let _ = unsafe { *core::ptr::addr_of!(a) };
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
|
@ -49,7 +49,7 @@ LL | let b = **&aref;
|
||||
| ^^^^^^ help: try this: `aref`
|
||||
|
||||
error: immediately dereferencing a reference
|
||||
--> $DIR/deref_addrof.rs:45:9
|
||||
--> $DIR/deref_addrof.rs:47:9
|
||||
|
|
||||
LL | *& $visitor
|
||||
| ^^^^^^^^^^^ help: try this: `$visitor`
|
||||
@ -60,7 +60,7 @@ LL | m!(self)
|
||||
= note: this error originates in the macro `m` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error: immediately dereferencing a reference
|
||||
--> $DIR/deref_addrof.rs:52:9
|
||||
--> $DIR/deref_addrof.rs:54:9
|
||||
|
|
||||
LL | *& mut $visitor
|
||||
| ^^^^^^^^^^^^^^^ help: try this: `$visitor`
|
||||
|
Loading…
Reference in New Issue
Block a user