about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTaylor Cramer <cramertj@google.com>2018-03-21 17:44:21 -0700
committerTaylor Cramer <cramertj@google.com>2018-03-26 07:39:38 +0200
commitc393db67baf3a15ec61351ffb0e3811e07b8a467 (patch)
tree7788c1c955c4e0d056536409cc52a4f39cdf3187
parent445fafaa4b95fdde04751aa523b9e9f06e2c06ea (diff)
downloadrust-c393db67baf3a15ec61351ffb0e3811e07b8a467.tar.gz
rust-c393db67baf3a15ec61351ffb0e3811e07b8a467.zip
Stabilize universal_impl_trait
-rw-r--r--src/doc/unstable-book/src/language-features/universal-impl-trait.md32
-rw-r--r--src/librustc/hir/lowering.rs11
-rw-r--r--src/librustc/lib.rs2
-rw-r--r--src/librustc_data_structures/lib.rs2
-rw-r--r--src/librustc_typeck/diagnostics.rs1
-rw-r--r--src/libsyntax/feature_gate.rs5
-rw-r--r--src/test/compile-fail/impl-trait/impl-generic-mismatch-ab.rs1
-rw-r--r--src/test/compile-fail/impl-trait/impl-generic-mismatch.rs1
-rw-r--r--src/test/compile-fail/impl-trait/where-allowed.rs2
-rw-r--r--src/test/run-pass/impl-trait/example-calendar.rs1
-rw-r--r--src/test/run-pass/impl-trait/lifetimes.rs2
-rw-r--r--src/test/run-pass/impl-trait/universal_hrtb_anon.rs2
-rw-r--r--src/test/run-pass/impl-trait/universal_hrtb_named.rs2
-rw-r--r--src/test/run-pass/impl-trait/universal_in_adt_in_parameters.rs1
-rw-r--r--src/test/run-pass/impl-trait/universal_in_impl_trait_in_parameters.rs1
-rw-r--r--src/test/run-pass/impl-trait/universal_in_trait_defn_parameters.rs2
-rw-r--r--src/test/run-pass/impl-trait/universal_multiple_bounds.rs2
-rw-r--r--src/test/run-pass/in-band-lifetimes.rs2
-rw-r--r--src/test/run-pass/issue-46959.rs1
-rw-r--r--src/test/rustdoc/issue-46976.rs1
-rw-r--r--src/test/ui/feature-gate-universal.rs16
-rw-r--r--src/test/ui/feature-gate-universal.stderr11
-rw-r--r--src/test/ui/impl-trait/universal-mismatched-type.rs2
-rw-r--r--src/test/ui/impl-trait/universal-mismatched-type.stderr2
-rw-r--r--src/test/ui/impl-trait/universal-two-impl-traits.rs2
-rw-r--r--src/test/ui/impl-trait/universal-two-impl-traits.stderr2
-rw-r--r--src/test/ui/impl-trait/universal_wrong_bounds.rs2
-rw-r--r--src/test/ui/impl-trait/universal_wrong_bounds.stderr6
-rw-r--r--src/test/ui/impl_trait_projections.rs2
-rw-r--r--src/test/ui/in-band-lifetimes/E0687_where.rs2
-rw-r--r--src/test/ui/nested_impl_trait.rs2
31 files changed, 15 insertions, 108 deletions
diff --git a/src/doc/unstable-book/src/language-features/universal-impl-trait.md b/src/doc/unstable-book/src/language-features/universal-impl-trait.md
deleted file mode 100644
index 6b3c5e92720..00000000000
--- a/src/doc/unstable-book/src/language-features/universal-impl-trait.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# `universal_impl_trait`
-
-The tracking issue for this feature is: [#34511].
-
-[#34511]: https://github.com/rust-lang/rust/issues/34511
-
---------------------
-
-The `universal_impl_trait` feature extends the [`conservative_impl_trait`]
-feature allowing the `impl Trait` syntax in arguments (universal
-quantification).
-
-[`conservative_impl_trait`]: ./language-features/conservative-impl-trait.html
-
-## Examples
-
-```rust
-#![feature(universal_impl_trait)]
-use std::ops::Not;
-
-fn any_zero(values: impl IntoIterator<Item = i32>) -> bool {
-    for val in values { if val == 0 { return true; } }
-    false
-}
-
-fn main() {
-    let test1 = -5..;
-    let test2 = vec![1, 8, 42, -87, 60];
-    assert!(any_zero(test1));
-    assert!(bool::not(any_zero(test2)));
-}
-```
diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs
index ad848949f62..2ae102fbef0 100644
--- a/src/librustc/hir/lowering.rs
+++ b/src/librustc/hir/lowering.rs
@@ -1143,17 +1143,6 @@ impl<'a> LoweringContext<'a> {
                         )
                     }
                     ImplTraitContext::Universal(def_id) => {
-                        let has_feature = self.sess.features_untracked().universal_impl_trait;
-                        if !t.span.allows_unstable() && !has_feature {
-                            emit_feature_err(
-                                &self.sess.parse_sess,
-                                "universal_impl_trait",
-                                t.span,
-                                GateIssue::Language,
-                                "`impl Trait` in argument position is experimental",
-                            );
-                        }
-
                         let def_node_id = self.next_id().node_id;
 
                         // Add a definition for the in-band TyParam
diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs
index a759ce59cb6..d133352de07 100644
--- a/src/librustc/lib.rs
+++ b/src/librustc/lib.rs
@@ -70,7 +70,7 @@
 #![feature(specialization)]
 #![feature(unboxed_closures)]
 #![feature(underscore_lifetimes)]
-#![feature(universal_impl_trait)]
+#![cfg_attr(stage0, feature(universal_impl_trait))]
 #![feature(trace_macros)]
 #![feature(trusted_len)]
 #![feature(catch_expr)]
diff --git a/src/librustc_data_structures/lib.rs b/src/librustc_data_structures/lib.rs
index bf0b3726bb3..05bd3ae845f 100644
--- a/src/librustc_data_structures/lib.rs
+++ b/src/librustc_data_structures/lib.rs
@@ -34,7 +34,7 @@
 #![feature(underscore_lifetimes)]
 #![feature(macro_vis_matcher)]
 #![feature(allow_internal_unstable)]
-#![feature(universal_impl_trait)]
+#![cfg_attr(stage0, feature(universal_impl_trait))]
 
 #![cfg_attr(unix, feature(libc))]
 #![cfg_attr(test, feature(test))]
diff --git a/src/librustc_typeck/diagnostics.rs b/src/librustc_typeck/diagnostics.rs
index f5337118e30..1f882676f61 100644
--- a/src/librustc_typeck/diagnostics.rs
+++ b/src/librustc_typeck/diagnostics.rs
@@ -4600,7 +4600,6 @@ This error indicates that there is a mismatch between generic parameters and
 impl Trait parameters in a trait declaration versus its impl.
 
 ```compile_fail,E0643
-#![feature(universal_impl_trait)]
 trait Foo {
     fn foo(&self, _: &impl Iterator);
 }
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs
index e69dace0c70..db900ed6e35 100644
--- a/src/libsyntax/feature_gate.rs
+++ b/src/libsyntax/feature_gate.rs
@@ -279,9 +279,6 @@ declare_features! (
     // Allows `impl Trait` in function return types.
     (active, conservative_impl_trait, "1.12.0", Some(34511), None),
 
-    // Allows `impl Trait` in function arguments.
-    (active, universal_impl_trait, "1.23.0", Some(34511), None),
-
     // Allows exhaustive pattern matching on types that contain uninhabited types.
     (active, exhaustive_patterns, "1.13.0", None, None),
 
@@ -566,6 +563,8 @@ declare_features! (
     // Copy/Clone closures (RFC 2132)
     (accepted, clone_closures, "1.26.0", Some(44490), None),
     (accepted, copy_closures, "1.26.0", Some(44490), None),
+    // Allows `impl Trait` in function arguments.
+    (accepted, universal_impl_trait, "1.26.0", Some(34511), None),
 );
 
 // If you change this, please modify src/doc/unstable-book as well. You must
diff --git a/src/test/compile-fail/impl-trait/impl-generic-mismatch-ab.rs b/src/test/compile-fail/impl-trait/impl-generic-mismatch-ab.rs
index 43b47e9e915..23549918ff1 100644
--- a/src/test/compile-fail/impl-trait/impl-generic-mismatch-ab.rs
+++ b/src/test/compile-fail/impl-trait/impl-generic-mismatch-ab.rs
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
 use std::fmt::Debug;
 
 trait Foo {
diff --git a/src/test/compile-fail/impl-trait/impl-generic-mismatch.rs b/src/test/compile-fail/impl-trait/impl-generic-mismatch.rs
index a95da61aa4c..eea7ca20957 100644
--- a/src/test/compile-fail/impl-trait/impl-generic-mismatch.rs
+++ b/src/test/compile-fail/impl-trait/impl-generic-mismatch.rs
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
 use std::fmt::Debug;
 
 trait Foo {
diff --git a/src/test/compile-fail/impl-trait/where-allowed.rs b/src/test/compile-fail/impl-trait/where-allowed.rs
index 52c5471681d..c93bcf7f390 100644
--- a/src/test/compile-fail/impl-trait/where-allowed.rs
+++ b/src/test/compile-fail/impl-trait/where-allowed.rs
@@ -10,7 +10,7 @@
 
 //! A simple test for testing many permutations of allowedness of
 //! impl Trait
-#![feature(conservative_impl_trait, universal_impl_trait, dyn_trait)]
+#![feature(conservative_impl_trait, dyn_trait)]
 use std::fmt::Debug;
 
 // Allowed
diff --git a/src/test/run-pass/impl-trait/example-calendar.rs b/src/test/run-pass/impl-trait/example-calendar.rs
index aca100591dd..d1e2b471d9a 100644
--- a/src/test/run-pass/impl-trait/example-calendar.rs
+++ b/src/test/run-pass/impl-trait/example-calendar.rs
@@ -12,7 +12,6 @@
 //[nll] compile-flags: -Znll -Zborrowck=mir
 
 #![feature(conservative_impl_trait,
-           universal_impl_trait,
            fn_traits,
            step_trait,
            unboxed_closures,
diff --git a/src/test/run-pass/impl-trait/lifetimes.rs b/src/test/run-pass/impl-trait/lifetimes.rs
index fcad23926fc..c589e23f950 100644
--- a/src/test/run-pass/impl-trait/lifetimes.rs
+++ b/src/test/run-pass/impl-trait/lifetimes.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(conservative_impl_trait, underscore_lifetimes, universal_impl_trait)]
+#![feature(conservative_impl_trait, underscore_lifetimes)]
 #![allow(warnings)]
 
 use std::fmt::Debug;
diff --git a/src/test/run-pass/impl-trait/universal_hrtb_anon.rs b/src/test/run-pass/impl-trait/universal_hrtb_anon.rs
index 48874ef41de..9fc74757da0 100644
--- a/src/test/run-pass/impl-trait/universal_hrtb_anon.rs
+++ b/src/test/run-pass/impl-trait/universal_hrtb_anon.rs
@@ -8,8 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
-
 fn hrtb(f: impl Fn(&u32) -> u32) -> u32 {
     f(&22) + f(&44)
 }
diff --git a/src/test/run-pass/impl-trait/universal_hrtb_named.rs b/src/test/run-pass/impl-trait/universal_hrtb_named.rs
index 95147a54200..3aefc79ebf7 100644
--- a/src/test/run-pass/impl-trait/universal_hrtb_named.rs
+++ b/src/test/run-pass/impl-trait/universal_hrtb_named.rs
@@ -8,8 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
-
 fn hrtb(f: impl for<'a> Fn(&'a u32) -> &'a u32) -> u32 {
     f(&22) + f(&44)
 }
diff --git a/src/test/run-pass/impl-trait/universal_in_adt_in_parameters.rs b/src/test/run-pass/impl-trait/universal_in_adt_in_parameters.rs
index d0f18575297..57452a2e475 100644
--- a/src/test/run-pass/impl-trait/universal_in_adt_in_parameters.rs
+++ b/src/test/run-pass/impl-trait/universal_in_adt_in_parameters.rs
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
 use std::fmt::Display;
 
 fn check_display_eq(iter: &Vec<impl Display>) {
diff --git a/src/test/run-pass/impl-trait/universal_in_impl_trait_in_parameters.rs b/src/test/run-pass/impl-trait/universal_in_impl_trait_in_parameters.rs
index ccf24b77a6b..fea946f1258 100644
--- a/src/test/run-pass/impl-trait/universal_in_impl_trait_in_parameters.rs
+++ b/src/test/run-pass/impl-trait/universal_in_impl_trait_in_parameters.rs
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
 use std::fmt::Display;
 
 fn check_display_eq(iter: impl IntoIterator<Item = impl Display>) {
diff --git a/src/test/run-pass/impl-trait/universal_in_trait_defn_parameters.rs b/src/test/run-pass/impl-trait/universal_in_trait_defn_parameters.rs
index af0201b5f87..d3611e02e02 100644
--- a/src/test/run-pass/impl-trait/universal_in_trait_defn_parameters.rs
+++ b/src/test/run-pass/impl-trait/universal_in_trait_defn_parameters.rs
@@ -8,8 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
-
 use std::fmt::Debug;
 
 trait InTraitDefnParameters {
diff --git a/src/test/run-pass/impl-trait/universal_multiple_bounds.rs b/src/test/run-pass/impl-trait/universal_multiple_bounds.rs
index bb332c0c96c..594207feb09 100644
--- a/src/test/run-pass/impl-trait/universal_multiple_bounds.rs
+++ b/src/test/run-pass/impl-trait/universal_multiple_bounds.rs
@@ -8,8 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
-
 use std::fmt::Display;
 
 fn foo(f: impl Display + Clone) -> String {
diff --git a/src/test/run-pass/in-band-lifetimes.rs b/src/test/run-pass/in-band-lifetimes.rs
index 95cc3c3759e..b5b73675ca7 100644
--- a/src/test/run-pass/in-band-lifetimes.rs
+++ b/src/test/run-pass/in-band-lifetimes.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 #![allow(warnings)]
-#![feature(in_band_lifetimes, universal_impl_trait, conservative_impl_trait)]
+#![feature(in_band_lifetimes, conservative_impl_trait)]
 
 fn foo(x: &'x u8) -> &'x u8 { x }
 fn foo2(x: &'a u8, y: &u8) -> &'a u8 { x }
diff --git a/src/test/run-pass/issue-46959.rs b/src/test/run-pass/issue-46959.rs
index 0826f5e4923..876b8c0a1d3 100644
--- a/src/test/run-pass/issue-46959.rs
+++ b/src/test/run-pass/issue-46959.rs
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
 #![feature(conservative_impl_trait)]
 #![deny(non_camel_case_types)]
 
diff --git a/src/test/rustdoc/issue-46976.rs b/src/test/rustdoc/issue-46976.rs
index 0df80fe3bd7..ce09f62a552 100644
--- a/src/test/rustdoc/issue-46976.rs
+++ b/src/test/rustdoc/issue-46976.rs
@@ -8,5 +8,4 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
 pub fn ice(f: impl Fn()) {}
diff --git a/src/test/ui/feature-gate-universal.rs b/src/test/ui/feature-gate-universal.rs
deleted file mode 100644
index e5bdf3a42eb..00000000000
--- a/src/test/ui/feature-gate-universal.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2017 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.
-
-// gate-test-universal_impl_trait
-
-fn foo(x: impl std::fmt::Debug) { print!("{:?}", x); }
-//~^ ERROR `impl Trait` in argument position is experimental
-
-fn main() {}
diff --git a/src/test/ui/feature-gate-universal.stderr b/src/test/ui/feature-gate-universal.stderr
deleted file mode 100644
index dc1a6b29c72..00000000000
--- a/src/test/ui/feature-gate-universal.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0658]: `impl Trait` in argument position is experimental (see issue #34511)
-  --> $DIR/feature-gate-universal.rs:13:11
-   |
-LL | fn foo(x: impl std::fmt::Debug) { print!("{:?}", x); }
-   |           ^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: add #![feature(universal_impl_trait)] to the crate attributes to enable
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/impl-trait/universal-mismatched-type.rs b/src/test/ui/impl-trait/universal-mismatched-type.rs
index 00fc22ff0d8..6a62eb36c30 100644
--- a/src/test/ui/impl-trait/universal-mismatched-type.rs
+++ b/src/test/ui/impl-trait/universal-mismatched-type.rs
@@ -8,8 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
-
 use std::fmt::Debug;
 
 fn foo(x: impl Debug) -> String {
diff --git a/src/test/ui/impl-trait/universal-mismatched-type.stderr b/src/test/ui/impl-trait/universal-mismatched-type.stderr
index 64f1aff13bd..031db511ff3 100644
--- a/src/test/ui/impl-trait/universal-mismatched-type.stderr
+++ b/src/test/ui/impl-trait/universal-mismatched-type.stderr
@@ -1,5 +1,5 @@
 error[E0308]: mismatched types
-  --> $DIR/universal-mismatched-type.rs:16:5
+  --> $DIR/universal-mismatched-type.rs:14:5
    |
 LL | fn foo(x: impl Debug) -> String {
    |                          ------ expected `std::string::String` because of return type
diff --git a/src/test/ui/impl-trait/universal-two-impl-traits.rs b/src/test/ui/impl-trait/universal-two-impl-traits.rs
index 9a4847b5606..5ecef1fee65 100644
--- a/src/test/ui/impl-trait/universal-two-impl-traits.rs
+++ b/src/test/ui/impl-trait/universal-two-impl-traits.rs
@@ -8,8 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
-
 use std::fmt::Debug;
 
 fn foo(x: impl Debug, y: impl Debug) -> String {
diff --git a/src/test/ui/impl-trait/universal-two-impl-traits.stderr b/src/test/ui/impl-trait/universal-two-impl-traits.stderr
index 61f52ff25fb..ed406895fc6 100644
--- a/src/test/ui/impl-trait/universal-two-impl-traits.stderr
+++ b/src/test/ui/impl-trait/universal-two-impl-traits.stderr
@@ -1,5 +1,5 @@
 error[E0308]: mismatched types
-  --> $DIR/universal-two-impl-traits.rs:17:9
+  --> $DIR/universal-two-impl-traits.rs:15:9
    |
 LL |     a = y; //~ ERROR mismatched
    |         ^ expected type parameter, found a different type parameter
diff --git a/src/test/ui/impl-trait/universal_wrong_bounds.rs b/src/test/ui/impl-trait/universal_wrong_bounds.rs
index 36d9f615c5f..a5e948223fb 100644
--- a/src/test/ui/impl-trait/universal_wrong_bounds.rs
+++ b/src/test/ui/impl-trait/universal_wrong_bounds.rs
@@ -8,8 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![feature(universal_impl_trait)]
-
 use std::fmt::Display;
 
 fn foo(f: impl Display + Clone) -> String {
diff --git a/src/test/ui/impl-trait/universal_wrong_bounds.stderr b/src/test/ui/impl-trait/universal_wrong_bounds.stderr
index 3cc0bebe816..02ac4707bc5 100644
--- a/src/test/ui/impl-trait/universal_wrong_bounds.stderr
+++ b/src/test/ui/impl-trait/universal_wrong_bounds.stderr
@@ -1,11 +1,11 @@
 error[E0425]: cannot find function `wants_clone` in this scope
-  --> $DIR/universal_wrong_bounds.rs:18:5
+  --> $DIR/universal_wrong_bounds.rs:16:5
    |
 LL |     wants_clone(f); //~ ERROR cannot find
    |     ^^^^^^^^^^^ did you mean `wants_cone`?
 
 error[E0405]: cannot find trait `Debug` in this scope
-  --> $DIR/universal_wrong_bounds.rs:21:24
+  --> $DIR/universal_wrong_bounds.rs:19:24
    |
 LL | fn wants_debug(g: impl Debug) { } //~ ERROR cannot find
    |                        ^^^^^ not found in this scope
@@ -15,7 +15,7 @@ LL | use std::fmt::Debug;
    |
 
 error[E0405]: cannot find trait `Debug` in this scope
-  --> $DIR/universal_wrong_bounds.rs:22:26
+  --> $DIR/universal_wrong_bounds.rs:20:26
    |
 LL | fn wants_display(g: impl Debug) { } //~ ERROR cannot find
    |                          ^^^^^ not found in this scope
diff --git a/src/test/ui/impl_trait_projections.rs b/src/test/ui/impl_trait_projections.rs
index f69a78b1450..05e88bf848d 100644
--- a/src/test/ui/impl_trait_projections.rs
+++ b/src/test/ui/impl_trait_projections.rs
@@ -7,7 +7,7 @@
 // <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.
-#![feature(dyn_trait, conservative_impl_trait, universal_impl_trait)]
+#![feature(dyn_trait, conservative_impl_trait)]
 
 use std::fmt::Debug;
 use std::option;
diff --git a/src/test/ui/in-band-lifetimes/E0687_where.rs b/src/test/ui/in-band-lifetimes/E0687_where.rs
index ac675587720..c1b268eac70 100644
--- a/src/test/ui/in-band-lifetimes/E0687_where.rs
+++ b/src/test/ui/in-band-lifetimes/E0687_where.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 #![allow(warnings)]
-#![feature(in_band_lifetimes, universal_impl_trait)]
+#![feature(in_band_lifetimes)]
 
 fn bar<F>(x: &F) where F: Fn(&'a u32) {} //~ ERROR must be explicitly
 
diff --git a/src/test/ui/nested_impl_trait.rs b/src/test/ui/nested_impl_trait.rs
index f6302c0f3b3..0fb1222d797 100644
--- a/src/test/ui/nested_impl_trait.rs
+++ b/src/test/ui/nested_impl_trait.rs
@@ -7,7 +7,7 @@
 // <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.
-#![feature(conservative_impl_trait, universal_impl_trait)]
+#![feature(conservative_impl_trait)]
 
 use std::fmt::Debug;