diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-06-15 17:45:04 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-15 17:45:04 +0200 |
| commit | eb188f1317feddbf4227d53a5f31fadff3852f03 (patch) | |
| tree | c4c793e3641c4e5de63fbbed658f68048c790e9b /src/librustc | |
| parent | be09427b116098d9dec63694e51cbddac7f958e5 (diff) | |
| parent | 17653dd3da53c2b1114dcb36b85c7d6512c6cc5f (diff) | |
Rollup merge of #61824 - rust-lang:single_derive, r=eddyb
in which we decline to lint single-use lifetimes in `derive`d impls Resolves #53738. r? @eddyb
Diffstat (limited to 'src/librustc')
| -rw-r--r-- | src/librustc/middle/resolve_lifetime.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/librustc/middle/resolve_lifetime.rs b/src/librustc/middle/resolve_lifetime.rs index 8bc3158bd3c..48d2a477a9a 100644 --- a/src/librustc/middle/resolve_lifetime.rs +++ b/src/librustc/middle/resolve_lifetime.rs @@ -1586,6 +1586,17 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> { continue; } + if let Some(parent_def_id) = self.tcx.parent(def_id) { + if let Some(parent_hir_id) = self.tcx.hir() + .as_local_hir_id(parent_def_id) { + // lifetimes in `derive` expansions don't count (Issue #53738) + if self.tcx.hir().attrs_by_hir_id(parent_hir_id).iter() + .any(|attr| attr.check_name(sym::automatically_derived)) { + continue; + } + } + } + let mut err = self.tcx.struct_span_lint_hir( lint::builtin::SINGLE_USE_LIFETIMES, id, |
