From aa5a4ef59d51dcea98fe6750a5fdb36bed6b9b55 Mon Sep 17 00:00:00 2001 From: Alexander Regueiro Date: Fri, 30 Nov 2018 03:55:26 +0000 Subject: [PATCH] Removed feature gate. --- src/librustc_resolve/lib.rs | 20 ++++--------------- src/libsyntax/feature_gate.rs | 11 +++++----- src/test/run-pass/self/self-in-typedefs.rs | 3 +-- .../feature-gate-self_in_typedefs.rs | 18 ----------------- .../feature-gate-self_in_typedefs.stderr | 11 ---------- 5 files changed, 10 insertions(+), 53 deletions(-) delete mode 100644 src/test/ui/feature-gates/feature-gate-self_in_typedefs.rs delete mode 100644 src/test/ui/feature-gates/feature-gate-self_in_typedefs.stderr diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index c1d4643c240..fdac1e3b816 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -2373,13 +2373,9 @@ fn resolve_adt(&mut self, item: &Item, generics: &Generics) { self.with_current_self_item(item, |this| { this.with_type_parameter_rib(HasTypeParameters(generics, ItemRibKind), |this| { 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| { - visit::walk_item(this, item); - }); - } else { + this.with_self_rib(Def::SelfTy(None, Some(item_def_id)), |this| { visit::walk_item(this, item); - } + }); }); }); } @@ -3185,16 +3181,8 @@ fn smart_resolve_path_fragment(&mut self, if is_self_type(path, ns) { __diagnostic_used!(E0411); err.code(DiagnosticId::Error("E0411".into())); - let available_in = if this.session.features_untracked().self_in_typedefs { - "impls, traits, 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"); - } + err.span_label(span, format!("`Self` is only available in impls, traits, \ + and type definitions")); return (err, Vec::new()); } if is_self_value(path, ns) { diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 2402de5a816..dd61fd6826f 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -462,9 +462,6 @@ pub fn walk_feature_fields(&self, mut f: F) // Allows `use x::y;` to resolve through `self::x`, not just `::x` (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 (active, unsized_locals, "1.30.0", Some(48055), None), @@ -672,21 +669,23 @@ pub fn walk_feature_fields(&self, mut f: F) (accepted, extern_prelude, "1.30.0", Some(44660), None), // Parentheses in patterns (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), // Scoped lints (accepted, tool_lints, "1.31.0", Some(44690), None), // impl Iterator for &mut Iterator // impl Debug for Foo<'_> (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), // Allows use of the :literal macro fragment specifier (RFC 1576) (accepted, macro_literal_matcher, "1.31.0", Some(35625), None), // Use `?` as the Kleene "at most one" operator (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), + // `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 diff --git a/src/test/run-pass/self/self-in-typedefs.rs b/src/test/run-pass/self/self-in-typedefs.rs index 92eccb47e18..84a7e18f91a 100644 --- a/src/test/run-pass/self/self-in-typedefs.rs +++ b/src/test/run-pass/self/self-in-typedefs.rs @@ -9,12 +9,11 @@ // except according to those terms. // run-pass -#![allow(unions_with_drop_fields)] -#![feature(self_in_typedefs)] #![feature(untagged_unions)] #![allow(dead_code)] +#![allow(unions_with_drop_fields)] enum A<'a, T: 'a> where diff --git a/src/test/ui/feature-gates/feature-gate-self_in_typedefs.rs b/src/test/ui/feature-gates/feature-gate-self_in_typedefs.rs deleted file mode 100644 index 4b476a0a645..00000000000 --- a/src/test/ui/feature-gates/feature-gate-self_in_typedefs.rs +++ /dev/null @@ -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 or the MIT license -// , 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() {} diff --git a/src/test/ui/feature-gates/feature-gate-self_in_typedefs.stderr b/src/test/ui/feature-gates/feature-gate-self_in_typedefs.stderr deleted file mode 100644 index ab04953f3e5..00000000000 --- a/src/test/ui/feature-gates/feature-gate-self_in_typedefs.stderr +++ /dev/null @@ -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`. -- 2.44.0