From e8c04b4386d015e126591c799b562d6a578acc40 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Fri, 16 Jul 2021 10:06:26 -0300 Subject: [PATCH] Remove impl_trait_in_bindings feature flag --- compiler/rustc_ast_lowering/src/lib.rs | 8 +- compiler/rustc_feature/src/active.rs | 3 - compiler/rustc_feature/src/removed.rs | 4 + compiler/rustc_typeck/src/check/check.rs | 4 +- .../rustc_typeck/src/check/gather_locals.rs | 24 +--- compiler/rustc_typeck/src/check/mod.rs | 15 +- .../impl-trait-in-bindings.md | 28 ---- .../duplicate.full_tait.stderr | 130 ++++++++--------- .../duplicate.min_tait.stderr | 131 ++++++++---------- .../ui/associated-type-bounds/duplicate.rs | 1 - .../ui/associated-type-bounds/dyn-lcsit.rs | 69 --------- .../associated-type-bounds/dyn-lcsit.stderr | 11 -- ...orted_main_const_fn_item_type_forbidden.rs | 4 +- ...d_main_const_fn_item_type_forbidden.stderr | 25 +++- ...feature-gate-associated_type_bounds.stderr | 6 - .../feature-gate-type_alias_impl_trait.rs | 2 +- .../feature-gate-type_alias_impl_trait.stderr | 15 +- .../generator/layout-error.full_tait.stderr | 18 +-- .../ui/generator/layout-error.min_tait.stderr | 27 +--- src/test/ui/generator/layout-error.rs | 6 +- ...ata-sufficient-for-layout.full_tait.stderr | 14 +- ...data-sufficient-for-layout.min_tait.stderr | 26 +--- .../metadata-sufficient-for-layout.rs | 11 +- .../ui/impl-trait/bound-normalization-fail.rs | 15 +- .../bound-normalization-fail.stderr | 33 ++--- .../bound-normalization-pass.default.stderr | 11 -- .../ui/impl-trait/bound-normalization-pass.rs | 2 - .../bound-normalization-pass.sa.stderr | 11 -- .../issues/issue-70877.full_tait.stderr | 2 +- .../issues/issue-70877.min_tait.stderr | 2 +- src/test/ui/impl-trait/issues/issue-70877.rs | 1 - .../issues/issue-78722.full_tait.stderr | 45 +++--- .../issues/issue-78722.min_tait.stderr | 46 +++--- src/test/ui/impl-trait/issues/issue-78722.rs | 5 +- src/test/ui/impl-trait/where-allowed.stderr | 2 - src/test/ui/mir/issue-75053.full_tait.stderr | 12 +- .../ui/mir/issue-75053.in_bindings.stderr | 23 +-- src/test/ui/mir/issue-75053.min_tait.stderr | 12 +- src/test/ui/mir/issue-75053.rs | 7 +- .../issue-53096.full_tait.stderr | 16 +-- .../issue-53096.min_tait.stderr | 12 +- .../ui/type-alias-impl-trait/issue-53096.rs | 10 +- ...78-generator-and-const-fn.full_tait.stderr | 18 +-- ...678-generator-and-const-fn.min_tait.stderr | 12 +- .../issue-53678-generator-and-const-fn.rs | 7 +- .../type-alias-impl-trait/issue-60371.stderr | 8 +- .../issue-60407.full_tait.stderr | 14 +- .../issue-60407.min_tait.stderr | 26 +--- .../ui/type-alias-impl-trait/issue-60407.rs | 10 +- ...-opaque-ty-from-val-twice.full_tait.stderr | 14 +- ...sue-65679-inst-opaque-ty-from-val-twice.rs | 6 +- ..._inferrable_concrete_type.full_tait.stderr | 14 +- ...o_inferrable_concrete_type.min_tait.stderr | 14 +- .../no_inferrable_concrete_type.rs | 9 +- .../structural-match-no-leak.full_tait.stderr | 14 +- .../structural-match-no-leak.min_tait.stderr | 12 +- .../structural-match-no-leak.rs | 7 +- .../structural-match.full_tait.stderr | 14 +- .../structural-match.min_tait.stderr | 12 +- .../type-alias-impl-trait/structural-match.rs | 7 +- ...pe-alias-impl-trait-const.full_tait.stderr | 25 +++- ...ype-alias-impl-trait-const.min_tait.stderr | 24 +++- .../type-alias-impl-trait-const.rs | 13 +- 63 files changed, 388 insertions(+), 741 deletions(-) delete mode 100644 src/doc/unstable-book/src/language-features/impl-trait-in-bindings.md delete mode 100644 src/test/ui/associated-type-bounds/dyn-lcsit.rs delete mode 100644 src/test/ui/associated-type-bounds/dyn-lcsit.stderr delete mode 100644 src/test/ui/impl-trait/bound-normalization-pass.default.stderr delete mode 100644 src/test/ui/impl-trait/bound-normalization-pass.sa.stderr diff --git a/compiler/rustc_ast_lowering/src/lib.rs b/compiler/rustc_ast_lowering/src/lib.rs index f6f47b11ce2..9718739f813 100644 --- a/compiler/rustc_ast_lowering/src/lib.rs +++ b/compiler/rustc_ast_lowering/src/lib.rs @@ -1460,7 +1460,7 @@ fn lower_ty_direct(&mut self, t: &Ty, mut itctx: ImplTraitContext<'_, 'hir>) -> }), )) } - ImplTraitContext::Disallowed(pos) => { + ImplTraitContext::Disallowed(_) => { let mut err = struct_span_err!( self.sess, t.span, @@ -1468,12 +1468,6 @@ fn lower_ty_direct(&mut self, t: &Ty, mut itctx: ImplTraitContext<'_, 'hir>) -> "`impl Trait` not allowed outside of {}", "function and inherent method return types", ); - if pos == ImplTraitPosition::Binding && self.sess.is_nightly_build() { - err.help( - "add `#![feature(impl_trait_in_bindings)]` to the crate \ - attributes to enable", - ); - } err.emit(); hir::TyKind::Err } diff --git a/compiler/rustc_feature/src/active.rs b/compiler/rustc_feature/src/active.rs index 15123b5b28d..a3e40daf6bf 100644 --- a/compiler/rustc_feature/src/active.rs +++ b/compiler/rustc_feature/src/active.rs @@ -455,9 +455,6 @@ pub fn set(&self, features: &mut Features, span: Span) { /// Allows non-builtin attributes in inner attribute position. (active, custom_inner_attributes, "1.30.0", Some(54726), None), - /// Allows `impl Trait` in bindings (`let`, `const`, `static`). - (incomplete, impl_trait_in_bindings, "1.30.0", Some(63065), None), - /// Allows using `reason` in lint attributes and the `#[expect(lint)]` lint check. (active, lint_reasons, "1.31.0", Some(54503), None), diff --git a/compiler/rustc_feature/src/removed.rs b/compiler/rustc_feature/src/removed.rs index 6d3e2b9c517..d4a7ede8901 100644 --- a/compiler/rustc_feature/src/removed.rs +++ b/compiler/rustc_feature/src/removed.rs @@ -148,6 +148,10 @@ macro_rules! declare_features { (removed, const_raw_ptr_to_usize_cast, "1.55.0", Some(51910), None, Some("at compile-time, pointers do not have an integer value, so these casts cannot be properly supported")), + /// Allows `impl Trait` in bindings (`let`, `const`, `static`). + (removed, impl_trait_in_bindings, "1.55.0", Some(63065), None, + Some("removed due to being incomplete and unstable")), + // ------------------------------------------------------------------------- // feature-group-end: removed features // ------------------------------------------------------------------------- diff --git a/compiler/rustc_typeck/src/check/check.rs b/compiler/rustc_typeck/src/check/check.rs index 8db95957816..b5db3331d04 100644 --- a/compiler/rustc_typeck/src/check/check.rs +++ b/compiler/rustc_typeck/src/check/check.rs @@ -221,9 +221,7 @@ pub(super) fn check_fn<'a, 'tcx>( fcx.resume_yield_tys = Some((resume_ty, yield_ty)); } - let outer_def_id = tcx.closure_base_def_id(hir.local_def_id(fn_id).to_def_id()).expect_local(); - let outer_hir_id = hir.local_def_id_to_hir_id(outer_def_id); - GatherLocalsVisitor::new(&fcx, outer_hir_id).visit_body(body); + GatherLocalsVisitor::new(&fcx).visit_body(body); // C-variadic fns also have a `VaList` input that's not listed in `fn_sig` // (as it's created inside the body itself, not passed in from outside). diff --git a/compiler/rustc_typeck/src/check/gather_locals.rs b/compiler/rustc_typeck/src/check/gather_locals.rs index 2683e886eeb..4ebfd7fd212 100644 --- a/compiler/rustc_typeck/src/check/gather_locals.rs +++ b/compiler/rustc_typeck/src/check/gather_locals.rs @@ -4,12 +4,11 @@ use rustc_hir::PatKind; use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind}; use rustc_middle::ty::Ty; -use rustc_span::{sym, Span}; +use rustc_span::Span; use rustc_trait_selection::traits; pub(super) struct GatherLocalsVisitor<'a, 'tcx> { fcx: &'a FnCtxt<'a, 'tcx>, - parent_id: hir::HirId, // parameters are special cases of patterns, but we want to handle them as // *distinct* cases. so track when we are hitting a pattern *within* an fn // parameter. @@ -17,8 +16,8 @@ pub(super) struct GatherLocalsVisitor<'a, 'tcx> { } impl<'a, 'tcx> GatherLocalsVisitor<'a, 'tcx> { - pub(super) fn new(fcx: &'a FnCtxt<'a, 'tcx>, parent_id: hir::HirId) -> Self { - Self { fcx, parent_id, outermost_fn_param_pat: None } + pub(super) fn new(fcx: &'a FnCtxt<'a, 'tcx>) -> Self { + Self { fcx, outermost_fn_param_pat: None } } fn assign(&mut self, span: Span, nid: hir::HirId, ty_opt: Option>) -> Ty<'tcx> { @@ -57,26 +56,15 @@ fn visit_local(&mut self, local: &'tcx hir::Local<'tcx>) { Some(ref ty) => { let o_ty = self.fcx.to_ty(&ty); - let revealed_ty = self.fcx.instantiate_opaque_types_from_value( - self.parent_id, - o_ty, - ty.span, - Some(sym::impl_trait_in_bindings), - ); - - let c_ty = - self.fcx.inh.infcx.canonicalize_user_type_annotation(UserType::Ty(revealed_ty)); - debug!( - "visit_local: ty.hir_id={:?} o_ty={:?} revealed_ty={:?} c_ty={:?}", - ty.hir_id, o_ty, revealed_ty, c_ty - ); + let c_ty = self.fcx.inh.infcx.canonicalize_user_type_annotation(UserType::Ty(o_ty)); + debug!("visit_local: ty.hir_id={:?} o_ty={:?} c_ty={:?}", ty.hir_id, o_ty, c_ty); self.fcx .typeck_results .borrow_mut() .user_provided_types_mut() .insert(ty.hir_id, c_ty); - Some(LocalTy { decl_ty: o_ty, revealed_ty }) + Some(LocalTy { decl_ty: o_ty, revealed_ty: o_ty }) } None => None, }; diff --git a/compiler/rustc_typeck/src/check/mod.rs b/compiler/rustc_typeck/src/check/mod.rs index 11f0b47a457..d30b057e26f 100644 --- a/compiler/rustc_typeck/src/check/mod.rs +++ b/compiler/rustc_typeck/src/check/mod.rs @@ -118,9 +118,9 @@ use rustc_session::config; use rustc_session::parse::feature_err; use rustc_session::Session; +use rustc_span::source_map::DUMMY_SP; use rustc_span::symbol::{kw, Ident}; use rustc_span::{self, BytePos, MultiSpan, Span}; -use rustc_span::{source_map::DUMMY_SP, sym}; use rustc_target::abi::VariantIdx; use rustc_target::spec::abi::Abi; use rustc_trait_selection::traits; @@ -441,19 +441,12 @@ fn typeck_with_fallback<'tcx>( let expected_type = fcx.normalize_associated_types_in(body.value.span, expected_type); fcx.require_type_is_sized(expected_type, body.value.span, traits::ConstSized); - let revealed_ty = fcx.instantiate_opaque_types_from_value( - id, - expected_type, - body.value.span, - Some(sym::impl_trait_in_bindings), - ); - // Gather locals in statics (because of block expressions). - GatherLocalsVisitor::new(&fcx, id).visit_body(body); + GatherLocalsVisitor::new(&fcx).visit_body(body); - fcx.check_expr_coercable_to_type(&body.value, revealed_ty, None); + fcx.check_expr_coercable_to_type(&body.value, expected_type, None); - fcx.write_ty(id, revealed_ty); + fcx.write_ty(id, expected_type); fcx }; diff --git a/src/doc/unstable-book/src/language-features/impl-trait-in-bindings.md b/src/doc/unstable-book/src/language-features/impl-trait-in-bindings.md deleted file mode 100644 index 5c6aa912c1b..00000000000 --- a/src/doc/unstable-book/src/language-features/impl-trait-in-bindings.md +++ /dev/null @@ -1,28 +0,0 @@ -# `impl_trait_in_bindings` - -The tracking issue for this feature is: [#63065] - -[#63065]: https://github.com/rust-lang/rust/issues/63065 - ------------------------- - -The `impl_trait_in_bindings` feature gate lets you use `impl Trait` syntax in -`let`, `static`, and `const` bindings. - -A simple example is: - -```rust -#![feature(impl_trait_in_bindings)] - -use std::fmt::Debug; - -fn main() { - let a: impl Debug + Clone = 42; - let b = a.clone(); - println!("{:?}", b); // prints `42` -} -``` - -Note however that because the types of `a` and `b` are opaque in the above -example, calling inherent methods or methods outside of the specified traits -(e.g., `a.abs()` or `b.abs()`) is not allowed, and yields an error. diff --git a/src/test/ui/associated-type-bounds/duplicate.full_tait.stderr b/src/test/ui/associated-type-bounds/duplicate.full_tait.stderr index dcc4eac0fbd..bffa5150fe1 100644 --- a/src/test/ui/associated-type-bounds/duplicate.full_tait.stderr +++ b/src/test/ui/associated-type-bounds/duplicate.full_tait.stderr @@ -7,16 +7,8 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/duplicate.rs:6:12 - | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:11:36 + --> $DIR/duplicate.rs:10:36 | LL | struct SI1> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -24,7 +16,7 @@ LL | struct SI1> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:13:36 + --> $DIR/duplicate.rs:12:36 | LL | struct SI2> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -32,7 +24,7 @@ LL | struct SI2> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:15:39 + --> $DIR/duplicate.rs:14:39 | LL | struct SI3> { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -40,7 +32,7 @@ LL | struct SI3> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:17:45 + --> $DIR/duplicate.rs:16:45 | LL | struct SW1 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -48,7 +40,7 @@ LL | struct SW1 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:19:45 + --> $DIR/duplicate.rs:18:45 | LL | struct SW2 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -56,7 +48,7 @@ LL | struct SW2 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:21:48 + --> $DIR/duplicate.rs:20:48 | LL | struct SW3 where T: Iterator { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -64,7 +56,7 @@ LL | struct SW3 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:24:34 + --> $DIR/duplicate.rs:23:34 | LL | enum EI1> { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -72,7 +64,7 @@ LL | enum EI1> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:26:34 + --> $DIR/duplicate.rs:25:34 | LL | enum EI2> { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -80,7 +72,7 @@ LL | enum EI2> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:28:37 + --> $DIR/duplicate.rs:27:37 | LL | enum EI3> { V(T) } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -88,7 +80,7 @@ LL | enum EI3> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:30:43 + --> $DIR/duplicate.rs:29:43 | LL | enum EW1 where T: Iterator { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -96,7 +88,7 @@ LL | enum EW1 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:32:43 + --> $DIR/duplicate.rs:31:43 | LL | enum EW2 where T: Iterator { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -104,7 +96,7 @@ LL | enum EW2 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:34:46 + --> $DIR/duplicate.rs:33:46 | LL | enum EW3 where T: Iterator { V(T) } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -112,7 +104,7 @@ LL | enum EW3 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:37:35 + --> $DIR/duplicate.rs:36:35 | LL | union UI1> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -120,7 +112,7 @@ LL | union UI1> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:39:35 + --> $DIR/duplicate.rs:38:35 | LL | union UI2> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -128,7 +120,7 @@ LL | union UI2> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:41:38 + --> $DIR/duplicate.rs:40:38 | LL | union UI3> { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -136,7 +128,7 @@ LL | union UI3> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:43:44 + --> $DIR/duplicate.rs:42:44 | LL | union UW1 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -144,7 +136,7 @@ LL | union UW1 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:45:44 + --> $DIR/duplicate.rs:44:44 | LL | union UW2 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -152,7 +144,7 @@ LL | union UW2 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:47:47 + --> $DIR/duplicate.rs:46:47 | LL | union UW3 where T: Iterator { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -160,7 +152,7 @@ LL | union UW3 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:50:32 + --> $DIR/duplicate.rs:49:32 | LL | fn FI1>() {} | ---------- ^^^^^^^^^^ re-bound here @@ -168,7 +160,7 @@ LL | fn FI1>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:52:32 + --> $DIR/duplicate.rs:51:32 | LL | fn FI2>() {} | ---------- ^^^^^^^^^^ re-bound here @@ -176,7 +168,7 @@ LL | fn FI2>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:54:35 + --> $DIR/duplicate.rs:53:35 | LL | fn FI3>() {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -184,7 +176,7 @@ LL | fn FI3>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:56:43 + --> $DIR/duplicate.rs:55:43 | LL | fn FW1() where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -192,7 +184,7 @@ LL | fn FW1() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:58:43 + --> $DIR/duplicate.rs:57:43 | LL | fn FW2() where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -200,7 +192,7 @@ LL | fn FW2() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:60:46 + --> $DIR/duplicate.rs:59:46 | LL | fn FW3() where T: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -208,7 +200,7 @@ LL | fn FW3() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:66:40 + --> $DIR/duplicate.rs:65:40 | LL | fn FAPIT1(_: impl Iterator) {} | ---------- ^^^^^^^^^^ re-bound here @@ -216,7 +208,7 @@ LL | fn FAPIT1(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:68:40 + --> $DIR/duplicate.rs:67:40 | LL | fn FAPIT2(_: impl Iterator) {} | ---------- ^^^^^^^^^^ re-bound here @@ -224,7 +216,7 @@ LL | fn FAPIT2(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:70:43 + --> $DIR/duplicate.rs:69:43 | LL | fn FAPIT3(_: impl Iterator) {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -232,7 +224,7 @@ LL | fn FAPIT3(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:73:35 + --> $DIR/duplicate.rs:72:35 | LL | type TAI1> = T; | ---------- ^^^^^^^^^^ re-bound here @@ -240,7 +232,7 @@ LL | type TAI1> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:75:35 + --> $DIR/duplicate.rs:74:35 | LL | type TAI2> = T; | ---------- ^^^^^^^^^^ re-bound here @@ -248,7 +240,7 @@ LL | type TAI2> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:77:38 + --> $DIR/duplicate.rs:76:38 | LL | type TAI3> = T; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -256,7 +248,7 @@ LL | type TAI3> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:79:44 + --> $DIR/duplicate.rs:78:44 | LL | type TAW1 where T: Iterator = T; | ---------- ^^^^^^^^^^ re-bound here @@ -264,7 +256,7 @@ LL | type TAW1 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:81:44 + --> $DIR/duplicate.rs:80:44 | LL | type TAW2 where T: Iterator = T; | ---------- ^^^^^^^^^^ re-bound here @@ -272,7 +264,7 @@ LL | type TAW2 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:83:47 + --> $DIR/duplicate.rs:82:47 | LL | type TAW3 where T: Iterator = T; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -280,7 +272,7 @@ LL | type TAW3 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:86:36 + --> $DIR/duplicate.rs:85:36 | LL | type ETAI1> = impl Copy; | ---------- ^^^^^^^^^^ re-bound here @@ -288,7 +280,7 @@ LL | type ETAI1> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:88:36 + --> $DIR/duplicate.rs:87:36 | LL | type ETAI2> = impl Copy; | ---------- ^^^^^^^^^^ re-bound here @@ -296,7 +288,7 @@ LL | type ETAI2> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:90:39 + --> $DIR/duplicate.rs:89:39 | LL | type ETAI3> = impl Copy; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -304,7 +296,7 @@ LL | type ETAI3> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:92:40 + --> $DIR/duplicate.rs:91:40 | LL | type ETAI4 = impl Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -312,7 +304,7 @@ LL | type ETAI4 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:94:40 + --> $DIR/duplicate.rs:93:40 | LL | type ETAI5 = impl Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -320,7 +312,7 @@ LL | type ETAI5 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:96:43 + --> $DIR/duplicate.rs:95:43 | LL | type ETAI6 = impl Iterator; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -328,7 +320,7 @@ LL | type ETAI6 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:99:36 + --> $DIR/duplicate.rs:98:36 | LL | trait TRI1> {} | ---------- ^^^^^^^^^^ re-bound here @@ -336,7 +328,7 @@ LL | trait TRI1> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:101:36 + --> $DIR/duplicate.rs:100:36 | LL | trait TRI2> {} | ---------- ^^^^^^^^^^ re-bound here @@ -344,7 +336,7 @@ LL | trait TRI2> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:103:39 + --> $DIR/duplicate.rs:102:39 | LL | trait TRI3> {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -352,7 +344,7 @@ LL | trait TRI3> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:105:34 + --> $DIR/duplicate.rs:104:34 | LL | trait TRS1: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -360,7 +352,7 @@ LL | trait TRS1: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:107:34 + --> $DIR/duplicate.rs:106:34 | LL | trait TRS2: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -368,7 +360,7 @@ LL | trait TRS2: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:109:37 + --> $DIR/duplicate.rs:108:37 | LL | trait TRS3: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -376,7 +368,7 @@ LL | trait TRS3: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:111:45 + --> $DIR/duplicate.rs:110:45 | LL | trait TRW1 where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -384,7 +376,7 @@ LL | trait TRW1 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:113:45 + --> $DIR/duplicate.rs:112:45 | LL | trait TRW2 where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -392,7 +384,7 @@ LL | trait TRW2 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:115:48 + --> $DIR/duplicate.rs:114:48 | LL | trait TRW3 where T: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -400,7 +392,7 @@ LL | trait TRW3 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:117:46 + --> $DIR/duplicate.rs:116:46 | LL | trait TRSW1 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -408,7 +400,7 @@ LL | trait TRSW1 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:117:46 + --> $DIR/duplicate.rs:116:46 | LL | trait TRSW1 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -416,7 +408,7 @@ LL | trait TRSW1 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:120:46 + --> $DIR/duplicate.rs:119:46 | LL | trait TRSW2 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -424,7 +416,7 @@ LL | trait TRSW2 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:120:46 + --> $DIR/duplicate.rs:119:46 | LL | trait TRSW2 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -432,7 +424,7 @@ LL | trait TRSW2 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:123:49 + --> $DIR/duplicate.rs:122:49 | LL | trait TRSW3 where Self: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -440,7 +432,7 @@ LL | trait TRSW3 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:123:49 + --> $DIR/duplicate.rs:122:49 | LL | trait TRSW3 where Self: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -448,7 +440,7 @@ LL | trait TRSW3 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:133:40 + --> $DIR/duplicate.rs:132:40 | LL | type TADyn1 = dyn Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -456,7 +448,7 @@ LL | type TADyn1 = dyn Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:135:44 + --> $DIR/duplicate.rs:134:44 | LL | type TADyn2 = Box>; | ---------- ^^^^^^^^^^ re-bound here @@ -464,7 +456,7 @@ LL | type TADyn2 = Box>; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:137:43 + --> $DIR/duplicate.rs:136:43 | LL | type TADyn3 = dyn Iterator; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -472,7 +464,7 @@ LL | type TADyn3 = dyn Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:126:43 + --> $DIR/duplicate.rs:125:43 | LL | trait TRA1 { type A: Iterator; } | ---------- ^^^^^^^^^^ re-bound here @@ -480,7 +472,7 @@ LL | trait TRA1 { type A: Iterator; } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:128:43 + --> $DIR/duplicate.rs:127:43 | LL | trait TRA2 { type A: Iterator; } | ---------- ^^^^^^^^^^ re-bound here @@ -488,13 +480,13 @@ LL | trait TRA2 { type A: Iterator; } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:130:46 + --> $DIR/duplicate.rs:129:46 | LL | trait TRA3 { type A: Iterator; } | ------------- ^^^^^^^^^^^^^ re-bound here | | | `Item` bound here first -error: aborting due to 60 previous errors; 2 warnings emitted +error: aborting due to 60 previous errors; 1 warning emitted For more information about this error, try `rustc --explain E0719`. diff --git a/src/test/ui/associated-type-bounds/duplicate.min_tait.stderr b/src/test/ui/associated-type-bounds/duplicate.min_tait.stderr index 92058121ab6..06bfac588de 100644 --- a/src/test/ui/associated-type-bounds/duplicate.min_tait.stderr +++ b/src/test/ui/associated-type-bounds/duplicate.min_tait.stderr @@ -1,14 +1,5 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/duplicate.rs:6:12 - | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information - error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:11:36 + --> $DIR/duplicate.rs:10:36 | LL | struct SI1> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -16,7 +7,7 @@ LL | struct SI1> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:13:36 + --> $DIR/duplicate.rs:12:36 | LL | struct SI2> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -24,7 +15,7 @@ LL | struct SI2> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:15:39 + --> $DIR/duplicate.rs:14:39 | LL | struct SI3> { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -32,7 +23,7 @@ LL | struct SI3> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:17:45 + --> $DIR/duplicate.rs:16:45 | LL | struct SW1 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -40,7 +31,7 @@ LL | struct SW1 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:19:45 + --> $DIR/duplicate.rs:18:45 | LL | struct SW2 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -48,7 +39,7 @@ LL | struct SW2 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:21:48 + --> $DIR/duplicate.rs:20:48 | LL | struct SW3 where T: Iterator { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -56,7 +47,7 @@ LL | struct SW3 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:24:34 + --> $DIR/duplicate.rs:23:34 | LL | enum EI1> { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -64,7 +55,7 @@ LL | enum EI1> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:26:34 + --> $DIR/duplicate.rs:25:34 | LL | enum EI2> { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -72,7 +63,7 @@ LL | enum EI2> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:28:37 + --> $DIR/duplicate.rs:27:37 | LL | enum EI3> { V(T) } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -80,7 +71,7 @@ LL | enum EI3> { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:30:43 + --> $DIR/duplicate.rs:29:43 | LL | enum EW1 where T: Iterator { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -88,7 +79,7 @@ LL | enum EW1 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:32:43 + --> $DIR/duplicate.rs:31:43 | LL | enum EW2 where T: Iterator { V(T) } | ---------- ^^^^^^^^^^ re-bound here @@ -96,7 +87,7 @@ LL | enum EW2 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:34:46 + --> $DIR/duplicate.rs:33:46 | LL | enum EW3 where T: Iterator { V(T) } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -104,7 +95,7 @@ LL | enum EW3 where T: Iterator { V(T) } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:37:35 + --> $DIR/duplicate.rs:36:35 | LL | union UI1> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -112,7 +103,7 @@ LL | union UI1> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:39:35 + --> $DIR/duplicate.rs:38:35 | LL | union UI2> { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -120,7 +111,7 @@ LL | union UI2> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:41:38 + --> $DIR/duplicate.rs:40:38 | LL | union UI3> { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -128,7 +119,7 @@ LL | union UI3> { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:43:44 + --> $DIR/duplicate.rs:42:44 | LL | union UW1 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -136,7 +127,7 @@ LL | union UW1 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:45:44 + --> $DIR/duplicate.rs:44:44 | LL | union UW2 where T: Iterator { f: T } | ---------- ^^^^^^^^^^ re-bound here @@ -144,7 +135,7 @@ LL | union UW2 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:47:47 + --> $DIR/duplicate.rs:46:47 | LL | union UW3 where T: Iterator { f: T } | ------------- ^^^^^^^^^^^^^ re-bound here @@ -152,7 +143,7 @@ LL | union UW3 where T: Iterator { f: T } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:50:32 + --> $DIR/duplicate.rs:49:32 | LL | fn FI1>() {} | ---------- ^^^^^^^^^^ re-bound here @@ -160,7 +151,7 @@ LL | fn FI1>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:52:32 + --> $DIR/duplicate.rs:51:32 | LL | fn FI2>() {} | ---------- ^^^^^^^^^^ re-bound here @@ -168,7 +159,7 @@ LL | fn FI2>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:54:35 + --> $DIR/duplicate.rs:53:35 | LL | fn FI3>() {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -176,7 +167,7 @@ LL | fn FI3>() {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:56:43 + --> $DIR/duplicate.rs:55:43 | LL | fn FW1() where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -184,7 +175,7 @@ LL | fn FW1() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:58:43 + --> $DIR/duplicate.rs:57:43 | LL | fn FW2() where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -192,7 +183,7 @@ LL | fn FW2() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:60:46 + --> $DIR/duplicate.rs:59:46 | LL | fn FW3() where T: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -200,7 +191,7 @@ LL | fn FW3() where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:66:40 + --> $DIR/duplicate.rs:65:40 | LL | fn FAPIT1(_: impl Iterator) {} | ---------- ^^^^^^^^^^ re-bound here @@ -208,7 +199,7 @@ LL | fn FAPIT1(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:68:40 + --> $DIR/duplicate.rs:67:40 | LL | fn FAPIT2(_: impl Iterator) {} | ---------- ^^^^^^^^^^ re-bound here @@ -216,7 +207,7 @@ LL | fn FAPIT2(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:70:43 + --> $DIR/duplicate.rs:69:43 | LL | fn FAPIT3(_: impl Iterator) {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -224,7 +215,7 @@ LL | fn FAPIT3(_: impl Iterator) {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:73:35 + --> $DIR/duplicate.rs:72:35 | LL | type TAI1> = T; | ---------- ^^^^^^^^^^ re-bound here @@ -232,7 +223,7 @@ LL | type TAI1> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:75:35 + --> $DIR/duplicate.rs:74:35 | LL | type TAI2> = T; | ---------- ^^^^^^^^^^ re-bound here @@ -240,7 +231,7 @@ LL | type TAI2> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:77:38 + --> $DIR/duplicate.rs:76:38 | LL | type TAI3> = T; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -248,7 +239,7 @@ LL | type TAI3> = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:79:44 + --> $DIR/duplicate.rs:78:44 | LL | type TAW1 where T: Iterator = T; | ---------- ^^^^^^^^^^ re-bound here @@ -256,7 +247,7 @@ LL | type TAW1 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:81:44 + --> $DIR/duplicate.rs:80:44 | LL | type TAW2 where T: Iterator = T; | ---------- ^^^^^^^^^^ re-bound here @@ -264,7 +255,7 @@ LL | type TAW2 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:83:47 + --> $DIR/duplicate.rs:82:47 | LL | type TAW3 where T: Iterator = T; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -272,7 +263,7 @@ LL | type TAW3 where T: Iterator = T; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:86:36 + --> $DIR/duplicate.rs:85:36 | LL | type ETAI1> = impl Copy; | ---------- ^^^^^^^^^^ re-bound here @@ -280,7 +271,7 @@ LL | type ETAI1> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:88:36 + --> $DIR/duplicate.rs:87:36 | LL | type ETAI2> = impl Copy; | ---------- ^^^^^^^^^^ re-bound here @@ -288,7 +279,7 @@ LL | type ETAI2> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:90:39 + --> $DIR/duplicate.rs:89:39 | LL | type ETAI3> = impl Copy; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -296,7 +287,7 @@ LL | type ETAI3> = impl Copy; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:92:40 + --> $DIR/duplicate.rs:91:40 | LL | type ETAI4 = impl Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -304,7 +295,7 @@ LL | type ETAI4 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:94:40 + --> $DIR/duplicate.rs:93:40 | LL | type ETAI5 = impl Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -312,7 +303,7 @@ LL | type ETAI5 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:96:43 + --> $DIR/duplicate.rs:95:43 | LL | type ETAI6 = impl Iterator; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -320,7 +311,7 @@ LL | type ETAI6 = impl Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:99:36 + --> $DIR/duplicate.rs:98:36 | LL | trait TRI1> {} | ---------- ^^^^^^^^^^ re-bound here @@ -328,7 +319,7 @@ LL | trait TRI1> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:101:36 + --> $DIR/duplicate.rs:100:36 | LL | trait TRI2> {} | ---------- ^^^^^^^^^^ re-bound here @@ -336,7 +327,7 @@ LL | trait TRI2> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:103:39 + --> $DIR/duplicate.rs:102:39 | LL | trait TRI3> {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -344,7 +335,7 @@ LL | trait TRI3> {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:105:34 + --> $DIR/duplicate.rs:104:34 | LL | trait TRS1: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -352,7 +343,7 @@ LL | trait TRS1: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:107:34 + --> $DIR/duplicate.rs:106:34 | LL | trait TRS2: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -360,7 +351,7 @@ LL | trait TRS2: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:109:37 + --> $DIR/duplicate.rs:108:37 | LL | trait TRS3: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -368,7 +359,7 @@ LL | trait TRS3: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:111:45 + --> $DIR/duplicate.rs:110:45 | LL | trait TRW1 where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -376,7 +367,7 @@ LL | trait TRW1 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:113:45 + --> $DIR/duplicate.rs:112:45 | LL | trait TRW2 where T: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -384,7 +375,7 @@ LL | trait TRW2 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:115:48 + --> $DIR/duplicate.rs:114:48 | LL | trait TRW3 where T: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -392,7 +383,7 @@ LL | trait TRW3 where T: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:117:46 + --> $DIR/duplicate.rs:116:46 | LL | trait TRSW1 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -400,7 +391,7 @@ LL | trait TRSW1 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:117:46 + --> $DIR/duplicate.rs:116:46 | LL | trait TRSW1 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -408,7 +399,7 @@ LL | trait TRSW1 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:120:46 + --> $DIR/duplicate.rs:119:46 | LL | trait TRSW2 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -416,7 +407,7 @@ LL | trait TRSW2 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:120:46 + --> $DIR/duplicate.rs:119:46 | LL | trait TRSW2 where Self: Iterator {} | ---------- ^^^^^^^^^^ re-bound here @@ -424,7 +415,7 @@ LL | trait TRSW2 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:123:49 + --> $DIR/duplicate.rs:122:49 | LL | trait TRSW3 where Self: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -432,7 +423,7 @@ LL | trait TRSW3 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:123:49 + --> $DIR/duplicate.rs:122:49 | LL | trait TRSW3 where Self: Iterator {} | ------------- ^^^^^^^^^^^^^ re-bound here @@ -440,7 +431,7 @@ LL | trait TRSW3 where Self: Iterator {} | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:133:40 + --> $DIR/duplicate.rs:132:40 | LL | type TADyn1 = dyn Iterator; | ---------- ^^^^^^^^^^ re-bound here @@ -448,7 +439,7 @@ LL | type TADyn1 = dyn Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:135:44 + --> $DIR/duplicate.rs:134:44 | LL | type TADyn2 = Box>; | ---------- ^^^^^^^^^^ re-bound here @@ -456,7 +447,7 @@ LL | type TADyn2 = Box>; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:137:43 + --> $DIR/duplicate.rs:136:43 | LL | type TADyn3 = dyn Iterator; | ------------- ^^^^^^^^^^^^^ re-bound here @@ -464,7 +455,7 @@ LL | type TADyn3 = dyn Iterator; | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:126:43 + --> $DIR/duplicate.rs:125:43 | LL | trait TRA1 { type A: Iterator; } | ---------- ^^^^^^^^^^ re-bound here @@ -472,7 +463,7 @@ LL | trait TRA1 { type A: Iterator; } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:128:43 + --> $DIR/duplicate.rs:127:43 | LL | trait TRA2 { type A: Iterator; } | ---------- ^^^^^^^^^^ re-bound here @@ -480,13 +471,13 @@ LL | trait TRA2 { type A: Iterator; } | `Item` bound here first error[E0719]: the value of the associated type `Item` (from trait `Iterator`) is already specified - --> $DIR/duplicate.rs:130:46 + --> $DIR/duplicate.rs:129:46 | LL | trait TRA3 { type A: Iterator; } | ------------- ^^^^^^^^^^^^^ re-bound here | | | `Item` bound here first -error: aborting due to 60 previous errors; 1 warning emitted +error: aborting due to 60 previous errors For more information about this error, try `rustc --explain E0719`. diff --git a/src/test/ui/associated-type-bounds/duplicate.rs b/src/test/ui/associated-type-bounds/duplicate.rs index d6c73b5ffea..0d7804ef1a7 100644 --- a/src/test/ui/associated-type-bounds/duplicate.rs +++ b/src/test/ui/associated-type-bounds/duplicate.rs @@ -3,7 +3,6 @@ #![feature(min_type_alias_impl_trait)] #![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -#![feature(impl_trait_in_bindings)] //~ WARN the feature `impl_trait_in_bindings` is incomplete #![feature(untagged_unions)] use std::iter; diff --git a/src/test/ui/associated-type-bounds/dyn-lcsit.rs b/src/test/ui/associated-type-bounds/dyn-lcsit.rs deleted file mode 100644 index b7869e22b4a..00000000000 --- a/src/test/ui/associated-type-bounds/dyn-lcsit.rs +++ /dev/null @@ -1,69 +0,0 @@ -// run-pass - -#![feature(associated_type_bounds)] -#![feature(impl_trait_in_bindings)] -//~^ WARNING `impl_trait_in_bindings` is incomplete -#![allow(non_upper_case_globals)] - -use std::ops::Add; - -trait Tr1 { type As1; fn mk(&self) -> Self::As1; } -trait Tr2<'a> { fn tr2(self) -> &'a Self; } - -fn assert_copy(x: T) { let _x = x; let _x = x; } -fn assert_static(_: T) {} -fn assert_forall_tr2 Tr2<'a>>(_: T) {} - -#[derive(Copy, Clone)] -struct S1; -#[derive(Copy, Clone)] -struct S2; -impl Tr1 for S1 { type As1 = S2; fn mk(&self) -> Self::As1 { S2 } } - -const cdef_et1: &dyn Tr1 = &S1; -const sdef_et1: &dyn Tr1 = &S1; -pub fn use_et1() { assert_copy(cdef_et1.mk()); assert_copy(sdef_et1.mk()); } - -const cdef_et2: &(dyn Tr1 + Sync) = &S1; -static sdef_et2: &(dyn Tr1 + Sync) = &S1; -pub fn use_et2() { assert_static(cdef_et2.mk()); assert_static(sdef_et2.mk()); } - -const cdef_et3: &dyn Tr1>>> = { - struct A; - impl Tr1 for A { - type As1 = core::ops::Range; - fn mk(&self) -> Self::As1 { 0..10 } - } - &A -}; -pub fn use_et3() { - let _0 = cdef_et3.mk().clone(); - let mut s = 0u8; - for _1 in _0 { - let _2 = _1 + 1u8; - s += _2.into(); - } - assert_eq!(s, (0..10).map(|x| x + 1).sum()); -} - -const cdef_et4: &(dyn Tr1 Tr2<'a>> + Sync) = { - #[derive(Copy, Clone)] - struct A; - impl Tr1 for A { - type As1 = A; - fn mk(&self) -> A { A } - } - impl<'a> Tr2<'a> for A { - fn tr2(self) -> &'a Self { &A } - } - &A -}; -static sdef_et4: &(dyn Tr1 Tr2<'a>> + Sync) = cdef_et4; -pub fn use_et4() { assert_forall_tr2(cdef_et4.mk()); assert_forall_tr2(sdef_et4.mk()); } - -fn main() { - let _ = use_et1(); - let _ = use_et2(); - let _ = use_et3(); - let _ = use_et4(); -} diff --git a/src/test/ui/associated-type-bounds/dyn-lcsit.stderr b/src/test/ui/associated-type-bounds/dyn-lcsit.stderr deleted file mode 100644 index 3637f9558be..00000000000 --- a/src/test/ui/associated-type-bounds/dyn-lcsit.stderr +++ /dev/null @@ -1,11 +0,0 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/dyn-lcsit.rs:4:12 - | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information - -warning: 1 warning emitted - diff --git a/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.rs b/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.rs index 559f10de109..d8553815b75 100644 --- a/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.rs +++ b/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.rs @@ -1,12 +1,14 @@ #![feature(imported_main)] -#![feature(min_type_alias_impl_trait, impl_trait_in_bindings)] +#![feature(min_type_alias_impl_trait)] #![allow(incomplete_features)] //~^^^ ERROR `main` function not found in crate pub mod foo { type MainFn = impl Fn(); + //~^ ERROR could not find defining uses fn bar() {} pub const BAR: MainFn = bar; + //~^ ERROR mismatched types [E0308] } use foo::BAR as main; diff --git a/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.stderr b/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.stderr index 9b879fc09f7..c4c0afc5687 100644 --- a/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.stderr +++ b/src/test/ui/entry-point/imported_main_const_fn_item_type_forbidden.stderr @@ -2,7 +2,7 @@ error[E0601]: `main` function not found in crate `imported_main_const_fn_item_ty --> $DIR/imported_main_const_fn_item_type_forbidden.rs:1:1 | LL | / #![feature(imported_main)] -LL | | #![feature(min_type_alias_impl_trait, impl_trait_in_bindings)] +LL | | #![feature(min_type_alias_impl_trait)] LL | | #![allow(incomplete_features)] LL | | ... | @@ -12,6 +12,25 @@ LL | | use foo::BAR as main; | | | non-function item at `crate::main` is found -error: aborting due to previous error +error[E0308]: mismatched types + --> $DIR/imported_main_const_fn_item_type_forbidden.rs:10:29 + | +LL | type MainFn = impl Fn(); + | --------- the expected opaque type +... +LL | pub const BAR: MainFn = bar; + | ^^^ expected opaque type, found fn item + | + = note: expected opaque type `impl Fn<()>` + found fn item `fn() {bar}` -For more information about this error, try `rustc --explain E0601`. +error: could not find defining uses + --> $DIR/imported_main_const_fn_item_type_forbidden.rs:6:19 + | +LL | type MainFn = impl Fn(); + | ^^^^^^^^^ + +error: aborting due to 3 previous errors + +Some errors have detailed explanations: E0308, E0601. +For more information about an error, try `rustc --explain E0308`. diff --git a/src/test/ui/feature-gates/feature-gate-associated_type_bounds.stderr b/src/test/ui/feature-gates/feature-gate-associated_type_bounds.stderr index be5d35139b6..6a048ee8797 100644 --- a/src/test/ui/feature-gates/feature-gate-associated_type_bounds.stderr +++ b/src/test/ui/feature-gates/feature-gate-associated_type_bounds.stderr @@ -120,24 +120,18 @@ error[E0562]: `impl Trait` not allowed outside of function and inherent method r | LL | const _cdef: impl Tr1 = S1; | ^^^^^^^^^^^^^^^^^^^ - | - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable error[E0562]: `impl Trait` not allowed outside of function and inherent method return types --> $DIR/feature-gate-associated_type_bounds.rs:64:15 | LL | static _sdef: impl Tr1 = S1; | ^^^^^^^^^^^^^^^^^^^ - | - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable error[E0562]: `impl Trait` not allowed outside of function and inherent method return types --> $DIR/feature-gate-associated_type_bounds.rs:71:12 | LL | let _: impl Tr1 = S1; | ^^^^^^^^^^^^^^^^^^^ - | - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable error[E0277]: the trait bound `<::A as Iterator>::Item: Copy` is not satisfied --> $DIR/feature-gate-associated_type_bounds.rs:15:28 diff --git a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs index dfd82a25f4c..4fb1cd2aae1 100644 --- a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs +++ b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.rs @@ -31,7 +31,7 @@ fn define3_1() { fn define4() { let y: Foo4 = 42; - //~^ ERROR not permitted here + //~^ ERROR mismatched types [E0308] } fn main() {} diff --git a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr index 43fd76ef0ed..10409d5fc4b 100644 --- a/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr +++ b/src/test/ui/feature-gates/feature-gate-type_alias_impl_trait.stderr @@ -45,14 +45,19 @@ LL | define3(42) = note: expected opaque type `impl Debug` found type `{integer}` -error[E0658]: type alias impl trait is not permitted here - --> $DIR/feature-gate-type_alias_impl_trait.rs:33:12 +error[E0308]: mismatched types + --> $DIR/feature-gate-type_alias_impl_trait.rs:33:19 | +LL | type Foo4 = impl Debug; + | ---------- the expected opaque type +... LL | let y: Foo4 = 42; - | ^^^^ + | ---- ^^ expected opaque type, found integer + | | + | expected due to this | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable + = note: expected opaque type `impl Debug` + found type `{integer}` error: could not find defining uses --> $DIR/feature-gate-type_alias_impl_trait.rs:5:12 diff --git a/src/test/ui/generator/layout-error.full_tait.stderr b/src/test/ui/generator/layout-error.full_tait.stderr index 805a4d1d000..bf647d08983 100644 --- a/src/test/ui/generator/layout-error.full_tait.stderr +++ b/src/test/ui/generator/layout-error.full_tait.stderr @@ -1,26 +1,18 @@ error[E0425]: cannot find value `Foo` in this scope - --> $DIR/layout-error.rs:25:17 + --> $DIR/layout-error.rs:24:17 | LL | let a = Foo; | ^^^ not found in this scope -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes +warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/layout-error.rs:8:32 | -LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))] - | ^^^^^^^^^^^^^^^^^^^^^^ +LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] + | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information - -warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/layout-error.rs:8:56 - | -LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))] - | ^^^^^^^^^^^^^^^^^^^^^ - | = note: see issue #63063 for more information -error: aborting due to previous error; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted For more information about this error, try `rustc --explain E0425`. diff --git a/src/test/ui/generator/layout-error.min_tait.stderr b/src/test/ui/generator/layout-error.min_tait.stderr index be469d781b5..ed31c260cbc 100644 --- a/src/test/ui/generator/layout-error.min_tait.stderr +++ b/src/test/ui/generator/layout-error.min_tait.stderr @@ -1,11 +1,11 @@ error[E0425]: cannot find value `Foo` in this scope - --> $DIR/layout-error.rs:25:17 + --> $DIR/layout-error.rs:24:17 | LL | let a = Foo; | ^^^ not found in this scope error[E0658]: type alias impl trait is not permitted here - --> $DIR/layout-error.rs:31:27 + --> $DIR/layout-error.rs:30:27 | LL | Task::spawn(&POOL, || cb()); | ^ @@ -13,28 +13,7 @@ LL | Task::spawn(&POOL, || cb()); = note: see issue #63063 for more information = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable -error[E0658]: type alias impl trait is not permitted here - --> $DIR/layout-error.rs:30:28 - | -LL | static POOL: Task = Task::new(); - | ^^^^^^^^^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable - -error: concrete type differs from previous defining opaque type use - --> $DIR/layout-error.rs:31:24 - | -LL | Task::spawn(&POOL, || cb()); - | ^^^^^^^ expected `[type error]`, got `impl Future` - | -note: previous use here - --> $DIR/layout-error.rs:30:5 - | -LL | static POOL: Task = Task::new(); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 4 previous errors +error: aborting due to 2 previous errors Some errors have detailed explanations: E0425, E0658. For more information about an error, try `rustc --explain E0425`. diff --git a/src/test/ui/generator/layout-error.rs b/src/test/ui/generator/layout-error.rs index 9f15a6b2eca..a5efc3899dd 100644 --- a/src/test/ui/generator/layout-error.rs +++ b/src/test/ui/generator/layout-error.rs @@ -5,9 +5,8 @@ // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] -#![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))] +#![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -//[full_tait]~| WARN incomplete use std::future::Future; pub struct Task(F); @@ -27,7 +26,6 @@ async fn cb() { type F = impl Future; // Check that statics are inhabited computes they layout. - static POOL: Task = Task::new(); //[min_tait]~ ERROR not permitted here + static POOL: Task = Task::new(); Task::spawn(&POOL, || cb()); //[min_tait]~ ERROR type alias impl trait is not permitted here - //[min_tait]~^ ERROR concrete type differs from previous } diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.full_tait.stderr b/src/test/ui/generator/metadata-sufficient-for-layout.full_tait.stderr index ce874c1518c..1e609e83882 100644 --- a/src/test/ui/generator/metadata-sufficient-for-layout.full_tait.stderr +++ b/src/test/ui/generator/metadata-sufficient-for-layout.full_tait.stderr @@ -1,25 +1,17 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/metadata-sufficient-for-layout.rs:10:32 | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/metadata-sufficient-for-layout.rs:10:55 - | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - error: fatal error triggered by #[rustc_error] - --> $DIR/metadata-sufficient-for-layout.rs:29:1 + --> $DIR/metadata-sufficient-for-layout.rs:28:1 | LL | fn main() {} | ^^^^^^^^^ -error: aborting due to previous error; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.min_tait.stderr b/src/test/ui/generator/metadata-sufficient-for-layout.min_tait.stderr index e2b0d3622a6..52d42fd59a0 100644 --- a/src/test/ui/generator/metadata-sufficient-for-layout.min_tait.stderr +++ b/src/test/ui/generator/metadata-sufficient-for-layout.min_tait.stderr @@ -1,24 +1,8 @@ -error[E0658]: type alias impl trait is not permitted here - --> $DIR/metadata-sufficient-for-layout.rs:22:23 +error: fatal error triggered by #[rustc_error] + --> $DIR/metadata-sufficient-for-layout.rs:28:1 | -LL | static A: Option = None; - | ^^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable +LL | fn main() {} + | ^^^^^^^^^ -error: concrete type differs from previous defining opaque type use - --> $DIR/metadata-sufficient-for-layout.rs:25:1 - | -LL | fn f() -> F { metadata_sufficient_for_layout::g() } - | ^^^^^^^^^^^ expected `[type error]`, got `impl Generator` - | -note: previous use here - --> $DIR/metadata-sufficient-for-layout.rs:22:1 - | -LL | static A: Option = None; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: aborting due to previous error -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/generator/metadata-sufficient-for-layout.rs b/src/test/ui/generator/metadata-sufficient-for-layout.rs index f206093d971..c01354569f0 100644 --- a/src/test/ui/generator/metadata-sufficient-for-layout.rs +++ b/src/test/ui/generator/metadata-sufficient-for-layout.rs @@ -7,9 +7,8 @@ // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait, rustc_attrs)] -#![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +#![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -//[full_tait]~| WARN incomplete #![feature(generator_trait)] extern crate metadata_sufficient_for_layout; @@ -20,10 +19,10 @@ // Static queries the layout of the generator. static A: Option = None; -//[min_tait]~^ ERROR not permitted here -fn f() -> F { metadata_sufficient_for_layout::g() } -//[min_tait]~^ ERROR concrete type differs +fn f() -> F { + metadata_sufficient_for_layout::g() +} #[rustc_error] -fn main() {} //[full_tait]~ ERROR +fn main() {} //~ ERROR diff --git a/src/test/ui/impl-trait/bound-normalization-fail.rs b/src/test/ui/impl-trait/bound-normalization-fail.rs index d3056fb8851..8ec06e534d1 100644 --- a/src/test/ui/impl-trait/bound-normalization-fail.rs +++ b/src/test/ui/impl-trait/bound-normalization-fail.rs @@ -1,15 +1,14 @@ // edition:2018 -#![feature(impl_trait_in_bindings)] -//~^ WARNING the feature `impl_trait_in_bindings` is incomplete - // See issue 60414 // Reduction to `impl Trait` struct Foo(T); -trait FooLike { type Output; } +trait FooLike { + type Output; +} impl FooLike for Foo { type Output = T; @@ -23,7 +22,7 @@ trait Trait { } /// `T::Assoc` can't be normalized any further here. - fn foo_fail() -> impl FooLike { + fn foo_fail() -> impl FooLike { //~^ ERROR: type mismatch Foo(()) } @@ -39,9 +38,9 @@ trait Trait<'a> { } /// Missing bound constraining `Assoc`, `T::Assoc` can't be normalized further. - fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { - //~^ ERROR: type mismatch - //~^^ ERROR `impl Trait` return type cannot contain a projection or `Self` that references lifetimes from a parent scope + fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { + //~^ ERROR: type mismatch + //~^^ ERROR `impl Trait` return type cannot contain a projection or `Self` that references lifetimes from a parent scope Foo(()) } } diff --git a/src/test/ui/impl-trait/bound-normalization-fail.stderr b/src/test/ui/impl-trait/bound-normalization-fail.stderr index ba3a2e7f8d4..611543a1926 100644 --- a/src/test/ui/impl-trait/bound-normalization-fail.stderr +++ b/src/test/ui/impl-trait/bound-normalization-fail.stderr @@ -1,45 +1,36 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/bound-normalization-fail.rs:3:12 - | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information - error[E0271]: type mismatch resolving ` as FooLike>::Output == ::Assoc` - --> $DIR/bound-normalization-fail.rs:26:32 + --> $DIR/bound-normalization-fail.rs:25:32 | -LL | fn foo_fail() -> impl FooLike { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected associated type, found `()` +LL | fn foo_fail() -> impl FooLike { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected associated type, found `()` | = note: expected associated type `::Assoc` found type `()` help: consider constraining the associated type `::Assoc` to `()` | -LL | fn foo_fail>() -> impl FooLike { +LL | fn foo_fail>() -> impl FooLike { | ^^^^^^^^^^^^ error[E0760]: `impl Trait` return type cannot contain a projection or `Self` that references lifetimes from a parent scope - --> $DIR/bound-normalization-fail.rs:42:41 + --> $DIR/bound-normalization-fail.rs:41:41 | -LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error[E0271]: type mismatch resolving ` as FooLike>::Output == >::Assoc` - --> $DIR/bound-normalization-fail.rs:42:41 + --> $DIR/bound-normalization-fail.rs:41:41 | -LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected associated type, found `()` +LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected associated type, found `()` | = note: expected associated type `>::Assoc` found type `()` help: consider constraining the associated type `>::Assoc` to `()` | -LL | fn foo2_fail<'a, T: Trait<'a, Assoc = ()>>() -> impl FooLike { +LL | fn foo2_fail<'a, T: Trait<'a, Assoc = ()>>() -> impl FooLike { | ^^^^^^^^^^^^ -error: aborting due to 3 previous errors; 1 warning emitted +error: aborting due to 3 previous errors Some errors have detailed explanations: E0271, E0760. For more information about an error, try `rustc --explain E0271`. diff --git a/src/test/ui/impl-trait/bound-normalization-pass.default.stderr b/src/test/ui/impl-trait/bound-normalization-pass.default.stderr deleted file mode 100644 index ef3cb740112..00000000000 --- a/src/test/ui/impl-trait/bound-normalization-pass.default.stderr +++ /dev/null @@ -1,11 +0,0 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/bound-normalization-pass.rs:8:12 - | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information - -warning: 1 warning emitted - diff --git a/src/test/ui/impl-trait/bound-normalization-pass.rs b/src/test/ui/impl-trait/bound-normalization-pass.rs index 5144f05681b..4218bc52065 100644 --- a/src/test/ui/impl-trait/bound-normalization-pass.rs +++ b/src/test/ui/impl-trait/bound-normalization-pass.rs @@ -5,8 +5,6 @@ //-^ To make this the regression test for #75962. #![feature(min_type_alias_impl_trait)] -#![feature(impl_trait_in_bindings)] -//~^ WARNING the feature `impl_trait_in_bindings` is incomplete // See issue 60414 diff --git a/src/test/ui/impl-trait/bound-normalization-pass.sa.stderr b/src/test/ui/impl-trait/bound-normalization-pass.sa.stderr deleted file mode 100644 index ef3cb740112..00000000000 --- a/src/test/ui/impl-trait/bound-normalization-pass.sa.stderr +++ /dev/null @@ -1,11 +0,0 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/bound-normalization-pass.rs:8:12 - | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information - -warning: 1 warning emitted - diff --git a/src/test/ui/impl-trait/issues/issue-70877.full_tait.stderr b/src/test/ui/impl-trait/issues/issue-70877.full_tait.stderr index 8e42b9d46db..1f4e3f78afa 100644 --- a/src/test/ui/impl-trait/issues/issue-70877.full_tait.stderr +++ b/src/test/ui/impl-trait/issues/issue-70877.full_tait.stderr @@ -1,5 +1,5 @@ error[E0271]: type mismatch resolving `::Item == Box<(dyn for<'r> Fn(&'r (dyn ToString + 'r)) -> Option + 'static)>` - --> $DIR/issue-70877.rs:11:12 + --> $DIR/issue-70877.rs:10:12 | LL | type FooRet = impl std::fmt::Debug; | -------------------- the found opaque type diff --git a/src/test/ui/impl-trait/issues/issue-70877.min_tait.stderr b/src/test/ui/impl-trait/issues/issue-70877.min_tait.stderr index 8e42b9d46db..1f4e3f78afa 100644 --- a/src/test/ui/impl-trait/issues/issue-70877.min_tait.stderr +++ b/src/test/ui/impl-trait/issues/issue-70877.min_tait.stderr @@ -1,5 +1,5 @@ error[E0271]: type mismatch resolving `::Item == Box<(dyn for<'r> Fn(&'r (dyn ToString + 'r)) -> Option + 'static)>` - --> $DIR/issue-70877.rs:11:12 + --> $DIR/issue-70877.rs:10:12 | LL | type FooRet = impl std::fmt::Debug; | -------------------- the found opaque type diff --git a/src/test/ui/impl-trait/issues/issue-70877.rs b/src/test/ui/impl-trait/issues/issue-70877.rs index 7ca0f90e2dc..29aa705ef9d 100644 --- a/src/test/ui/impl-trait/issues/issue-70877.rs +++ b/src/test/ui/impl-trait/issues/issue-70877.rs @@ -1,7 +1,6 @@ // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] #![cfg_attr(full_tait, feature(type_alias_impl_trait))] -#![feature(impl_trait_in_bindings)] #![allow(incomplete_features)] type FooArg<'a> = &'a dyn ToString; diff --git a/src/test/ui/impl-trait/issues/issue-78722.full_tait.stderr b/src/test/ui/impl-trait/issues/issue-78722.full_tait.stderr index 7a4be1d5f6d..728644f7579 100644 --- a/src/test/ui/impl-trait/issues/issue-78722.full_tait.stderr +++ b/src/test/ui/impl-trait/issues/issue-78722.full_tait.stderr @@ -7,33 +7,26 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-78722.rs:7:12 +error[E0308]: mismatched types + --> $DIR/issue-78722.rs:15:20 | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - -error[E0658]: `async` blocks are not allowed in constants - --> $DIR/issue-78722.rs:17:20 - | -LL | let f: F = async { 1 }; - | ^^^^^^^^^^^ - | - = note: see issue #85368 for more information - = help: add `#![feature(const_async_blocks)]` to the crate attributes to enable - -error[E0493]: destructors cannot be evaluated at compile-time - --> $DIR/issue-78722.rs:17:13 - | -LL | let f: F = async { 1 }; - | ^ constants cannot evaluate destructors +LL | type F = impl core::future::Future; + | -------------------------------------- the expected opaque type ... -LL | }], - | - value is dropped here +LL | let f: F = async { 1 }; + | - ^^^^^^^^^^^ expected opaque type, found a different opaque type + | | + | expected due to this + | + ::: $SRC_DIR/core/src/future/mod.rs:LL:COL + | +LL | pub const fn from_generator(gen: T) -> impl Future + | ------------------------------- the found opaque type + | + = note: expected opaque type `impl Future` (opaque type at <$DIR/issue-78722.rs:8:10>) + found opaque type `impl Future` (opaque type at <$SRC_DIR/core/src/future/mod.rs:LL:COL>) + = note: distinct uses of `impl Trait` result in different opaque types -error: aborting due to 2 previous errors; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted -Some errors have detailed explanations: E0493, E0658. -For more information about an error, try `rustc --explain E0493`. +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/impl-trait/issues/issue-78722.min_tait.stderr b/src/test/ui/impl-trait/issues/issue-78722.min_tait.stderr index 131033063d2..221b23ae3d2 100644 --- a/src/test/ui/impl-trait/issues/issue-78722.min_tait.stderr +++ b/src/test/ui/impl-trait/issues/issue-78722.min_tait.stderr @@ -1,31 +1,23 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-78722.rs:7:12 +error[E0308]: mismatched types + --> $DIR/issue-78722.rs:15:20 | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information - -error[E0658]: `async` blocks are not allowed in constants - --> $DIR/issue-78722.rs:17:20 - | -LL | let f: F = async { 1 }; - | ^^^^^^^^^^^ - | - = note: see issue #85368 for more information - = help: add `#![feature(const_async_blocks)]` to the crate attributes to enable - -error[E0493]: destructors cannot be evaluated at compile-time - --> $DIR/issue-78722.rs:17:13 - | -LL | let f: F = async { 1 }; - | ^ constants cannot evaluate destructors +LL | type F = impl core::future::Future; + | -------------------------------------- the expected opaque type ... -LL | }], - | - value is dropped here +LL | let f: F = async { 1 }; + | - ^^^^^^^^^^^ expected opaque type, found a different opaque type + | | + | expected due to this + | + ::: $SRC_DIR/core/src/future/mod.rs:LL:COL + | +LL | pub const fn from_generator(gen: T) -> impl Future + | ------------------------------- the found opaque type + | + = note: expected opaque type `impl Future` (opaque type at <$DIR/issue-78722.rs:8:10>) + found opaque type `impl Future` (opaque type at <$SRC_DIR/core/src/future/mod.rs:LL:COL>) + = note: distinct uses of `impl Trait` result in different opaque types -error: aborting due to 2 previous errors; 1 warning emitted +error: aborting due to previous error -Some errors have detailed explanations: E0493, E0658. -For more information about an error, try `rustc --explain E0493`. +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/impl-trait/issues/issue-78722.rs b/src/test/ui/impl-trait/issues/issue-78722.rs index 0999ec63e03..480b55eed21 100644 --- a/src/test/ui/impl-trait/issues/issue-78722.rs +++ b/src/test/ui/impl-trait/issues/issue-78722.rs @@ -4,8 +4,6 @@ #![feature(min_type_alias_impl_trait)] #![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -#![feature(impl_trait_in_bindings)] -//~^ WARN the feature `impl_trait_in_bindings` is incomplete type F = impl core::future::Future; @@ -15,8 +13,7 @@ fn concrete_use() -> F { async {} } let f: F = async { 1 }; - //~^ ERROR `async` blocks are not allowed in constants - //~| ERROR destructors cannot be evaluated at compile-time + //~^ ERROR mismatched types [E0308] 1 }], } diff --git a/src/test/ui/impl-trait/where-allowed.stderr b/src/test/ui/impl-trait/where-allowed.stderr index 09ec4d5b202..32389048148 100644 --- a/src/test/ui/impl-trait/where-allowed.stderr +++ b/src/test/ui/impl-trait/where-allowed.stderr @@ -282,8 +282,6 @@ error[E0562]: `impl Trait` not allowed outside of function and inherent method r | LL | let _in_local_variable: impl Fn() = || {}; | ^^^^^^^^^ - | - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable error[E0562]: `impl Trait` not allowed outside of function and inherent method return types --> $DIR/where-allowed.rs:248:46 diff --git a/src/test/ui/mir/issue-75053.full_tait.stderr b/src/test/ui/mir/issue-75053.full_tait.stderr index aff19094b7a..543d15fadc6 100644 --- a/src/test/ui/mir/issue-75053.full_tait.stderr +++ b/src/test/ui/mir/issue-75053.full_tait.stderr @@ -7,15 +7,11 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -error[E0658]: type alias impl trait is not permitted here - --> $DIR/issue-75053.rs:52:15 +error: fatal error triggered by #[rustc_error] + --> $DIR/issue-75053.rs:49:1 | -LL | let _pos: Phantom1> = Scope::new().my_index(); - | ^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable +LL | fn main() { + | ^^^^^^^^^ error: aborting due to previous error; 1 warning emitted -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/mir/issue-75053.in_bindings.stderr b/src/test/ui/mir/issue-75053.in_bindings.stderr index a43fabc8f5d..d75996bf0b3 100644 --- a/src/test/ui/mir/issue-75053.in_bindings.stderr +++ b/src/test/ui/mir/issue-75053.in_bindings.stderr @@ -1,24 +1,11 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes +error[E0557]: feature has been removed --> $DIR/issue-75053.rs:7:34 | LL | #![cfg_attr(in_bindings, feature(impl_trait_in_bindings))] - | ^^^^^^^^^^^^^^^^^^^^^^ + | ^^^^^^^^^^^^^^^^^^^^^^ feature has been removed | - = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information + = note: removed due to being incomplete and unstable -error[E0282]: type annotations needed - --> $DIR/issue-75053.rs:52:38 - | -LL | type O; - | ------- `>::O` defined here -... -LL | let _pos: Phantom1> = Scope::new().my_index(); - | ^^^^^^^^^^------------- - | | - | this method call resolves to `>::O` - | cannot infer type for type parameter `T` +error: aborting due to previous error -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0282`. +For more information about this error, try `rustc --explain E0557`. diff --git a/src/test/ui/mir/issue-75053.min_tait.stderr b/src/test/ui/mir/issue-75053.min_tait.stderr index 7ce91e851a7..c533275c99a 100644 --- a/src/test/ui/mir/issue-75053.min_tait.stderr +++ b/src/test/ui/mir/issue-75053.min_tait.stderr @@ -1,12 +1,8 @@ -error[E0658]: type alias impl trait is not permitted here - --> $DIR/issue-75053.rs:52:15 +error: fatal error triggered by #[rustc_error] + --> $DIR/issue-75053.rs:49:1 | -LL | let _pos: Phantom1> = Scope::new().my_index(); - | ^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable +LL | fn main() { + | ^^^^^^^^^ error: aborting due to previous error -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/mir/issue-75053.rs b/src/test/ui/mir/issue-75053.rs index 89ae3ca3006..b71f84dd9c2 100644 --- a/src/test/ui/mir/issue-75053.rs +++ b/src/test/ui/mir/issue-75053.rs @@ -1,11 +1,9 @@ // compile-flags: -Z mir-opt-level=3 -// revisions: min_tait full_tait in_bindings +// revisions: min_tait full_tait #![feature(min_type_alias_impl_trait, rustc_attrs)] #![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -#![cfg_attr(in_bindings, feature(impl_trait_in_bindings))] -//[in_bindings]~^ WARN incomplete use std::marker::PhantomData; @@ -49,7 +47,6 @@ fn my_index(self) -> Self::O { #[rustc_error] fn main() { + //~^ ERROR let _pos: Phantom1> = Scope::new().my_index(); - //[min_tait,full_tait]~^ ERROR not permitted here - //[in_bindings]~^^ ERROR type annotations needed } diff --git a/src/test/ui/type-alias-impl-trait/issue-53096.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53096.full_tait.stderr index 1a03ce79661..a8dd6a93d3d 100644 --- a/src/test/ui/type-alias-impl-trait/issue-53096.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-53096.full_tait.stderr @@ -1,18 +1,10 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes +warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/issue-53096.rs:4:32 | -LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))] - | ^^^^^^^^^^^^^^^^^^^^^^ +LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] + | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information - -warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-53096.rs:4:56 - | -LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))] - | ^^^^^^^^^^^^^^^^^^^^^ - | = note: see issue #63063 for more information error: fatal error triggered by #[rustc_error] @@ -21,5 +13,5 @@ error: fatal error triggered by #[rustc_error] LL | fn main() {} | ^^^^^^^^^ -error: aborting due to previous error; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted diff --git a/src/test/ui/type-alias-impl-trait/issue-53096.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53096.min_tait.stderr index c6c7a51618d..4210d0c1cb1 100644 --- a/src/test/ui/type-alias-impl-trait/issue-53096.min_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-53096.min_tait.stderr @@ -1,12 +1,8 @@ -error[E0658]: type alias impl trait is not permitted here - --> $DIR/issue-53096.rs:10:19 +error: fatal error triggered by #[rustc_error] + --> $DIR/issue-53096.rs:14:1 | -LL | const BAZR: Foo = bar(); - | ^^^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable +LL | fn main() {} + | ^^^^^^^^^ error: aborting due to previous error -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/type-alias-impl-trait/issue-53096.rs b/src/test/ui/type-alias-impl-trait/issue-53096.rs index fb621dc0bce..7bb0066b7ef 100644 --- a/src/test/ui/type-alias-impl-trait/issue-53096.rs +++ b/src/test/ui/type-alias-impl-trait/issue-53096.rs @@ -1,14 +1,14 @@ #![feature(const_impl_trait, const_fn_fn_ptr_basics, rustc_attrs)] // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] -#![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))] +#![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -//[full_tait]~| WARN incomplete type Foo = impl Fn() -> usize; -const fn bar() -> Foo { || 0usize } +const fn bar() -> Foo { + || 0usize +} const BAZR: Foo = bar(); -//[min_tait]~^ ERROR not permitted here #[rustc_error] -fn main() {} //[full_tait]~ ERROR +fn main() {} //~ ERROR diff --git a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.full_tait.stderr index 70d049ffa76..b23fed5dadf 100644 --- a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.full_tait.stderr @@ -1,25 +1,17 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes +warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/issue-53678-generator-and-const-fn.rs:4:32 | -LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))] - | ^^^^^^^^^^^^^^^^^^^^^^ +LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] + | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information - -warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-53678-generator-and-const-fn.rs:4:56 - | -LL | #![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))] - | ^^^^^^^^^^^^^^^^^^^^^ - | = note: see issue #63063 for more information error: fatal error triggered by #[rustc_error] - --> $DIR/issue-53678-generator-and-const-fn.rs:23:1 + --> $DIR/issue-53678-generator-and-const-fn.rs:22:1 | LL | fn main() {} | ^^^^^^^^^ -error: aborting due to previous error; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted diff --git a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.min_tait.stderr index a3dea45a6a5..fabba218353 100644 --- a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.min_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.min_tait.stderr @@ -1,12 +1,8 @@ -error[E0658]: type alias impl trait is not permitted here - --> $DIR/issue-53678-generator-and-const-fn.rs:20:36 +error: fatal error triggered by #[rustc_error] + --> $DIR/issue-53678-generator-and-const-fn.rs:22:1 | -LL | const FOO: GenOnce = const_generator(10, 100); - | ^^^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable +LL | fn main() {} + | ^^^^^^^^^ error: aborting due to previous error -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs index bf607d29ce4..a8215c41826 100644 --- a/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs +++ b/src/test/ui/type-alias-impl-trait/issue-53678-generator-and-const-fn.rs @@ -1,9 +1,8 @@ #![feature(const_impl_trait, generators, generator_trait, rustc_attrs)] // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] -#![cfg_attr(full_tait, feature(impl_trait_in_bindings, type_alias_impl_trait))] +#![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -//[full_tait]~| WARN incomplete use std::ops::Generator; @@ -17,7 +16,7 @@ const fn const_generator(yielding: Y, returning: R) -> GenOnce { } } -const FOO: GenOnce = const_generator(10, 100); //[min_tait]~ ERROR not permitted here +const FOO: GenOnce = const_generator(10, 100); #[rustc_error] -fn main() {} //[full_tait]~ ERROR +fn main() {} //~ ERROR diff --git a/src/test/ui/type-alias-impl-trait/issue-60371.stderr b/src/test/ui/type-alias-impl-trait/issue-60371.stderr index 6857d5264b6..4906ea9c2e2 100644 --- a/src/test/ui/type-alias-impl-trait/issue-60371.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-60371.stderr @@ -8,13 +8,13 @@ LL | type Item = impl Bug; = help: add `#![feature(min_type_alias_impl_trait)]` to the crate attributes to enable error[E0658]: type alias impl trait is not permitted here - --> $DIR/issue-60371.rs:14:37 + --> $DIR/issue-60371.rs:14:40 | LL | const FUN: fn() -> Self::Item = || (); - | ^^^^^ + | ^ | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable + = note: see issue #63063 for more information + = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable error[E0277]: the trait bound `(): Bug` is not satisfied --> $DIR/issue-60371.rs:10:17 diff --git a/src/test/ui/type-alias-impl-trait/issue-60407.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-60407.full_tait.stderr index 5edf73c8ced..9d3f366ad81 100644 --- a/src/test/ui/type-alias-impl-trait/issue-60407.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-60407.full_tait.stderr @@ -1,25 +1,17 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/issue-60407.rs:3:32 | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-60407.rs:3:55 - | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - error: fatal error triggered by #[rustc_error] - --> $DIR/issue-60407.rs:12:1 + --> $DIR/issue-60407.rs:11:1 | LL | fn main() { | ^^^^^^^^^ -error: aborting due to previous error; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted diff --git a/src/test/ui/type-alias-impl-trait/issue-60407.min_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-60407.min_tait.stderr index edb8141c1b1..1a3ceafa3e2 100644 --- a/src/test/ui/type-alias-impl-trait/issue-60407.min_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-60407.min_tait.stderr @@ -1,24 +1,8 @@ -error[E0658]: type alias impl trait is not permitted here - --> $DIR/issue-60407.rs:9:39 +error: fatal error triggered by #[rustc_error] + --> $DIR/issue-60407.rs:11:1 | -LL | static mut TEST: Option = None; - | ^^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable +LL | fn main() { + | ^^^^^^^^^ -error: concrete type differs from previous defining opaque type use - --> $DIR/issue-60407.rs:16:1 - | -LL | fn foo() -> Debuggable { - | ^^^^^^^^^^^^^^^^^^^^^^ expected `[type error]`, got `u32` - | -note: previous use here - --> $DIR/issue-60407.rs:9:1 - | -LL | static mut TEST: Option = None; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +error: aborting due to previous error -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/type-alias-impl-trait/issue-60407.rs b/src/test/ui/type-alias-impl-trait/issue-60407.rs index afcbf313cc8..3c6b873b4ca 100644 --- a/src/test/ui/type-alias-impl-trait/issue-60407.rs +++ b/src/test/ui/type-alias-impl-trait/issue-60407.rs @@ -1,18 +1,18 @@ // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait, rustc_attrs)] -#![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +#![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -//[full_tait]~| WARN incomplete type Debuggable = impl core::fmt::Debug; -static mut TEST: Option = None; //[min_tait]~ ERROR not permitted here +static mut TEST: Option = None; #[rustc_error] -fn main() { //[full_tait]~ ERROR +fn main() { + //~^ ERROR unsafe { TEST = Some(foo()) } } -fn foo() -> Debuggable { //[min_tait]~ ERROR concrete type differs +fn foo() -> Debuggable { 0u32 } diff --git a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.full_tait.stderr b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.full_tait.stderr index cf668fc6e06..ee26789d204 100644 --- a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.full_tait.stderr @@ -1,25 +1,17 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:5:32 | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:5:55 - | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - error: fatal error triggered by #[rustc_error] - --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:19:1 + --> $DIR/issue-65679-inst-opaque-ty-from-val-twice.rs:18:1 | LL | fn main() { | ^^^^^^^^^ -error: aborting due to previous error; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted diff --git a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs index b7f05bd83ed..d37be640e0b 100644 --- a/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs +++ b/src/test/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs @@ -2,9 +2,8 @@ // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait, rustc_attrs)] -#![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +#![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -//[full_tait]~| WARN incomplete type T = impl Sized; // The concrete type referred by impl-trait-type-alias(`T`) is guaranteed @@ -16,7 +15,8 @@ fn take(_: fn() -> T) {} #[rustc_error] -fn main() { //[full_tait]~ ERROR fatal error triggered by #[rustc_error] +fn main() { + //[full_tait]~^ ERROR fatal error triggered by #[rustc_error] take(|| {}); //[min_tait]~^ ERROR not permitted here take(|| {}); diff --git a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.full_tait.stderr b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.full_tait.stderr index 40949c84d23..faddecb2176 100644 --- a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.full_tait.stderr @@ -1,25 +1,17 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/no_inferrable_concrete_type.rs:6:32 | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/no_inferrable_concrete_type.rs:6:55 - | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - error: could not find defining uses - --> $DIR/no_inferrable_concrete_type.rs:10:12 + --> $DIR/no_inferrable_concrete_type.rs:9:12 | LL | type Foo = impl Copy; | ^^^^^^^^^ -error: aborting due to previous error; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted diff --git a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.min_tait.stderr b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.min_tait.stderr index d69e4cccdf0..3194bd76107 100644 --- a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.min_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.min_tait.stderr @@ -1,18 +1,8 @@ -error[E0658]: type alias impl trait is not permitted here - --> $DIR/no_inferrable_concrete_type.rs:16:12 - | -LL | let _: Foo = std::mem::transmute(0u8); - | ^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable - error: could not find defining uses - --> $DIR/no_inferrable_concrete_type.rs:10:12 + --> $DIR/no_inferrable_concrete_type.rs:9:12 | LL | type Foo = impl Copy; | ^^^^^^^^^ -error: aborting due to 2 previous errors +error: aborting due to previous error -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs index 8ff588ef278..409eec7250f 100644 --- a/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs +++ b/src/test/ui/type-alias-impl-trait/no_inferrable_concrete_type.rs @@ -3,15 +3,16 @@ // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] -#![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +#![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -//[full_tait]~| WARN incomplete type Foo = impl Copy; //~ could not find defining uses // make compiler happy about using 'Foo' -fn bar(x: Foo) -> Foo { x } +fn bar(x: Foo) -> Foo { + x +} fn main() { - let _: Foo = std::mem::transmute(0u8); //[min_tait]~ ERROR not permitted here + let _: Foo = std::mem::transmute(0u8); } diff --git a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.full_tait.stderr b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.full_tait.stderr index b560c0c918a..d5a4fa52dfb 100644 --- a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.full_tait.stderr @@ -1,25 +1,17 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/structural-match-no-leak.rs:4:32 | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/structural-match-no-leak.rs:4:55 - | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - error: `impl Send` cannot be used in patterns - --> $DIR/structural-match-no-leak.rs:19:9 + --> $DIR/structural-match-no-leak.rs:18:9 | LL | LEAK_FREE => (), | ^^^^^^^^^ -error: aborting due to previous error; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted diff --git a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.min_tait.stderr b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.min_tait.stderr index e962b23a587..b7caf8ed298 100644 --- a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.min_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.min_tait.stderr @@ -1,12 +1,8 @@ -error[E0658]: type alias impl trait is not permitted here - --> $DIR/structural-match-no-leak.rs:15:24 +error: `impl Send` cannot be used in patterns + --> $DIR/structural-match-no-leak.rs:18:9 | -LL | const LEAK_FREE: Bar = leak_free(); - | ^^^^^^^^^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable +LL | LEAK_FREE => (), + | ^^^^^^^^^ error: aborting due to previous error -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs index d0bae30f996..e2b10e7355f 100644 --- a/src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs +++ b/src/test/ui/type-alias-impl-trait/structural-match-no-leak.rs @@ -1,9 +1,8 @@ #![feature(const_impl_trait)] // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] -#![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +#![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -//[full_tait]~| WARN incomplete type Bar = impl Send; @@ -12,12 +11,12 @@ const fn leak_free() -> Bar { 7i32 } -const LEAK_FREE: Bar = leak_free(); //[min_tait]~ ERROR not permitted here +const LEAK_FREE: Bar = leak_free(); fn leak_free_test() { match todo!() { LEAK_FREE => (), - //[full_tait]~^ `impl Send` cannot be used in patterns + //~^ `impl Send` cannot be used in patterns _ => (), } } diff --git a/src/test/ui/type-alias-impl-trait/structural-match.full_tait.stderr b/src/test/ui/type-alias-impl-trait/structural-match.full_tait.stderr index b94e06e6d0e..d394c99df80 100644 --- a/src/test/ui/type-alias-impl-trait/structural-match.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/structural-match.full_tait.stderr @@ -1,25 +1,17 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes --> $DIR/structural-match.rs:4:32 | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/structural-match.rs:4:55 - | -LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] - | ^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #63065 for more information - error: `impl Send` cannot be used in patterns - --> $DIR/structural-match.rs:20:9 + --> $DIR/structural-match.rs:19:9 | LL | VALUE => (), | ^^^^^ -error: aborting due to previous error; 2 warnings emitted +error: aborting due to previous error; 1 warning emitted diff --git a/src/test/ui/type-alias-impl-trait/structural-match.min_tait.stderr b/src/test/ui/type-alias-impl-trait/structural-match.min_tait.stderr index 36c49a954bd..f63b1fb23df 100644 --- a/src/test/ui/type-alias-impl-trait/structural-match.min_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/structural-match.min_tait.stderr @@ -1,12 +1,8 @@ -error[E0658]: type alias impl trait is not permitted here - --> $DIR/structural-match.rs:16:20 +error: `impl Send` cannot be used in patterns + --> $DIR/structural-match.rs:19:9 | -LL | const VALUE: Foo = value(); - | ^^^^^^^ - | - = note: see issue #63065 for more information - = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable +LL | VALUE => (), + | ^^^^^ error: aborting due to previous error -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/type-alias-impl-trait/structural-match.rs b/src/test/ui/type-alias-impl-trait/structural-match.rs index daf914cc494..aed9334b3cc 100644 --- a/src/test/ui/type-alias-impl-trait/structural-match.rs +++ b/src/test/ui/type-alias-impl-trait/structural-match.rs @@ -1,9 +1,8 @@ #![feature(const_impl_trait)] // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] -#![cfg_attr(full_tait, feature(type_alias_impl_trait, impl_trait_in_bindings))] +#![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -//[full_tait]~| WARN incomplete type Foo = impl Send; @@ -13,12 +12,12 @@ const fn value() -> Foo { A } -const VALUE: Foo = value(); //[min_tait]~ ERROR not permitted here +const VALUE: Foo = value(); fn test() { match todo!() { VALUE => (), - //[full_tait]~^ `impl Send` cannot be used in patterns + //~^ `impl Send` cannot be used in patterns _ => (), } } diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.full_tait.stderr b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.full_tait.stderr index 894d61502a7..6f817757cc4 100644 --- a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.full_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.full_tait.stderr @@ -1,5 +1,5 @@ warning: the feature `type_alias_impl_trait` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/type-alias-impl-trait-const.rs:5:32 + --> $DIR/type-alias-impl-trait-const.rs:3:32 | LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] | ^^^^^^^^^^^^^^^^^^^^^ @@ -7,13 +7,24 @@ LL | #![cfg_attr(full_tait, feature(type_alias_impl_trait))] = note: `#[warn(incomplete_features)]` on by default = note: see issue #63063 for more information -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/type-alias-impl-trait-const.rs:11:12 +error[E0308]: mismatched types + --> $DIR/type-alias-impl-trait-const.rs:13:19 | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ +LL | pub type Foo = impl Debug; + | ---------- the expected opaque type +... +LL | const _FOO: Foo = 5; + | ^ expected opaque type, found integer | - = note: see issue #63065 for more information + = note: expected opaque type `impl Debug` + found type `{integer}` -warning: 2 warnings emitted +error: could not find defining uses + --> $DIR/type-alias-impl-trait-const.rs:10:16 + | +LL | pub type Foo = impl Debug; + | ^^^^^^^^^^ +error: aborting due to 2 previous errors; 1 warning emitted + +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.min_tait.stderr b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.min_tait.stderr index 66e4c242168..ce98318333b 100644 --- a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.min_tait.stderr +++ b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.min_tait.stderr @@ -1,11 +1,21 @@ -warning: the feature `impl_trait_in_bindings` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/type-alias-impl-trait-const.rs:11:12 +error[E0308]: mismatched types + --> $DIR/type-alias-impl-trait-const.rs:13:19 | -LL | #![feature(impl_trait_in_bindings)] - | ^^^^^^^^^^^^^^^^^^^^^^ +LL | pub type Foo = impl Debug; + | ---------- the expected opaque type +... +LL | const _FOO: Foo = 5; + | ^ expected opaque type, found integer | - = note: `#[warn(incomplete_features)]` on by default - = note: see issue #63065 for more information + = note: expected opaque type `impl Debug` + found type `{integer}` -warning: 1 warning emitted +error: could not find defining uses + --> $DIR/type-alias-impl-trait-const.rs:10:16 + | +LL | pub type Foo = impl Debug; + | ^^^^^^^^^^ +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.rs b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.rs index 0b0551cd96d..751512c5dfc 100644 --- a/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.rs +++ b/src/test/ui/type-alias-impl-trait/type-alias-impl-trait-const.rs @@ -1,23 +1,16 @@ -// check-pass - // revisions: min_tait full_tait #![feature(min_type_alias_impl_trait)] #![cfg_attr(full_tait, feature(type_alias_impl_trait))] //[full_tait]~^ WARN incomplete -// Currently, the `type_alias_impl_trait` feature implicitly -// depends on `impl_trait_in_bindings` in order to work properly. -// Specifically, this line requires `impl_trait_in_bindings` to be enabled: -// https://github.com/rust-lang/rust/blob/481068a707679257e2a738b40987246e0420e787/compiler/rustc_typeck/check/mod.rs#L856 -#![feature(impl_trait_in_bindings)] -//~^ WARN the feature `impl_trait_in_bindings` is incomplete // Ensures that `const` items can constrain an opaque `impl Trait`. use std::fmt::Debug; pub type Foo = impl Debug; +//~^ ERROR could not find defining uses const _FOO: Foo = 5; +//~^ ERROR mismatched types [E0308] -fn main() { -} +fn main() {}