Rollup merge of #24057 - nikomatsakis:lifetime-shadowing-hard-error, r=huon
This commit is contained in:
commit
daf2e365cf
@ -507,7 +507,7 @@ impl<'a> LifetimeContext<'a> {
|
||||
EarlyScope(_, lifetimes, s) |
|
||||
LateScope(lifetimes, s) => {
|
||||
if let Some((_, lifetime_def)) = search_lifetimes(lifetimes, lifetime) {
|
||||
self.sess.span_warn(
|
||||
self.sess.span_err(
|
||||
lifetime.span,
|
||||
&format!("lifetime name `{}` shadows another \
|
||||
lifetime name that is already in scope",
|
||||
@ -516,10 +516,6 @@ impl<'a> LifetimeContext<'a> {
|
||||
lifetime_def.span,
|
||||
&format!("shadowed lifetime `{}` declared here",
|
||||
token::get_name(lifetime.name)));
|
||||
self.sess.span_note(
|
||||
lifetime.span,
|
||||
"shadowed lifetimes are deprecated \
|
||||
and will become a hard error before 1.0");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -15,16 +15,14 @@ struct Foo<'a>(&'a isize);
|
||||
impl<'a> Foo<'a> {
|
||||
//~^ NOTE shadowed lifetime `'a` declared here
|
||||
fn shadow_in_method<'a>(&'a self) -> &'a isize {
|
||||
//~^ WARNING lifetime name `'a` shadows another lifetime name that is already in scope
|
||||
//~| NOTE deprecated
|
||||
//~^ ERROR lifetime name `'a` shadows another lifetime name that is already in scope
|
||||
self.0
|
||||
}
|
||||
|
||||
fn shadow_in_type<'b>(&'b self) -> &'b isize {
|
||||
//~^ NOTE shadowed lifetime `'b` declared here
|
||||
let x: for<'b> fn(&'b isize) = panic!();
|
||||
//~^ WARNING lifetime name `'b` shadows another lifetime name that is already in scope
|
||||
//~| NOTE deprecated
|
||||
//~^ ERROR lifetime name `'b` shadows another lifetime name that is already in scope
|
||||
self.0
|
||||
}
|
||||
|
||||
@ -35,9 +33,4 @@ impl<'a> Foo<'a> {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// intentional error that occurs after `resolve_lifetime` runs,
|
||||
// just to ensure that this test fails to compile; when shadowed
|
||||
// lifetimes become either an error or a proper lint, this will
|
||||
// not be needed.
|
||||
let x: isize = 3_usize; //~ ERROR mismatched types
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ impl<K,V> AssociationList<K,V> {
|
||||
impl<'a, K: PartialEq + std::fmt::Debug, V:Clone> Index<&'a K> for AssociationList<K,V> {
|
||||
type Output = V;
|
||||
|
||||
fn index<'a>(&'a self, index: &K) -> &'a V {
|
||||
fn index(&self, index: &K) -> &V {
|
||||
for pair in &self.pairs {
|
||||
if pair.key == *index {
|
||||
return &pair.value
|
||||
|
Loading…
x
Reference in New Issue
Block a user