summaryrefslogtreecommitdiff
path: root/src/librustc/middle/resolve_lifetime.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/librustc/middle/resolve_lifetime.rs')
-rw-r--r--src/librustc/middle/resolve_lifetime.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/librustc/middle/resolve_lifetime.rs b/src/librustc/middle/resolve_lifetime.rs
index edd5cb4541a..1d88f254972 100644
--- a/src/librustc/middle/resolve_lifetime.rs
+++ b/src/librustc/middle/resolve_lifetime.rs
@@ -1591,6 +1591,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,