Removed feature gate.
This commit is contained in:
parent
d09466ceb1
commit
aa5a4ef59d
5 changed files with 10 additions and 53 deletions
|
@ -2373,13 +2373,9 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
|
||||||
self.with_current_self_item(item, |this| {
|
self.with_current_self_item(item, |this| {
|
||||||
this.with_type_parameter_rib(HasTypeParameters(generics, ItemRibKind), |this| {
|
this.with_type_parameter_rib(HasTypeParameters(generics, ItemRibKind), |this| {
|
||||||
let item_def_id = this.definitions.local_def_id(item.id);
|
let item_def_id = this.definitions.local_def_id(item.id);
|
||||||
if this.session.features_untracked().self_in_typedefs {
|
this.with_self_rib(Def::SelfTy(None, Some(item_def_id)), |this| {
|
||||||
this.with_self_rib(Def::SelfTy(None, Some(item_def_id)), |this| {
|
|
||||||
visit::walk_item(this, item);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
visit::walk_item(this, item);
|
visit::walk_item(this, item);
|
||||||
}
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -3185,16 +3181,8 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> {
|
||||||
if is_self_type(path, ns) {
|
if is_self_type(path, ns) {
|
||||||
__diagnostic_used!(E0411);
|
__diagnostic_used!(E0411);
|
||||||
err.code(DiagnosticId::Error("E0411".into()));
|
err.code(DiagnosticId::Error("E0411".into()));
|
||||||
let available_in = if this.session.features_untracked().self_in_typedefs {
|
err.span_label(span, format!("`Self` is only available in impls, traits, \
|
||||||
"impls, traits, and type definitions"
|
and type definitions"));
|
||||||
} else {
|
|
||||||
"traits and impls"
|
|
||||||
};
|
|
||||||
err.span_label(span, format!("`Self` is only available in {}", available_in));
|
|
||||||
if this.current_self_item.is_some() && nightly_options::is_nightly_build() {
|
|
||||||
err.help("add #![feature(self_in_typedefs)] to the crate attributes \
|
|
||||||
to enable");
|
|
||||||
}
|
|
||||||
return (err, Vec::new());
|
return (err, Vec::new());
|
||||||
}
|
}
|
||||||
if is_self_value(path, ns) {
|
if is_self_value(path, ns) {
|
||||||
|
|
|
@ -462,9 +462,6 @@ declare_features! (
|
||||||
// Allows `use x::y;` to resolve through `self::x`, not just `::x`
|
// Allows `use x::y;` to resolve through `self::x`, not just `::x`
|
||||||
(active, uniform_paths, "1.30.0", Some(53130), None),
|
(active, uniform_paths, "1.30.0", Some(53130), None),
|
||||||
|
|
||||||
// Allows `Self` in type definitions
|
|
||||||
(active, self_in_typedefs, "1.30.0", Some(49303), None),
|
|
||||||
|
|
||||||
// Allows unsized rvalues at arguments and parameters
|
// Allows unsized rvalues at arguments and parameters
|
||||||
(active, unsized_locals, "1.30.0", Some(48055), None),
|
(active, unsized_locals, "1.30.0", Some(48055), None),
|
||||||
|
|
||||||
|
@ -672,21 +669,23 @@ declare_features! (
|
||||||
(accepted, extern_prelude, "1.30.0", Some(44660), None),
|
(accepted, extern_prelude, "1.30.0", Some(44660), None),
|
||||||
// Parentheses in patterns
|
// Parentheses in patterns
|
||||||
(accepted, pattern_parentheses, "1.31.0", Some(51087), None),
|
(accepted, pattern_parentheses, "1.31.0", Some(51087), None),
|
||||||
// Allows the definition of `const fn` functions.
|
// Allows the definition of `const fn` functions
|
||||||
(accepted, min_const_fn, "1.31.0", Some(53555), None),
|
(accepted, min_const_fn, "1.31.0", Some(53555), None),
|
||||||
// Scoped lints
|
// Scoped lints
|
||||||
(accepted, tool_lints, "1.31.0", Some(44690), None),
|
(accepted, tool_lints, "1.31.0", Some(44690), None),
|
||||||
// impl<I:Iterator> Iterator for &mut Iterator
|
// impl<I:Iterator> Iterator for &mut Iterator
|
||||||
// impl Debug for Foo<'_>
|
// impl Debug for Foo<'_>
|
||||||
(accepted, impl_header_lifetime_elision, "1.31.0", Some(15872), None),
|
(accepted, impl_header_lifetime_elision, "1.31.0", Some(15872), None),
|
||||||
// `extern crate foo as bar;` puts `bar` into extern prelude.
|
// `extern crate foo as bar;` puts `bar` into extern prelude
|
||||||
(accepted, extern_crate_item_prelude, "1.31.0", Some(55599), None),
|
(accepted, extern_crate_item_prelude, "1.31.0", Some(55599), None),
|
||||||
// Allows use of the :literal macro fragment specifier (RFC 1576)
|
// Allows use of the :literal macro fragment specifier (RFC 1576)
|
||||||
(accepted, macro_literal_matcher, "1.31.0", Some(35625), None),
|
(accepted, macro_literal_matcher, "1.31.0", Some(35625), None),
|
||||||
// Use `?` as the Kleene "at most one" operator
|
// Use `?` as the Kleene "at most one" operator
|
||||||
(accepted, macro_at_most_once_rep, "1.32.0", Some(48075), None),
|
(accepted, macro_at_most_once_rep, "1.32.0", Some(48075), None),
|
||||||
// Self struct constructor (RFC 2302)
|
// `Self` struct constructor (RFC 2302)
|
||||||
(accepted, self_struct_ctor, "1.32.0", Some(51994), None),
|
(accepted, self_struct_ctor, "1.32.0", Some(51994), None),
|
||||||
|
// `Self` in type definitions (RFC 2300)
|
||||||
|
(accepted, self_in_typedefs, "1.32.0", Some(49303), None),
|
||||||
);
|
);
|
||||||
|
|
||||||
// If you change this, please modify `src/doc/unstable-book` as well. You must
|
// If you change this, please modify `src/doc/unstable-book` as well. You must
|
||||||
|
|
|
@ -9,12 +9,11 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
// run-pass
|
// run-pass
|
||||||
#![allow(unions_with_drop_fields)]
|
|
||||||
|
|
||||||
#![feature(self_in_typedefs)]
|
|
||||||
#![feature(untagged_unions)]
|
#![feature(untagged_unions)]
|
||||||
|
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
#![allow(unions_with_drop_fields)]
|
||||||
|
|
||||||
enum A<'a, T: 'a>
|
enum A<'a, T: 'a>
|
||||||
where
|
where
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
|
||||||
// file at the top-level directory of this distribution and at
|
|
||||||
// http://rust-lang.org/COPYRIGHT.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
||||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
||||||
// option. This file may not be copied, modified, or distributed
|
|
||||||
// except according to those terms.
|
|
||||||
|
|
||||||
enum StackList<'a, T: 'a> {
|
|
||||||
Nil,
|
|
||||||
Cons(T, &'a Self)
|
|
||||||
//~^ ERROR cannot find type `Self` in this scope
|
|
||||||
//~| `Self` is only available in traits and impls
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() {}
|
|
|
@ -1,11 +0,0 @@
|
||||||
error[E0411]: cannot find type `Self` in this scope
|
|
||||||
--> $DIR/feature-gate-self_in_typedefs.rs:13:17
|
|
||||||
|
|
|
||||||
LL | Cons(T, &'a Self)
|
|
||||||
| ^^^^ `Self` is only available in traits and impls
|
|
||||||
|
|
|
||||||
= help: add #![feature(self_in_typedefs)] to the crate attributes to enable
|
|
||||||
|
|
||||||
error: aborting due to previous error
|
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0411`.
|
|
Loading…
Add table
Add a link
Reference in a new issue