Skip to content

Commit

Permalink
Trying to suggest additional lifetime parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
Stoozy committed Sep 26, 2022
1 parent e1d7dec commit 887515a
Showing 1 changed file with 32 additions and 8 deletions.
40 changes: 32 additions & 8 deletions compiler/rustc_resolve/src/late/lifetimes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

use rustc_ast::walk_list;
use rustc_data_structures::fx::{FxHashSet, FxIndexMap, FxIndexSet};
use rustc_errors::struct_span_err;
use rustc_errors::{struct_span_err};
use rustc_hir as hir;
use rustc_hir::def::{DefKind, Res};
use rustc_hir::def_id::LocalDefId;
Expand All @@ -24,6 +24,7 @@ use rustc_span::symbol::{sym, Ident};
use rustc_span::Span;
use std::fmt;


trait RegionExt {
fn early(hir_map: Map<'_>, param: &GenericParam<'_>) -> (LocalDefId, Region);

Expand Down Expand Up @@ -1318,13 +1319,36 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
&& let hir::IsAsync::NotAsync = self.tcx.asyncness(lifetime_ref.hir_id.owner.def_id)
&& !self.tcx.features().anonymous_lifetime_in_impl_trait
{
rustc_session::parse::feature_err(
&self.tcx.sess.parse_sess,
sym::anonymous_lifetime_in_impl_trait,
lifetime_ref.span,
"anonymous lifetimes in `impl Trait` are unstable",
).emit();
return;

match self.tcx.hir().get_generics(lifetime_ref.hir_id.owner.to_def_id().as_local().unwrap()) {
Some(generics) => {
for i in 0..generics.params.len() {

if !generics.span.contains(generics.params[i].span) {
struct_span_err!(
self.tcx.sess,
lifetime_ref.span,
E0106,
"missing lifetime specifier"
)
.span_label(lifetime_ref.span, "expected named lifetime parameter")
.span_help(generics.span, "consider introducing a named lifetime parameter")
.emit();
return;
}
}
},
None => {
rustc_session::parse::feature_err(
&self.tcx.sess.parse_sess,
sym::anonymous_lifetime_in_impl_trait,
lifetime_ref.span,
"anonymous lifetimes in `impl Trait` are unstable",
).emit();
return;
}
}

}
scope = s;
}
Expand Down

0 comments on commit 887515a

Please sign in to comment.