From 218caa410aa38c29984be31a5229b9fa717560ee Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:19:13 +0200 Subject: Merging upstream version 1.68.2+dfsg1. Signed-off-by: Daniel Baumann --- src/test/ui/specialization/README-rpass.md | 37 -------- src/test/ui/specialization/README.md | 21 ----- src/test/ui/specialization/assoc-ty-graph-cycle.rs | 25 ------ .../ui/specialization/assoc-ty-graph-cycle.stderr | 12 --- .../auxiliary/cross_crates_defaults.rs | 40 --------- src/test/ui/specialization/auxiliary/go_trait.rs | 43 ---------- .../auxiliary/specialization_cross_crate.rs | 72 ---------------- src/test/ui/specialization/const_trait_impl.rs | 55 ------------ src/test/ui/specialization/cross-crate-defaults.rs | 41 --------- .../ui/specialization/cross-crate-defaults.stderr | 12 --- .../default-associated-type-bound-1.rs | 24 ------ .../default-associated-type-bound-1.stderr | 26 ------ .../default-associated-type-bound-2.rs | 22 ----- .../default-associated-type-bound-2.stderr | 30 ------- .../default-generic-associated-type-bound.rs | 25 ------ .../default-generic-associated-type-bound.stderr | 30 ------- .../defaultimpl/allowed-cross-crate.rs | 26 ------ .../defaultimpl/allowed-cross-crate.stderr | 12 --- .../defaultimpl/auxiliary/go_trait.rs | 43 ---------- .../ui/specialization/defaultimpl/out-of-order.rs | 19 ----- .../specialization/defaultimpl/out-of-order.stderr | 12 --- .../defaultimpl/overlap-projection.rs | 25 ------ .../defaultimpl/overlap-projection.stderr | 12 --- .../ui/specialization/defaultimpl/projection.rs | 42 ---------- .../specialization/defaultimpl/projection.stderr | 12 --- .../specialization-feature-gate-default.rs | 11 --- .../specialization-feature-gate-default.stderr | 14 ---- .../defaultimpl/specialization-no-default.rs | 77 ----------------- .../defaultimpl/specialization-no-default.stderr | 68 --------------- ...cialization-trait-item-not-implemented-rpass.rs | 34 -------- ...ization-trait-item-not-implemented-rpass.stderr | 12 --- .../specialization-trait-item-not-implemented.rs | 23 ----- ...pecialization-trait-item-not-implemented.stderr | 22 ----- .../specialization-trait-not-implemented.rs | 24 ------ .../specialization-trait-not-implemented.stderr | 44 ---------- .../defaultimpl/specialization-wfcheck.rs | 10 --- .../defaultimpl/specialization-wfcheck.stderr | 29 ------- .../ui/specialization/defaultimpl/validation.rs | 16 ---- .../specialization/defaultimpl/validation.stderr | 51 ----------- src/test/ui/specialization/issue-33017.rs | 45 ---------- src/test/ui/specialization/issue-33017.stderr | 19 ----- src/test/ui/specialization/issue-35376.rs | 43 ---------- src/test/ui/specialization/issue-35376.stderr | 12 --- src/test/ui/specialization/issue-36804.rs | 35 -------- src/test/ui/specialization/issue-36804.stderr | 12 --- src/test/ui/specialization/issue-38091-2.rs | 28 ------- src/test/ui/specialization/issue-38091-2.stderr | 21 ----- src/test/ui/specialization/issue-38091.rs | 24 ------ src/test/ui/specialization/issue-38091.stderr | 25 ------ src/test/ui/specialization/issue-39448.rs | 50 ----------- src/test/ui/specialization/issue-39448.stderr | 30 ------- src/test/ui/specialization/issue-39618.rs | 27 ------ src/test/ui/specialization/issue-39618.stderr | 12 --- .../ui/specialization/issue-43037.current.stderr | 12 --- .../ui/specialization/issue-43037.negative.stderr | 12 --- src/test/ui/specialization/issue-43037.rs | 22 ----- src/test/ui/specialization/issue-44861.rs | 40 --------- src/test/ui/specialization/issue-44861.stderr | 15 ---- .../ui/specialization/issue-45814.current.stderr | 14 ---- .../ui/specialization/issue-45814.negative.stderr | 14 ---- src/test/ui/specialization/issue-45814.rs | 13 --- src/test/ui/specialization/issue-50452-fail.rs | 21 ----- src/test/ui/specialization/issue-50452-fail.stderr | 24 ------ src/test/ui/specialization/issue-50452.rs | 19 ----- src/test/ui/specialization/issue-50452.stderr | 12 --- src/test/ui/specialization/issue-51892.rs | 18 ---- src/test/ui/specialization/issue-51892.stderr | 10 --- src/test/ui/specialization/issue-52050.rs | 32 ------- src/test/ui/specialization/issue-52050.stderr | 24 ------ src/test/ui/specialization/issue-59435.rs | 17 ---- src/test/ui/specialization/issue-59435.stderr | 19 ----- .../ui/specialization/issue-63716-parse-async.rs | 14 ---- .../specialization/issue-63716-parse-async.stderr | 12 --- .../issue-68830-spurious-diagnostics.rs | 23 ----- .../issue-68830-spurious-diagnostics.stderr | 9 -- src/test/ui/specialization/issue-70442.rs | 23 ----- src/test/ui/specialization/issue-70442.stderr | 12 --- .../auxiliary/specialization-trait.rs | 6 -- .../min_specialization/dyn-trait-assoc-types.rs | 32 ------- .../dyn-trait-assoc-types.stderr | 14 ---- .../min_specialization/impl-on-nonexisting.rs | 7 -- .../min_specialization/impl-on-nonexisting.stderr | 9 -- .../impl_specialization_trait.rs | 16 ---- .../impl_specialization_trait.stderr | 10 --- .../implcit-well-formed-bounds.rs | 30 ------- .../min_specialization/issue-79224.rs | 24 ------ .../min_specialization/issue-79224.stderr | 33 -------- .../min_specialization/repeated_projection_type.rs | 24 ------ .../repeated_projection_type.stderr | 8 -- .../min_specialization/repeating_lifetimes.rs | 19 ----- .../min_specialization/repeating_lifetimes.stderr | 8 -- .../min_specialization/repeating_param.rs | 17 ---- .../min_specialization/repeating_param.stderr | 8 -- .../specialization/min_specialization/spec-iter.rs | 20 ----- .../min_specialization/spec-marker-supertraits.rs | 29 ------- .../spec-marker-supertraits.stderr | 8 -- .../min_specialization/spec-reference.rs | 19 ----- .../min_specialization/specialization_marker.rs | 17 ---- .../specialization_marker.stderr | 15 ---- .../specialization_super_trait.rs | 18 ---- .../specialization_super_trait.stderr | 8 -- .../min_specialization/specialization_trait.rs | 26 ------ .../min_specialization/specialization_trait.stderr | 20 ----- .../min_specialization/specialize_on_marker.rs | 24 ------ .../min_specialization/specialize_on_spec_trait.rs | 27 ------ .../min_specialization/specialize_on_static.rs | 18 ---- .../min_specialization/specialize_on_static.stderr | 8 -- .../min_specialization/specialize_on_trait.rs | 20 ----- .../min_specialization/specialize_on_trait.stderr | 8 -- .../ui/specialization/non-defaulted-item-fail.rs | 54 ------------ .../specialization/non-defaulted-item-fail.stderr | 79 ----------------- .../soundness/partial_eq_range_inclusive.rs | 35 -------- .../specialization/soundness/partial_ord_slice.rs | 42 ---------- .../specialization-allowed-cross-crate.rs | 26 ------ .../specialization-allowed-cross-crate.stderr | 12 --- .../ui/specialization/specialization-assoc-fns.rs | 29 ------- .../specialization/specialization-assoc-fns.stderr | 12 --- .../ui/specialization/specialization-basics.rs | 98 ---------------------- .../ui/specialization/specialization-basics.stderr | 12 --- .../specialization-cross-crate-no-gate.rs | 21 ----- .../specialization/specialization-cross-crate.rs | 50 ----------- .../specialization-cross-crate.stderr | 12 --- .../specialization-default-methods.rs | 87 ------------------- .../specialization-default-methods.stderr | 12 --- .../specialization-default-projection.rs | 36 -------- .../specialization-default-projection.stderr | 43 ---------- .../specialization/specialization-default-types.rs | 35 -------- .../specialization-default-types.stderr | 39 --------- .../specialization-feature-gate-default.rs | 13 --- .../specialization-feature-gate-default.stderr | 12 --- .../specialization-feature-gate-overlap.rs | 17 ---- .../specialization-feature-gate-overlap.stderr | 12 --- .../ui/specialization/specialization-no-default.rs | 77 ----------------- .../specialization-no-default.stderr | 68 --------------- .../specialization/specialization-on-projection.rs | 24 ------ .../specialization-on-projection.stderr | 12 --- .../specialization/specialization-out-of-order.rs | 19 ----- .../specialization-out-of-order.stderr | 12 --- .../specialization-overlap-hygiene.rs | 23 ----- .../specialization-overlap-hygiene.stderr | 12 --- .../specialization-overlap-negative.rs | 11 --- .../specialization-overlap-negative.stderr | 21 ----- .../specialization-overlap-projection.rs | 25 ------ .../specialization-overlap-projection.stderr | 12 --- .../ui/specialization/specialization-overlap.rs | 19 ----- .../specialization/specialization-overlap.stderr | 45 ---------- .../ui/specialization/specialization-polarity.rs | 17 ---- .../specialization/specialization-polarity.stderr | 29 ------- .../specialization-projection-alias.rs | 26 ------ .../specialization-projection-alias.stderr | 12 --- .../ui/specialization/specialization-projection.rs | 42 ---------- .../specialization-projection.stderr | 12 --- .../specialization/specialization-supertraits.rs | 17 ---- .../specialization-supertraits.stderr | 12 --- ...ization-translate-projections-with-lifetimes.rs | 33 -------- ...ion-translate-projections-with-lifetimes.stderr | 12 --- ...ialization-translate-projections-with-params.rs | 32 ------- ...zation-translate-projections-with-params.stderr | 12 --- .../specialization-translate-projections.rs | 33 -------- .../specialization-translate-projections.stderr | 12 --- .../ui/specialization/transmute-specialization.rs | 15 ---- .../specialization/transmute-specialization.stderr | 12 --- 162 files changed, 4013 deletions(-) delete mode 100644 src/test/ui/specialization/README-rpass.md delete mode 100644 src/test/ui/specialization/README.md delete mode 100644 src/test/ui/specialization/assoc-ty-graph-cycle.rs delete mode 100644 src/test/ui/specialization/assoc-ty-graph-cycle.stderr delete mode 100644 src/test/ui/specialization/auxiliary/cross_crates_defaults.rs delete mode 100644 src/test/ui/specialization/auxiliary/go_trait.rs delete mode 100644 src/test/ui/specialization/auxiliary/specialization_cross_crate.rs delete mode 100644 src/test/ui/specialization/const_trait_impl.rs delete mode 100644 src/test/ui/specialization/cross-crate-defaults.rs delete mode 100644 src/test/ui/specialization/cross-crate-defaults.stderr delete mode 100644 src/test/ui/specialization/default-associated-type-bound-1.rs delete mode 100644 src/test/ui/specialization/default-associated-type-bound-1.stderr delete mode 100644 src/test/ui/specialization/default-associated-type-bound-2.rs delete mode 100644 src/test/ui/specialization/default-associated-type-bound-2.stderr delete mode 100644 src/test/ui/specialization/default-generic-associated-type-bound.rs delete mode 100644 src/test/ui/specialization/default-generic-associated-type-bound.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/allowed-cross-crate.rs delete mode 100644 src/test/ui/specialization/defaultimpl/allowed-cross-crate.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/auxiliary/go_trait.rs delete mode 100644 src/test/ui/specialization/defaultimpl/out-of-order.rs delete mode 100644 src/test/ui/specialization/defaultimpl/out-of-order.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/overlap-projection.rs delete mode 100644 src/test/ui/specialization/defaultimpl/overlap-projection.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/projection.rs delete mode 100644 src/test/ui/specialization/defaultimpl/projection.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.rs delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-no-default.rs delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-no-default.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.rs delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.rs delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-wfcheck.rs delete mode 100644 src/test/ui/specialization/defaultimpl/specialization-wfcheck.stderr delete mode 100644 src/test/ui/specialization/defaultimpl/validation.rs delete mode 100644 src/test/ui/specialization/defaultimpl/validation.stderr delete mode 100644 src/test/ui/specialization/issue-33017.rs delete mode 100644 src/test/ui/specialization/issue-33017.stderr delete mode 100644 src/test/ui/specialization/issue-35376.rs delete mode 100644 src/test/ui/specialization/issue-35376.stderr delete mode 100644 src/test/ui/specialization/issue-36804.rs delete mode 100644 src/test/ui/specialization/issue-36804.stderr delete mode 100644 src/test/ui/specialization/issue-38091-2.rs delete mode 100644 src/test/ui/specialization/issue-38091-2.stderr delete mode 100644 src/test/ui/specialization/issue-38091.rs delete mode 100644 src/test/ui/specialization/issue-38091.stderr delete mode 100644 src/test/ui/specialization/issue-39448.rs delete mode 100644 src/test/ui/specialization/issue-39448.stderr delete mode 100644 src/test/ui/specialization/issue-39618.rs delete mode 100644 src/test/ui/specialization/issue-39618.stderr delete mode 100644 src/test/ui/specialization/issue-43037.current.stderr delete mode 100644 src/test/ui/specialization/issue-43037.negative.stderr delete mode 100644 src/test/ui/specialization/issue-43037.rs delete mode 100644 src/test/ui/specialization/issue-44861.rs delete mode 100644 src/test/ui/specialization/issue-44861.stderr delete mode 100644 src/test/ui/specialization/issue-45814.current.stderr delete mode 100644 src/test/ui/specialization/issue-45814.negative.stderr delete mode 100644 src/test/ui/specialization/issue-45814.rs delete mode 100644 src/test/ui/specialization/issue-50452-fail.rs delete mode 100644 src/test/ui/specialization/issue-50452-fail.stderr delete mode 100644 src/test/ui/specialization/issue-50452.rs delete mode 100644 src/test/ui/specialization/issue-50452.stderr delete mode 100644 src/test/ui/specialization/issue-51892.rs delete mode 100644 src/test/ui/specialization/issue-51892.stderr delete mode 100644 src/test/ui/specialization/issue-52050.rs delete mode 100644 src/test/ui/specialization/issue-52050.stderr delete mode 100644 src/test/ui/specialization/issue-59435.rs delete mode 100644 src/test/ui/specialization/issue-59435.stderr delete mode 100644 src/test/ui/specialization/issue-63716-parse-async.rs delete mode 100644 src/test/ui/specialization/issue-63716-parse-async.stderr delete mode 100644 src/test/ui/specialization/issue-68830-spurious-diagnostics.rs delete mode 100644 src/test/ui/specialization/issue-68830-spurious-diagnostics.stderr delete mode 100644 src/test/ui/specialization/issue-70442.rs delete mode 100644 src/test/ui/specialization/issue-70442.stderr delete mode 100644 src/test/ui/specialization/min_specialization/auxiliary/specialization-trait.rs delete mode 100644 src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.rs delete mode 100644 src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.stderr delete mode 100644 src/test/ui/specialization/min_specialization/impl-on-nonexisting.rs delete mode 100644 src/test/ui/specialization/min_specialization/impl-on-nonexisting.stderr delete mode 100644 src/test/ui/specialization/min_specialization/impl_specialization_trait.rs delete mode 100644 src/test/ui/specialization/min_specialization/impl_specialization_trait.stderr delete mode 100644 src/test/ui/specialization/min_specialization/implcit-well-formed-bounds.rs delete mode 100644 src/test/ui/specialization/min_specialization/issue-79224.rs delete mode 100644 src/test/ui/specialization/min_specialization/issue-79224.stderr delete mode 100644 src/test/ui/specialization/min_specialization/repeated_projection_type.rs delete mode 100644 src/test/ui/specialization/min_specialization/repeated_projection_type.stderr delete mode 100644 src/test/ui/specialization/min_specialization/repeating_lifetimes.rs delete mode 100644 src/test/ui/specialization/min_specialization/repeating_lifetimes.stderr delete mode 100644 src/test/ui/specialization/min_specialization/repeating_param.rs delete mode 100644 src/test/ui/specialization/min_specialization/repeating_param.stderr delete mode 100644 src/test/ui/specialization/min_specialization/spec-iter.rs delete mode 100644 src/test/ui/specialization/min_specialization/spec-marker-supertraits.rs delete mode 100644 src/test/ui/specialization/min_specialization/spec-marker-supertraits.stderr delete mode 100644 src/test/ui/specialization/min_specialization/spec-reference.rs delete mode 100644 src/test/ui/specialization/min_specialization/specialization_marker.rs delete mode 100644 src/test/ui/specialization/min_specialization/specialization_marker.stderr delete mode 100644 src/test/ui/specialization/min_specialization/specialization_super_trait.rs delete mode 100644 src/test/ui/specialization/min_specialization/specialization_super_trait.stderr delete mode 100644 src/test/ui/specialization/min_specialization/specialization_trait.rs delete mode 100644 src/test/ui/specialization/min_specialization/specialization_trait.stderr delete mode 100644 src/test/ui/specialization/min_specialization/specialize_on_marker.rs delete mode 100644 src/test/ui/specialization/min_specialization/specialize_on_spec_trait.rs delete mode 100644 src/test/ui/specialization/min_specialization/specialize_on_static.rs delete mode 100644 src/test/ui/specialization/min_specialization/specialize_on_static.stderr delete mode 100644 src/test/ui/specialization/min_specialization/specialize_on_trait.rs delete mode 100644 src/test/ui/specialization/min_specialization/specialize_on_trait.stderr delete mode 100644 src/test/ui/specialization/non-defaulted-item-fail.rs delete mode 100644 src/test/ui/specialization/non-defaulted-item-fail.stderr delete mode 100644 src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs delete mode 100644 src/test/ui/specialization/soundness/partial_ord_slice.rs delete mode 100644 src/test/ui/specialization/specialization-allowed-cross-crate.rs delete mode 100644 src/test/ui/specialization/specialization-allowed-cross-crate.stderr delete mode 100644 src/test/ui/specialization/specialization-assoc-fns.rs delete mode 100644 src/test/ui/specialization/specialization-assoc-fns.stderr delete mode 100644 src/test/ui/specialization/specialization-basics.rs delete mode 100644 src/test/ui/specialization/specialization-basics.stderr delete mode 100644 src/test/ui/specialization/specialization-cross-crate-no-gate.rs delete mode 100644 src/test/ui/specialization/specialization-cross-crate.rs delete mode 100644 src/test/ui/specialization/specialization-cross-crate.stderr delete mode 100644 src/test/ui/specialization/specialization-default-methods.rs delete mode 100644 src/test/ui/specialization/specialization-default-methods.stderr delete mode 100644 src/test/ui/specialization/specialization-default-projection.rs delete mode 100644 src/test/ui/specialization/specialization-default-projection.stderr delete mode 100644 src/test/ui/specialization/specialization-default-types.rs delete mode 100644 src/test/ui/specialization/specialization-default-types.stderr delete mode 100644 src/test/ui/specialization/specialization-feature-gate-default.rs delete mode 100644 src/test/ui/specialization/specialization-feature-gate-default.stderr delete mode 100644 src/test/ui/specialization/specialization-feature-gate-overlap.rs delete mode 100644 src/test/ui/specialization/specialization-feature-gate-overlap.stderr delete mode 100644 src/test/ui/specialization/specialization-no-default.rs delete mode 100644 src/test/ui/specialization/specialization-no-default.stderr delete mode 100644 src/test/ui/specialization/specialization-on-projection.rs delete mode 100644 src/test/ui/specialization/specialization-on-projection.stderr delete mode 100644 src/test/ui/specialization/specialization-out-of-order.rs delete mode 100644 src/test/ui/specialization/specialization-out-of-order.stderr delete mode 100644 src/test/ui/specialization/specialization-overlap-hygiene.rs delete mode 100644 src/test/ui/specialization/specialization-overlap-hygiene.stderr delete mode 100644 src/test/ui/specialization/specialization-overlap-negative.rs delete mode 100644 src/test/ui/specialization/specialization-overlap-negative.stderr delete mode 100644 src/test/ui/specialization/specialization-overlap-projection.rs delete mode 100644 src/test/ui/specialization/specialization-overlap-projection.stderr delete mode 100644 src/test/ui/specialization/specialization-overlap.rs delete mode 100644 src/test/ui/specialization/specialization-overlap.stderr delete mode 100644 src/test/ui/specialization/specialization-polarity.rs delete mode 100644 src/test/ui/specialization/specialization-polarity.stderr delete mode 100644 src/test/ui/specialization/specialization-projection-alias.rs delete mode 100644 src/test/ui/specialization/specialization-projection-alias.stderr delete mode 100644 src/test/ui/specialization/specialization-projection.rs delete mode 100644 src/test/ui/specialization/specialization-projection.stderr delete mode 100644 src/test/ui/specialization/specialization-supertraits.rs delete mode 100644 src/test/ui/specialization/specialization-supertraits.stderr delete mode 100644 src/test/ui/specialization/specialization-translate-projections-with-lifetimes.rs delete mode 100644 src/test/ui/specialization/specialization-translate-projections-with-lifetimes.stderr delete mode 100644 src/test/ui/specialization/specialization-translate-projections-with-params.rs delete mode 100644 src/test/ui/specialization/specialization-translate-projections-with-params.stderr delete mode 100644 src/test/ui/specialization/specialization-translate-projections.rs delete mode 100644 src/test/ui/specialization/specialization-translate-projections.stderr delete mode 100644 src/test/ui/specialization/transmute-specialization.rs delete mode 100644 src/test/ui/specialization/transmute-specialization.stderr (limited to 'src/test/ui/specialization') diff --git a/src/test/ui/specialization/README-rpass.md b/src/test/ui/specialization/README-rpass.md deleted file mode 100644 index c1486ce1e..000000000 --- a/src/test/ui/specialization/README-rpass.md +++ /dev/null @@ -1,37 +0,0 @@ -Tests that specialization is working correctly: - -- Dispatch - - [On methods](specialization-basics.rs), includes: - - Specialization via adding a trait bound - - Including both remote and local traits - - Specialization via pure structure (e.g. `(T, U)` vs `(T, T)`) - - Specialization via concrete types vs unknown types - - In top level of the trait reference - - Embedded within another type (`Vec` vs `Vec`) - - [Specialization based on super trait relationships](specialization-supertraits.rs) - - [On assoc fns](specialization-assoc-fns.rs) - - [Ensure that impl order doesn't matter](specialization-out-of-order.rs) - -- Item inheritance - - [Correct default cascading for methods](specialization-default-methods.rs) - - Inheritance works across impls with varying generics - - [With projections](specialization-translate-projections.rs) - - [With projections that involve input types](specialization-translate-projections-with-params.rs) - -- Normalization issues - - [Non-default assoc types can be projected](specialization-projection.rs) - - Including non-specialized cases - - Including specialized cases - - [Specialized Impls can happen on projections](specialization-on-projection.rs) - - [Projections and aliases play well together](specialization-projection-alias.rs) - - [Projections involving specialization allowed in the trait ref for impls, and overlap can still be determined](specialization-overlap-projection.rs) - - Only works for the simple case where the most specialized impl directly - provides a non-`default` associated type - -- Across crates - - [For traits defined in upstream crate](specialization-allowed-cross-crate.rs) - - [Full method dispatch tests, drawing from upstream crate](specialization-cross-crate.rs) - - Including *additional* local specializations - - [Full method dispatch tests, *without* turning on specialization in local crate](specialization-cross-crate-no-gate.rs) - - [Test that defaults cascade correctly from upstream crates](specialization-cross-crate-defaults.rs) - - Including *additional* local use of defaults diff --git a/src/test/ui/specialization/README.md b/src/test/ui/specialization/README.md deleted file mode 100644 index f2b4bf946..000000000 --- a/src/test/ui/specialization/README.md +++ /dev/null @@ -1,21 +0,0 @@ -This directory contains the test for incorrect usage of specialization that -should lead to compile failure. Those tests break down into a few categories: - -- Feature gating - - [On use of the `default` keyword](specialization-feature-gate-default.rs) - - [On overlapping impls](specialization-feature-gate-overlap.rs) - -- Overlap checking with specialization enabled - - [Basic overlap scenarios](specialization-overlap.rs) - - Includes purely structural overlap - - Includes purely trait-based overlap - - Includes mix - - [Overlap with differing polarity](specialization-overlap-negative.rs) - -- [Attempt to specialize without using `default`](specialization-no-default.rs) - -- [Attempt to change impl polarity in a specialization](specialization-polarity.rs) - -- Attempt to rely on projection of a `default` type - - [Rely on it externally in both generic and monomorphic contexts](specialization-default-projection.rs) - - [Rely on it both within an impl and outside it](specialization-default-types.rs) diff --git a/src/test/ui/specialization/assoc-ty-graph-cycle.rs b/src/test/ui/specialization/assoc-ty-graph-cycle.rs deleted file mode 100644 index fc39b553a..000000000 --- a/src/test/ui/specialization/assoc-ty-graph-cycle.rs +++ /dev/null @@ -1,25 +0,0 @@ -// run-pass - -// Make sure we don't crash with a cycle error during coherence. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Trait { - type Assoc; -} - -impl Trait for Vec { - default type Assoc = (); -} - -impl Trait for Vec { - type Assoc = u8; -} - -impl Trait for String { - type Assoc = (); -} - -impl Trait< as Trait>::Assoc> for String {} - -fn main() {} diff --git a/src/test/ui/specialization/assoc-ty-graph-cycle.stderr b/src/test/ui/specialization/assoc-ty-graph-cycle.stderr deleted file mode 100644 index f5529c24d..000000000 --- a/src/test/ui/specialization/assoc-ty-graph-cycle.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/assoc-ty-graph-cycle.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/auxiliary/cross_crates_defaults.rs b/src/test/ui/specialization/auxiliary/cross_crates_defaults.rs deleted file mode 100644 index 1e5555355..000000000 --- a/src/test/ui/specialization/auxiliary/cross_crates_defaults.rs +++ /dev/null @@ -1,40 +0,0 @@ -#![feature(specialization)] - -// First, test only use of explicit `default` items: - -pub trait Foo { - fn foo(&self) -> bool; -} - -impl Foo for T { - default fn foo(&self) -> bool { false } -} - -impl Foo for i32 {} - -impl Foo for i64 { - fn foo(&self) -> bool { true } -} - -// Next, test mixture of explicit `default` and provided methods: - -pub trait Bar { - fn bar(&self) -> i32 { 0 } -} - -impl Bar for T { - default fn bar(&self) -> i32 { 0 } -} - -impl Bar for i32 { - fn bar(&self) -> i32 { 1 } -} -impl<'a> Bar for &'a str {} - -impl Bar for Vec { - default fn bar(&self) -> i32 { 2 } -} -impl Bar for Vec {} -impl Bar for Vec { - fn bar(&self) -> i32 { 3 } -} diff --git a/src/test/ui/specialization/auxiliary/go_trait.rs b/src/test/ui/specialization/auxiliary/go_trait.rs deleted file mode 100644 index aa0ec2289..000000000 --- a/src/test/ui/specialization/auxiliary/go_trait.rs +++ /dev/null @@ -1,43 +0,0 @@ -#![feature(specialization)] - -// Common code used for tests that model the Fn/FnMut/FnOnce hierarchy. - -pub trait Go { - fn go(&self, arg: isize); -} - -pub fn go(this: &G, arg: isize) { - this.go(arg) -} - -pub trait GoMut { - fn go_mut(&mut self, arg: isize); -} - -pub fn go_mut(this: &mut G, arg: isize) { - this.go_mut(arg) -} - -pub trait GoOnce { - fn go_once(self, arg: isize); -} - -pub fn go_once(this: G, arg: isize) { - this.go_once(arg) -} - -impl GoMut for G - where G : Go -{ - default fn go_mut(&mut self, arg: isize) { - go(&*self, arg) - } -} - -impl GoOnce for G - where G : GoMut -{ - default fn go_once(mut self, arg: isize) { - go_mut(&mut self, arg) - } -} diff --git a/src/test/ui/specialization/auxiliary/specialization_cross_crate.rs b/src/test/ui/specialization/auxiliary/specialization_cross_crate.rs deleted file mode 100644 index 8caa8524f..000000000 --- a/src/test/ui/specialization/auxiliary/specialization_cross_crate.rs +++ /dev/null @@ -1,72 +0,0 @@ -#![feature(specialization)] - -pub trait Foo { - fn foo(&self) -> &'static str; -} - -impl Foo for T { - default fn foo(&self) -> &'static str { - "generic" - } -} - -impl Foo for T { - default fn foo(&self) -> &'static str { - "generic Clone" - } -} - -impl Foo for (T, U) where T: Clone, U: Clone { - default fn foo(&self) -> &'static str { - "generic pair" - } -} - -impl Foo for (T, T) { - default fn foo(&self) -> &'static str { - "generic uniform pair" - } -} - -impl Foo for (u8, u32) { - default fn foo(&self) -> &'static str { - "(u8, u32)" - } -} - -impl Foo for (u8, u8) { - default fn foo(&self) -> &'static str { - "(u8, u8)" - } -} - -impl Foo for Vec { - default fn foo(&self) -> &'static str { - "generic Vec" - } -} - -impl Foo for Vec { - fn foo(&self) -> &'static str { - "Vec" - } -} - -impl Foo for String { - fn foo(&self) -> &'static str { - "String" - } -} - -impl Foo for i32 { - fn foo(&self) -> &'static str { - "i32" - } -} - -pub trait MyMarker {} -impl Foo for T { - default fn foo(&self) -> &'static str { - "generic Clone + MyMarker" - } -} diff --git a/src/test/ui/specialization/const_trait_impl.rs b/src/test/ui/specialization/const_trait_impl.rs deleted file mode 100644 index 05ba4c8d4..000000000 --- a/src/test/ui/specialization/const_trait_impl.rs +++ /dev/null @@ -1,55 +0,0 @@ -// check-pass -#![feature(const_trait_impl, min_specialization, rustc_attrs)] - -#[rustc_specialization_trait] -#[const_trait] -pub unsafe trait Sup { - fn foo() -> u32; -} - -#[rustc_specialization_trait] -#[const_trait] -pub unsafe trait Sub: ~const Sup {} - -unsafe impl const Sup for u8 { - default fn foo() -> u32 { - 1 - } -} - -unsafe impl const Sup for () { - fn foo() -> u32 { - 42 - } -} - -unsafe impl const Sub for () {} - -#[const_trait] -pub trait A { - fn a() -> u32; -} - -impl const A for T { - default fn a() -> u32 { - 2 - } -} - -impl const A for T { - default fn a() -> u32 { - 3 - } -} - -impl const A for T { - fn a() -> u32 { - T::foo() - } -} - -const _: () = assert!(<()>::a() == 42); -const _: () = assert!(::a() == 3); -const _: () = assert!(::a() == 2); - -fn main() {} diff --git a/src/test/ui/specialization/cross-crate-defaults.rs b/src/test/ui/specialization/cross-crate-defaults.rs deleted file mode 100644 index fc28d0c81..000000000 --- a/src/test/ui/specialization/cross-crate-defaults.rs +++ /dev/null @@ -1,41 +0,0 @@ -// run-pass - -// aux-build:cross_crates_defaults.rs - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -extern crate cross_crates_defaults; - -use cross_crates_defaults::*; - -struct LocalDefault; -struct LocalOverride; - -impl Foo for LocalDefault {} - -impl Foo for LocalOverride { - fn foo(&self) -> bool { true } -} - -fn test_foo() { - assert!(!0i8.foo()); - assert!(!0i32.foo()); - assert!(0i64.foo()); - - assert!(!LocalDefault.foo()); - assert!(LocalOverride.foo()); -} - -fn test_bar() { - assert!(0u8.bar() == 0); - assert!(0i32.bar() == 1); - assert!("hello".bar() == 0); - assert!(vec![()].bar() == 2); - assert!(vec![0i32].bar() == 2); - assert!(vec![0i64].bar() == 3); -} - -fn main() { - test_foo(); - test_bar(); -} diff --git a/src/test/ui/specialization/cross-crate-defaults.stderr b/src/test/ui/specialization/cross-crate-defaults.stderr deleted file mode 100644 index ee5c77a76..000000000 --- a/src/test/ui/specialization/cross-crate-defaults.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/cross-crate-defaults.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/default-associated-type-bound-1.rs b/src/test/ui/specialization/default-associated-type-bound-1.rs deleted file mode 100644 index c043114b5..000000000 --- a/src/test/ui/specialization/default-associated-type-bound-1.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Check that we check that default associated types satisfy the required -// bounds on them. - -#![feature(specialization)] -//~^ WARNING `specialization` is incomplete - -trait X { - type U: Clone; - fn unsafe_clone(&self, x: Option<&Self::U>) { - x.cloned(); - } -} - -// We cannot normalize `::U` to `str` here, because the default could -// be overridden. The error here must therefore be found by a method other than -// normalization. -impl X for T { - default type U = str; - //~^ ERROR the trait bound `str: Clone` is not satisfied -} - -pub fn main() { - 1.unsafe_clone(None); -} diff --git a/src/test/ui/specialization/default-associated-type-bound-1.stderr b/src/test/ui/specialization/default-associated-type-bound-1.stderr deleted file mode 100644 index e498187c0..000000000 --- a/src/test/ui/specialization/default-associated-type-bound-1.stderr +++ /dev/null @@ -1,26 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/default-associated-type-bound-1.rs:4:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0277]: the trait bound `str: Clone` is not satisfied - --> $DIR/default-associated-type-bound-1.rs:18:22 - | -LL | default type U = str; - | ^^^ the trait `Clone` is not implemented for `str` - | - = help: the trait `Clone` is implemented for `String` -note: required by a bound in `X::U` - --> $DIR/default-associated-type-bound-1.rs:8:13 - | -LL | type U: Clone; - | ^^^^^ required by this bound in `X::U` - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/specialization/default-associated-type-bound-2.rs b/src/test/ui/specialization/default-associated-type-bound-2.rs deleted file mode 100644 index 0a21b1f09..000000000 --- a/src/test/ui/specialization/default-associated-type-bound-2.rs +++ /dev/null @@ -1,22 +0,0 @@ -// Check that generic predicates are also checked for default associated types. -#![feature(specialization)] -//~^ WARNING `specialization` is incomplete - -trait X { - type U: PartialEq; - fn unsafe_compare(x: Option, y: Option) { - match (x, y) { - (Some(a), Some(b)) => a == b, - _ => false, - }; - } -} - -impl X for T { - default type U = &'static B; - //~^ ERROR can't compare `&'static B` with `B` -} - -pub fn main() { - >::unsafe_compare(None, None); -} diff --git a/src/test/ui/specialization/default-associated-type-bound-2.stderr b/src/test/ui/specialization/default-associated-type-bound-2.stderr deleted file mode 100644 index 4dbe251ed..000000000 --- a/src/test/ui/specialization/default-associated-type-bound-2.stderr +++ /dev/null @@ -1,30 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/default-associated-type-bound-2.rs:2:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0277]: can't compare `&'static B` with `B` - --> $DIR/default-associated-type-bound-2.rs:16:22 - | -LL | default type U = &'static B; - | ^^^^^^^^^^ no implementation for `&'static B == B` - | - = help: the trait `PartialEq` is not implemented for `&'static B` -note: required by a bound in `X::U` - --> $DIR/default-associated-type-bound-2.rs:6:13 - | -LL | type U: PartialEq; - | ^^^^^^^^^^^^ required by this bound in `X::U` -help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement - | -LL | impl X for T where &'static B: PartialEq { - | ++++++++++++++++++++++++++++++ - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/specialization/default-generic-associated-type-bound.rs b/src/test/ui/specialization/default-generic-associated-type-bound.rs deleted file mode 100644 index 31a0685d0..000000000 --- a/src/test/ui/specialization/default-generic-associated-type-bound.rs +++ /dev/null @@ -1,25 +0,0 @@ -// Check that default generics associated types are validated. - -#![feature(specialization)] -//~^ WARNING `specialization` is incomplete - -trait X { - type U<'a>: PartialEq<&'a Self> where Self: 'a; - fn unsafe_compare<'b>(x: Option>, y: Option<&'b Self>) { - match (x, y) { - (Some(a), Some(b)) => a == b, - _ => false, - }; - } -} - -impl X for T { - default type U<'a> = &'a T; - //~^ ERROR can't compare `T` with `T` -} - -struct NotComparable; - -pub fn main() { - ::unsafe_compare(None, None); -} diff --git a/src/test/ui/specialization/default-generic-associated-type-bound.stderr b/src/test/ui/specialization/default-generic-associated-type-bound.stderr deleted file mode 100644 index c597eed37..000000000 --- a/src/test/ui/specialization/default-generic-associated-type-bound.stderr +++ /dev/null @@ -1,30 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/default-generic-associated-type-bound.rs:3:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0277]: can't compare `T` with `T` - --> $DIR/default-generic-associated-type-bound.rs:17:26 - | -LL | default type U<'a> = &'a T; - | ^^^^^ no implementation for `T == T` - | - = note: required for `&'a T` to implement `PartialEq` -note: required by a bound in `X::U` - --> $DIR/default-generic-associated-type-bound.rs:7:17 - | -LL | type U<'a>: PartialEq<&'a Self> where Self: 'a; - | ^^^^^^^^^^^^^^^^^^^ required by this bound in `X::U` -help: consider further restricting this bound - | -LL | impl X for T { - | +++++++++++++++++++++ - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/specialization/defaultimpl/allowed-cross-crate.rs b/src/test/ui/specialization/defaultimpl/allowed-cross-crate.rs deleted file mode 100644 index 5d67160eb..000000000 --- a/src/test/ui/specialization/defaultimpl/allowed-cross-crate.rs +++ /dev/null @@ -1,26 +0,0 @@ -// run-pass -#![allow(dead_code)] -#![allow(unused_variables)] -#![allow(unused_imports)] - -// aux-build:go_trait.rs - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -extern crate go_trait; - -use go_trait::{Go,GoMut}; -use std::fmt::Debug; -use std::default::Default; - -struct MyThingy; - -impl Go for MyThingy { - fn go(&self, arg: isize) { } -} - -impl GoMut for MyThingy { - fn go_mut(&mut self, arg: isize) { } -} - -fn main() { } diff --git a/src/test/ui/specialization/defaultimpl/allowed-cross-crate.stderr b/src/test/ui/specialization/defaultimpl/allowed-cross-crate.stderr deleted file mode 100644 index 02f13d461..000000000 --- a/src/test/ui/specialization/defaultimpl/allowed-cross-crate.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/allowed-cross-crate.rs:8:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/defaultimpl/auxiliary/go_trait.rs b/src/test/ui/specialization/defaultimpl/auxiliary/go_trait.rs deleted file mode 100644 index c065593b4..000000000 --- a/src/test/ui/specialization/defaultimpl/auxiliary/go_trait.rs +++ /dev/null @@ -1,43 +0,0 @@ -#![feature(specialization)] - -// Common code used for tests that model the Fn/FnMut/FnOnce hierarchy. - -pub trait Go { - fn go(&self, arg: isize); -} - -pub fn go(this: &G, arg: isize) { - this.go(arg) -} - -pub trait GoMut { - fn go_mut(&mut self, arg: isize); -} - -pub fn go_mut(this: &mut G, arg: isize) { - this.go_mut(arg) -} - -pub trait GoOnce { - fn go_once(self, arg: isize); -} - -pub fn go_once(this: G, arg: isize) { - this.go_once(arg) -} - -default impl GoMut for G - where G : Go -{ - fn go_mut(&mut self, arg: isize) { - go(&*self, arg) - } -} - -default impl GoOnce for G - where G : GoMut -{ - fn go_once(mut self, arg: isize) { - go_mut(&mut self, arg) - } -} diff --git a/src/test/ui/specialization/defaultimpl/out-of-order.rs b/src/test/ui/specialization/defaultimpl/out-of-order.rs deleted file mode 100644 index 13258ac8c..000000000 --- a/src/test/ui/specialization/defaultimpl/out-of-order.rs +++ /dev/null @@ -1,19 +0,0 @@ -// run-pass - -// Test that you can list the more specific impl before the more general one. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Foo { - type Out; -} - -impl Foo for bool { - type Out = (); -} - -default impl Foo for T { - type Out = bool; -} - -fn main() {} diff --git a/src/test/ui/specialization/defaultimpl/out-of-order.stderr b/src/test/ui/specialization/defaultimpl/out-of-order.stderr deleted file mode 100644 index 2cf1ac909..000000000 --- a/src/test/ui/specialization/defaultimpl/out-of-order.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/out-of-order.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/defaultimpl/overlap-projection.rs b/src/test/ui/specialization/defaultimpl/overlap-projection.rs deleted file mode 100644 index 0add4d551..000000000 --- a/src/test/ui/specialization/defaultimpl/overlap-projection.rs +++ /dev/null @@ -1,25 +0,0 @@ -// run-pass - -// Test that impls on projected self types can resolve overlap, even when the -// projections involve specialization, so long as the associated type is -// provided by the most specialized impl. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Assoc { - type Output; -} - -default impl Assoc for T { - type Output = bool; -} - -impl Assoc for u8 { type Output = u8; } -impl Assoc for u16 { type Output = u16; } - -trait Foo {} -impl Foo for u32 {} -impl Foo for ::Output {} -impl Foo for ::Output {} - -fn main() {} diff --git a/src/test/ui/specialization/defaultimpl/overlap-projection.stderr b/src/test/ui/specialization/defaultimpl/overlap-projection.stderr deleted file mode 100644 index 75fdfafd9..000000000 --- a/src/test/ui/specialization/defaultimpl/overlap-projection.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/overlap-projection.rs:7:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/defaultimpl/projection.rs b/src/test/ui/specialization/defaultimpl/projection.rs deleted file mode 100644 index f19c55b04..000000000 --- a/src/test/ui/specialization/defaultimpl/projection.rs +++ /dev/null @@ -1,42 +0,0 @@ -// run-pass -#![allow(dead_code)] - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Make sure we *can* project non-defaulted associated types -// cf ui/specialization/specialization-default-projection.rs - -// First, do so without any use of specialization - -trait Foo { - type Assoc; -} - -impl Foo for T { - type Assoc = (); -} - -fn generic_foo() -> ::Assoc { - () -} - -// Next, allow for one layer of specialization - -trait Bar { - type Assoc; -} - -default impl Bar for T { - type Assoc = (); -} - -impl Bar for T { - type Assoc = u8; -} - -fn generic_bar_clone() -> ::Assoc { - 0u8 -} - -fn main() { -} diff --git a/src/test/ui/specialization/defaultimpl/projection.stderr b/src/test/ui/specialization/defaultimpl/projection.stderr deleted file mode 100644 index cc3fe8237..000000000 --- a/src/test/ui/specialization/defaultimpl/projection.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/projection.rs:4:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.rs b/src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.rs deleted file mode 100644 index 89158b65a..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.rs +++ /dev/null @@ -1,11 +0,0 @@ -// Check that specialization must be ungated to use the `default` keyword - -trait Foo { - fn foo(&self); -} - -default impl Foo for T { //~ ERROR specialization is unstable - fn foo(&self) {} -} - -fn main() {} diff --git a/src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.stderr b/src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.stderr deleted file mode 100644 index 64e14f580..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-feature-gate-default.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error[E0658]: specialization is unstable - --> $DIR/specialization-feature-gate-default.rs:7:1 - | -LL | / default impl Foo for T { -LL | | fn foo(&self) {} -LL | | } - | |_^ - | - = note: see issue #31844 for more information - = help: add `#![feature(specialization)]` to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/specialization/defaultimpl/specialization-no-default.rs b/src/test/ui/specialization/defaultimpl/specialization-no-default.rs deleted file mode 100644 index 661724eef..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-no-default.rs +++ /dev/null @@ -1,77 +0,0 @@ -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Check a number of scenarios in which one impl tries to override another, -// without correctly using `default`. - -// Test 1: one layer of specialization, multiple methods, missing `default` - -trait Foo { - fn foo(&self); - fn bar(&self); -} - -impl Foo for T { - fn foo(&self) {} - fn bar(&self) {} -} - -impl Foo for u8 {} -impl Foo for u16 { - fn foo(&self) {} //~ ERROR E0520 -} -impl Foo for u32 { - fn bar(&self) {} //~ ERROR E0520 -} - -// Test 2: one layer of specialization, missing `default` on associated type - -trait Bar { - type T; -} - -impl Bar for T { - type T = u8; -} - -impl Bar for u8 { - type T = (); //~ ERROR E0520 -} - -// Test 3a: multiple layers of specialization, missing interior `default` - -trait Baz { - fn baz(&self); -} - -default impl Baz for T { - fn baz(&self) {} -} - -impl Baz for T { - fn baz(&self) {} -} - -impl Baz for i32 { - fn baz(&self) {} //~ ERROR E0520 -} - -// Test 3b: multiple layers of specialization, missing interior `default`, -// redundant `default` in bottom layer. - -trait Redundant { - fn redundant(&self); -} - -default impl Redundant for T { - fn redundant(&self) {} -} - -impl Redundant for T { - fn redundant(&self) {} -} - -default impl Redundant for i32 { - fn redundant(&self) {} //~ ERROR E0520 -} - -fn main() {} diff --git a/src/test/ui/specialization/defaultimpl/specialization-no-default.stderr b/src/test/ui/specialization/defaultimpl/specialization-no-default.stderr deleted file mode 100644 index 770be2af2..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-no-default.stderr +++ /dev/null @@ -1,68 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-no-default.rs:1:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:20:5 - | -LL | impl Foo for T { - | ----------------- parent `impl` is here -... -LL | fn foo(&self) {} - | ^^^^^^^^^^^^^^^^ cannot specialize default item `foo` - | - = note: to specialize, `foo` in the parent `impl` must be marked `default` - -error[E0520]: `bar` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:23:5 - | -LL | impl Foo for T { - | ----------------- parent `impl` is here -... -LL | fn bar(&self) {} - | ^^^^^^^^^^^^^^^^ cannot specialize default item `bar` - | - = note: to specialize, `bar` in the parent `impl` must be marked `default` - -error[E0520]: `T` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:37:5 - | -LL | impl Bar for T { - | ----------------- parent `impl` is here -... -LL | type T = (); - | ^^^^^^^^^^^^ cannot specialize default item `T` - | - = note: to specialize, `T` in the parent `impl` must be marked `default` - -error[E0520]: `baz` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:55:5 - | -LL | impl Baz for T { - | ------------------------ parent `impl` is here -... -LL | fn baz(&self) {} - | ^^^^^^^^^^^^^^^^ cannot specialize default item `baz` - | - = note: to specialize, `baz` in the parent `impl` must be marked `default` - -error[E0520]: `redundant` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:74:5 - | -LL | impl Redundant for T { - | ------------------------------ parent `impl` is here -... -LL | fn redundant(&self) {} - | ^^^^^^^^^^^^^^^^^^^^^^ cannot specialize default item `redundant` - | - = note: to specialize, `redundant` in the parent `impl` must be marked `default` - -error: aborting due to 5 previous errors; 1 warning emitted - -For more information about this error, try `rustc --explain E0520`. diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs b/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs deleted file mode 100644 index 89fef5b5e..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.rs +++ /dev/null @@ -1,34 +0,0 @@ -// run-pass - -// Tests that we can combine a default impl that supplies one method with a -// full impl that supplies the other, and they can invoke one another. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Foo { - fn foo_one(&self) -> &'static str; - fn foo_two(&self) -> &'static str; - fn foo_three(&self) -> &'static str; -} - -struct MyStruct; - -default impl Foo for T { - fn foo_one(&self) -> &'static str { - self.foo_three() - } -} - -impl Foo for MyStruct { - fn foo_two(&self) -> &'static str { - self.foo_one() - } - - fn foo_three(&self) -> &'static str { - "generic" - } -} - -fn main() { - assert!(MyStruct.foo_two() == "generic"); -} diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.stderr b/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.stderr deleted file mode 100644 index 407c1ab77..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented-rpass.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-trait-item-not-implemented-rpass.rs:6:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.rs b/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.rs deleted file mode 100644 index 3c5414469..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Tests that default impls do not have to supply all items but regular impls do. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Foo { - fn foo_one(&self) -> &'static str; - fn foo_two(&self) -> &'static str; -} - -struct MyStruct; - -default impl Foo for T { - fn foo_one(&self) -> &'static str { - "generic" - } -} - -impl Foo for MyStruct {} -//~^ ERROR not all trait items implemented, missing: `foo_two` [E0046] - -fn main() { - println!("{}", MyStruct.foo_one()); -} diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.stderr b/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.stderr deleted file mode 100644 index f19975060..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-trait-item-not-implemented.stderr +++ /dev/null @@ -1,22 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-trait-item-not-implemented.rs:3:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0046]: not all trait items implemented, missing: `foo_two` - --> $DIR/specialization-trait-item-not-implemented.rs:18:1 - | -LL | fn foo_two(&self) -> &'static str; - | ---------------------------------- `foo_two` from trait -... -LL | impl Foo for MyStruct {} - | ^^^^^^^^^^^^^^^^^^^^^ missing `foo_two` in implementation - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0046`. diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.rs b/src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.rs deleted file mode 100644 index 6834d5736..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Tests that: -// - default impls do not have to supply all items and -// - a default impl does not count as an impl (in this case, an incomplete default impl). - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Foo { - fn foo_one(&self) -> &'static str; - fn foo_two(&self) -> &'static str; -} - -struct MyStruct; - -default impl Foo for T { - fn foo_one(&self) -> &'static str { - "generic" - } -} - - -fn main() { - println!("{}", MyStruct.foo_one()); - //~^ ERROR the method -} diff --git a/src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.stderr b/src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.stderr deleted file mode 100644 index 33ca7a2c2..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-trait-not-implemented.stderr +++ /dev/null @@ -1,44 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-trait-not-implemented.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0599]: the method `foo_one` exists for struct `MyStruct`, but its trait bounds were not satisfied - --> $DIR/specialization-trait-not-implemented.rs:22:29 - | -LL | struct MyStruct; - | --------------- - | | - | method `foo_one` not found for this struct - | doesn't satisfy `MyStruct: Foo` -... -LL | println!("{}", MyStruct.foo_one()); - | ^^^^^^^ method cannot be called on `MyStruct` due to unsatisfied trait bounds - | -note: trait bound `MyStruct: Foo` was not satisfied - --> $DIR/specialization-trait-not-implemented.rs:14:1 - | -LL | default impl Foo for T { - | ^^^^^^^^^^^^^^^^---^^^^^- - | | - | unsatisfied trait bound introduced here -note: the following trait must be implemented - --> $DIR/specialization-trait-not-implemented.rs:7:1 - | -LL | trait Foo { - | ^^^^^^^^^ - = help: items from traits can only be used if the trait is implemented and in scope -note: `Foo` defines an item `foo_one`, perhaps you need to implement it - --> $DIR/specialization-trait-not-implemented.rs:7:1 - | -LL | trait Foo { - | ^^^^^^^^^ - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0599`. diff --git a/src/test/ui/specialization/defaultimpl/specialization-wfcheck.rs b/src/test/ui/specialization/defaultimpl/specialization-wfcheck.rs deleted file mode 100644 index eb18d6eaa..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-wfcheck.rs +++ /dev/null @@ -1,10 +0,0 @@ -// Tests that a default impl still has to have a WF trait ref. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Foo<'a, T: Eq + 'a> { } - -default impl Foo<'static, U> for () {} -//~^ ERROR the trait bound `U: Eq` is not satisfied - -fn main(){} diff --git a/src/test/ui/specialization/defaultimpl/specialization-wfcheck.stderr b/src/test/ui/specialization/defaultimpl/specialization-wfcheck.stderr deleted file mode 100644 index e78016034..000000000 --- a/src/test/ui/specialization/defaultimpl/specialization-wfcheck.stderr +++ /dev/null @@ -1,29 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-wfcheck.rs:3:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0277]: the trait bound `U: Eq` is not satisfied - --> $DIR/specialization-wfcheck.rs:7:17 - | -LL | default impl Foo<'static, U> for () {} - | ^^^^^^^^^^^^^^^ the trait `Eq` is not implemented for `U` - | -note: required by a bound in `Foo` - --> $DIR/specialization-wfcheck.rs:5:18 - | -LL | trait Foo<'a, T: Eq + 'a> { } - | ^^ required by this bound in `Foo` -help: consider restricting type parameter `U` - | -LL | default impl Foo<'static, U> for () {} - | ++++++++++++++ - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/specialization/defaultimpl/validation.rs b/src/test/ui/specialization/defaultimpl/validation.rs deleted file mode 100644 index 8558a1efb..000000000 --- a/src/test/ui/specialization/defaultimpl/validation.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![feature(negative_impls)] -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -struct S; -struct Z; - -default impl S {} //~ ERROR inherent impls cannot be `default` - -default unsafe impl Send for S {} //~ ERROR impls of auto traits cannot be default -default impl !Send for Z {} //~ ERROR impls of auto traits cannot be default - //~^ ERROR negative impls cannot be default impls - -trait Tr {} -default impl !Tr for S {} //~ ERROR negative impls cannot be default impls - -fn main() {} diff --git a/src/test/ui/specialization/defaultimpl/validation.stderr b/src/test/ui/specialization/defaultimpl/validation.stderr deleted file mode 100644 index eb6dc9355..000000000 --- a/src/test/ui/specialization/defaultimpl/validation.stderr +++ /dev/null @@ -1,51 +0,0 @@ -error: inherent impls cannot be `default` - --> $DIR/validation.rs:7:14 - | -LL | default impl S {} - | ------- ^ inherent impl for this type - | | - | `default` because of this - | - = note: only trait implementations may be annotated with `default` - -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/validation.rs:2:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error: impls of auto traits cannot be default - --> $DIR/validation.rs:9:21 - | -LL | default unsafe impl Send for S {} - | ------- ^^^^ auto trait - | | - | default because of this - -error: impls of auto traits cannot be default - --> $DIR/validation.rs:10:15 - | -LL | default impl !Send for Z {} - | ------- ^^^^ auto trait - | | - | default because of this - -error[E0750]: negative impls cannot be default impls - --> $DIR/validation.rs:10:1 - | -LL | default impl !Send for Z {} - | ^^^^^^^ ^ - -error[E0750]: negative impls cannot be default impls - --> $DIR/validation.rs:14:1 - | -LL | default impl !Tr for S {} - | ^^^^^^^ ^ - -error: aborting due to 5 previous errors; 1 warning emitted - -For more information about this error, try `rustc --explain E0750`. diff --git a/src/test/ui/specialization/issue-33017.rs b/src/test/ui/specialization/issue-33017.rs deleted file mode 100644 index 8dbadf58d..000000000 --- a/src/test/ui/specialization/issue-33017.rs +++ /dev/null @@ -1,45 +0,0 @@ -// Test to ensure that trait bounds are properly -// checked on specializable associated types - -#![allow(incomplete_features)] -#![feature(specialization)] - -trait UncheckedCopy: Sized { - type Output: From + Copy + Into; -} - -impl UncheckedCopy for T { - default type Output = Self; - //~^ ERROR: the trait bound `T: Copy` is not satisfied -} - -fn unchecked_copy(other: &T::Output) -> T { - (*other).into() -} - -fn bug(origin: String) { - // Turn the String into it's Output type... - // Which we can just do by `.into()`, the assoc type states `From`. - let origin_output = origin.into(); - - // Make a copy of String::Output, which is a String... - let mut copy: String = unchecked_copy::(&origin_output); - - // Turn the Output type into a String again, - // Which we can just do by `.into()`, the assoc type states `Into`. - let mut origin: String = origin_output.into(); - - // assert both Strings use the same buffer. - assert_eq!(copy.as_ptr(), origin.as_ptr()); - - // Any use of the copy we made becomes invalid, - drop(origin); - - // OH NO! UB UB UB UB! - copy.push_str(" world!"); - println!("{}", copy); -} - -fn main() { - bug(String::from("hello")); -} diff --git a/src/test/ui/specialization/issue-33017.stderr b/src/test/ui/specialization/issue-33017.stderr deleted file mode 100644 index 78e94cec2..000000000 --- a/src/test/ui/specialization/issue-33017.stderr +++ /dev/null @@ -1,19 +0,0 @@ -error[E0277]: the trait bound `T: Copy` is not satisfied - --> $DIR/issue-33017.rs:12:27 - | -LL | default type Output = Self; - | ^^^^ the trait `Copy` is not implemented for `T` - | -note: required by a bound in `UncheckedCopy::Output` - --> $DIR/issue-33017.rs:8:31 - | -LL | type Output: From + Copy + Into; - | ^^^^ required by this bound in `UncheckedCopy::Output` -help: consider restricting type parameter `T` - | -LL | impl UncheckedCopy for T { - | +++++++++++++++++++ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/specialization/issue-35376.rs b/src/test/ui/specialization/issue-35376.rs deleted file mode 100644 index cc35213b9..000000000 --- a/src/test/ui/specialization/issue-35376.rs +++ /dev/null @@ -1,43 +0,0 @@ -// check-pass -#![feature(specialization)] -//~^ WARN the feature `specialization` is incomplete - -fn main() {} - -pub trait Alpha { } - -pub trait Beta { - type Event; -} - -pub trait Delta { - type Handle; - fn process(&self); -} - -pub struct Parent(A, T); - -impl Delta for Parent -where A: Alpha, - T: Delta, - T::Handle: Beta::Event> { - type Handle = Handle; - default fn process(&self) { - unimplemented!() - } -} - -impl Delta for Parent -where A: Alpha + Alpha, - T: Delta, - T::Handle: Beta::Event> { - fn process(&self) { - unimplemented!() - } -} - -pub struct Handle; - -impl Beta for Handle { - type Event = (); -} diff --git a/src/test/ui/specialization/issue-35376.stderr b/src/test/ui/specialization/issue-35376.stderr deleted file mode 100644 index 6c4167f3f..000000000 --- a/src/test/ui/specialization/issue-35376.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-35376.rs:2:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/issue-36804.rs b/src/test/ui/specialization/issue-36804.rs deleted file mode 100644 index 89350602f..000000000 --- a/src/test/ui/specialization/issue-36804.rs +++ /dev/null @@ -1,35 +0,0 @@ -// check-pass -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -pub struct Cloned(I); - -impl<'a, I, T: 'a> Iterator for Cloned -where - I: Iterator, - T: Clone, -{ - type Item = T; - - fn next(&mut self) -> Option { - unimplemented!() - } - - default fn count(self) -> usize where Self: Sized { - self.fold(0, |cnt, _| cnt + 1) - } -} - -impl<'a, I, T: 'a> Iterator for Cloned -where - I: Iterator, - T: Copy, -{ - fn count(self) -> usize { - unimplemented!() - } -} - -fn main() { - let a = [1,2,3,4]; - Cloned(a.iter()).count(); -} diff --git a/src/test/ui/specialization/issue-36804.stderr b/src/test/ui/specialization/issue-36804.stderr deleted file mode 100644 index c2113b25f..000000000 --- a/src/test/ui/specialization/issue-36804.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-36804.rs:2:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/issue-38091-2.rs b/src/test/ui/specialization/issue-38091-2.rs deleted file mode 100644 index 9ed0b240d..000000000 --- a/src/test/ui/specialization/issue-38091-2.rs +++ /dev/null @@ -1,28 +0,0 @@ -// build-fail -//~^ ERROR overflow evaluating the requirement `i32: Check` - -#![feature(specialization)] -//~^ WARN the feature `specialization` is incomplete - -trait Iterate<'a> { - type Ty: Valid; - fn iterate(self); -} -impl<'a, T> Iterate<'a> for T -where - T: Check, -{ - default type Ty = (); - default fn iterate(self) {} -} - -trait Check {} -impl<'a, T> Check for T where >::Ty: Valid {} - -trait Valid {} - -impl Valid for () {} - -fn main() { - Iterate::iterate(0); -} diff --git a/src/test/ui/specialization/issue-38091-2.stderr b/src/test/ui/specialization/issue-38091-2.stderr deleted file mode 100644 index 117fb10bb..000000000 --- a/src/test/ui/specialization/issue-38091-2.stderr +++ /dev/null @@ -1,21 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-38091-2.rs:4:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0275]: overflow evaluating the requirement `i32: Check` - | -note: required for `i32` to implement `Iterate<'_>` - --> $DIR/issue-38091-2.rs:11:13 - | -LL | impl<'a, T> Iterate<'a> for T - | ^^^^^^^^^^^ ^ - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0275`. diff --git a/src/test/ui/specialization/issue-38091.rs b/src/test/ui/specialization/issue-38091.rs deleted file mode 100644 index 5b398368a..000000000 --- a/src/test/ui/specialization/issue-38091.rs +++ /dev/null @@ -1,24 +0,0 @@ -#![feature(specialization)] -//~^ WARN the feature `specialization` is incomplete - -trait Iterate<'a> { - type Ty: Valid; - fn iterate(self); -} -impl<'a, T> Iterate<'a> for T -where - T: Check, -{ - default type Ty = (); - //~^ ERROR the trait bound `(): Valid` is not satisfied - default fn iterate(self) {} -} - -trait Check {} -impl<'a, T> Check for T where >::Ty: Valid {} - -trait Valid {} - -fn main() { - Iterate::iterate(0); -} diff --git a/src/test/ui/specialization/issue-38091.stderr b/src/test/ui/specialization/issue-38091.stderr deleted file mode 100644 index f2210a407..000000000 --- a/src/test/ui/specialization/issue-38091.stderr +++ /dev/null @@ -1,25 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-38091.rs:1:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0277]: the trait bound `(): Valid` is not satisfied - --> $DIR/issue-38091.rs:12:23 - | -LL | default type Ty = (); - | ^^ the trait `Valid` is not implemented for `()` - | -note: required by a bound in `Iterate::Ty` - --> $DIR/issue-38091.rs:5:14 - | -LL | type Ty: Valid; - | ^^^^^ required by this bound in `Iterate::Ty` - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/specialization/issue-39448.rs b/src/test/ui/specialization/issue-39448.rs deleted file mode 100644 index a15c4bd6b..000000000 --- a/src/test/ui/specialization/issue-39448.rs +++ /dev/null @@ -1,50 +0,0 @@ -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Regression test for a specialization-related ICE (#39448). - -trait A: Sized { - fn foo(self, _: Self) -> Self { - self - } -} - -impl A for u8 {} -impl A for u16 {} - -impl FromA for u16 { - fn from(x: u8) -> u16 { - x as u16 - } -} - -trait FromA { - fn from(t: T) -> Self; -} - -impl> FromA for U { - default fn from(x: T) -> Self { - ToA::to(x) - } -} - -trait ToA { - fn to(self) -> T; -} - -impl ToA for T -where - U: FromA, -{ - fn to(self) -> U { - U::from(self) - } -} - -#[allow(dead_code)] -fn foo(x: T, y: U) -> U { - x.foo(y.to()).to() //~ ERROR overflow evaluating the requirement -} - -fn main() { - let z = foo(8u8, 1u16); -} diff --git a/src/test/ui/specialization/issue-39448.stderr b/src/test/ui/specialization/issue-39448.stderr deleted file mode 100644 index 60157d9a3..000000000 --- a/src/test/ui/specialization/issue-39448.stderr +++ /dev/null @@ -1,30 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-39448.rs:1:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0275]: overflow evaluating the requirement `T: FromA` - --> $DIR/issue-39448.rs:45:13 - | -LL | x.foo(y.to()).to() - | ^^ - | -note: required for `T` to implement `FromA` - --> $DIR/issue-39448.rs:24:29 - | -LL | impl> FromA for U { - | ^^^^^^^^ ^ -note: required for `U` to implement `ToA` - --> $DIR/issue-39448.rs:34:12 - | -LL | impl ToA for T - | ^^^^^^ ^ - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0275`. diff --git a/src/test/ui/specialization/issue-39618.rs b/src/test/ui/specialization/issue-39618.rs deleted file mode 100644 index 72630ee9c..000000000 --- a/src/test/ui/specialization/issue-39618.rs +++ /dev/null @@ -1,27 +0,0 @@ -// Regression test for #39618, shouldn't crash. -// FIXME(JohnTitor): Centril pointed out this looks suspicions, we should revisit here. -// More context: https://github.com/rust-lang/rust/pull/69192#discussion_r379846796 - -// check-pass - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Foo { - fn foo(&self); -} - -trait Bar { - fn bar(&self); -} - -impl Bar for T where T: Foo { - fn bar(&self) {} -} - -impl Foo for T where T: Bar { - fn foo(&self) {} -} - -impl Foo for u64 {} - -fn main() {} diff --git a/src/test/ui/specialization/issue-39618.stderr b/src/test/ui/specialization/issue-39618.stderr deleted file mode 100644 index 19de60c7c..000000000 --- a/src/test/ui/specialization/issue-39618.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-39618.rs:7:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/issue-43037.current.stderr b/src/test/ui/specialization/issue-43037.current.stderr deleted file mode 100644 index 26db9d7c9..000000000 --- a/src/test/ui/specialization/issue-43037.current.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0210]: type parameter `T` must be used as the type parameter for some local type (e.g., `MyStruct`) - --> $DIR/issue-43037.rs:19:6 - | -LL | impl From< as Z>::Assoc> for T {} - | ^ type parameter `T` must be used as the type parameter for some local type - | - = note: implementing a foreign trait is only possible if at least one of the types for which it is implemented is local - = note: only traits defined in the current crate can be implemented for a type parameter - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0210`. diff --git a/src/test/ui/specialization/issue-43037.negative.stderr b/src/test/ui/specialization/issue-43037.negative.stderr deleted file mode 100644 index 26db9d7c9..000000000 --- a/src/test/ui/specialization/issue-43037.negative.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0210]: type parameter `T` must be used as the type parameter for some local type (e.g., `MyStruct`) - --> $DIR/issue-43037.rs:19:6 - | -LL | impl From< as Z>::Assoc> for T {} - | ^ type parameter `T` must be used as the type parameter for some local type - | - = note: implementing a foreign trait is only possible if at least one of the types for which it is implemented is local - = note: only traits defined in the current crate can be implemented for a type parameter - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0210`. diff --git a/src/test/ui/specialization/issue-43037.rs b/src/test/ui/specialization/issue-43037.rs deleted file mode 100644 index a1e3f998b..000000000 --- a/src/test/ui/specialization/issue-43037.rs +++ /dev/null @@ -1,22 +0,0 @@ -// revisions: current negative -#![feature(specialization)] -#![cfg_attr(negative, feature(with_negative_coherence))] -#![allow(incomplete_features)] - -trait X {} -trait Y: X {} -trait Z { - type Assoc: Y; -} -struct A(T); - -impl Y for T where T: X {} -impl Z for A { - type Assoc = T; -} - -// this impl is invalid, but causes an ICE anyway -impl From< as Z>::Assoc> for T {} -//~^ ERROR type parameter `T` must be used as the type parameter for some local type (e.g., `MyStruct`) - -fn main() {} diff --git a/src/test/ui/specialization/issue-44861.rs b/src/test/ui/specialization/issue-44861.rs deleted file mode 100644 index 79d9b9490..000000000 --- a/src/test/ui/specialization/issue-44861.rs +++ /dev/null @@ -1,40 +0,0 @@ -#![crate_type = "lib"] -#![feature(specialization)] -#![feature(unsize, coerce_unsized)] -#![allow(incomplete_features)] - -use std::ops::CoerceUnsized; - -pub struct SmartassPtr(A::Data); - -pub trait Smartass { - type Data; - type Data2: CoerceUnsized<*const [u8]>; -} - -pub trait MaybeObjectSafe {} - -impl MaybeObjectSafe for () {} - -impl Smartass for T { - type Data = ::Data2; - default type Data2 = (); - //~^ ERROR: the trait bound `(): CoerceUnsized<*const [u8]>` is not satisfied -} - -impl Smartass for () { - type Data2 = *const [u8; 1]; -} - -impl Smartass for dyn MaybeObjectSafe { - type Data = *const [u8]; - type Data2 = *const [u8; 0]; -} - -impl CoerceUnsized> for SmartassPtr - where ::Data: std::ops::CoerceUnsized<::Data> -{} - -pub fn conv(s: SmartassPtr<()>) -> SmartassPtr { - s -} diff --git a/src/test/ui/specialization/issue-44861.stderr b/src/test/ui/specialization/issue-44861.stderr deleted file mode 100644 index 1941d40fe..000000000 --- a/src/test/ui/specialization/issue-44861.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0277]: the trait bound `(): CoerceUnsized<*const [u8]>` is not satisfied - --> $DIR/issue-44861.rs:21:26 - | -LL | default type Data2 = (); - | ^^ the trait `CoerceUnsized<*const [u8]>` is not implemented for `()` - | -note: required by a bound in `Smartass::Data2` - --> $DIR/issue-44861.rs:12:17 - | -LL | type Data2: CoerceUnsized<*const [u8]>; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `Smartass::Data2` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/specialization/issue-45814.current.stderr b/src/test/ui/specialization/issue-45814.current.stderr deleted file mode 100644 index 5013559b8..000000000 --- a/src/test/ui/specialization/issue-45814.current.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error[E0275]: overflow evaluating the requirement `T: Trait<_>` - | - = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`issue_45814`) -note: required for `T` to implement `Trait<_>` - --> $DIR/issue-45814.rs:9:20 - | -LL | default impl Trait for U {} - | ^^^^^^^^ ^ - = note: 128 redundant requirements hidden - = note: required for `T` to implement `Trait<_>` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0275`. diff --git a/src/test/ui/specialization/issue-45814.negative.stderr b/src/test/ui/specialization/issue-45814.negative.stderr deleted file mode 100644 index 5013559b8..000000000 --- a/src/test/ui/specialization/issue-45814.negative.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error[E0275]: overflow evaluating the requirement `T: Trait<_>` - | - = help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`issue_45814`) -note: required for `T` to implement `Trait<_>` - --> $DIR/issue-45814.rs:9:20 - | -LL | default impl Trait for U {} - | ^^^^^^^^ ^ - = note: 128 redundant requirements hidden - = note: required for `T` to implement `Trait<_>` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0275`. diff --git a/src/test/ui/specialization/issue-45814.rs b/src/test/ui/specialization/issue-45814.rs deleted file mode 100644 index fce236390..000000000 --- a/src/test/ui/specialization/issue-45814.rs +++ /dev/null @@ -1,13 +0,0 @@ -//~ ERROR overflow evaluating the requirement `T: Trait<_>` -// revisions: current negative -#![feature(specialization)] -#![cfg_attr(negative, feature(with_negative_coherence))] -#![allow(incomplete_features)] - -pub trait Trait {} - -default impl Trait for U {} - -impl Trait<::Item> for T {} - -fn main() {} diff --git a/src/test/ui/specialization/issue-50452-fail.rs b/src/test/ui/specialization/issue-50452-fail.rs deleted file mode 100644 index fe21e9b6e..000000000 --- a/src/test/ui/specialization/issue-50452-fail.rs +++ /dev/null @@ -1,21 +0,0 @@ -#![feature(specialization)] -//~^ WARN the feature `specialization` is incomplete - -pub trait Foo { - fn foo(); -} - -impl Foo for i32 {} -impl Foo for i64 { - fn foo() {} - //~^ERROR `foo` specializes an item from a parent `impl` -} -impl Foo for T { - fn foo() {} -} - -fn main() { - i32::foo(); - i64::foo(); - u8::foo(); -} diff --git a/src/test/ui/specialization/issue-50452-fail.stderr b/src/test/ui/specialization/issue-50452-fail.stderr deleted file mode 100644 index 5c136adc4..000000000 --- a/src/test/ui/specialization/issue-50452-fail.stderr +++ /dev/null @@ -1,24 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-50452-fail.rs:1:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/issue-50452-fail.rs:10:5 - | -LL | fn foo() {} - | ^^^^^^^^^^^ cannot specialize default item `foo` -... -LL | impl Foo for T { - | ----------------- parent `impl` is here - | - = note: to specialize, `foo` in the parent `impl` must be marked `default` - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0520`. diff --git a/src/test/ui/specialization/issue-50452.rs b/src/test/ui/specialization/issue-50452.rs deleted file mode 100644 index 29fc12066..000000000 --- a/src/test/ui/specialization/issue-50452.rs +++ /dev/null @@ -1,19 +0,0 @@ -// run-pass - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -pub trait Foo { - fn foo(); -} - -impl Foo for i32 {} -impl Foo for i64 {} -impl Foo for T { - fn foo() {} -} - -fn main() { - i32::foo(); - i64::foo(); - u8::foo(); -} diff --git a/src/test/ui/specialization/issue-50452.stderr b/src/test/ui/specialization/issue-50452.stderr deleted file mode 100644 index 48cab9dcd..000000000 --- a/src/test/ui/specialization/issue-50452.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-50452.rs:3:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/issue-51892.rs b/src/test/ui/specialization/issue-51892.rs deleted file mode 100644 index 5c0625414..000000000 --- a/src/test/ui/specialization/issue-51892.rs +++ /dev/null @@ -1,18 +0,0 @@ -#![allow(incomplete_features)] -#![feature(generic_const_exprs)] -#![feature(specialization)] - -pub trait Trait { - type Type; -} - -impl Trait for T { - default type Type = [u8; 1]; -} - -impl Trait for *const T { - type Type = [u8; std::mem::size_of::<::Type>()]; - //~^ ERROR: unconstrained generic constant -} - -fn main() {} diff --git a/src/test/ui/specialization/issue-51892.stderr b/src/test/ui/specialization/issue-51892.stderr deleted file mode 100644 index cb46db836..000000000 --- a/src/test/ui/specialization/issue-51892.stderr +++ /dev/null @@ -1,10 +0,0 @@ -error: unconstrained generic constant - --> $DIR/issue-51892.rs:14:17 - | -LL | type Type = [u8; std::mem::size_of::<::Type>()]; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: try adding a `where` bound using this expression: `where [(); std::mem::size_of::<::Type>()]:` - -error: aborting due to previous error - diff --git a/src/test/ui/specialization/issue-52050.rs b/src/test/ui/specialization/issue-52050.rs deleted file mode 100644 index 804658702..000000000 --- a/src/test/ui/specialization/issue-52050.rs +++ /dev/null @@ -1,32 +0,0 @@ -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Regression test for #52050: when inserting the blanket impl `I` -// into the tree, we had to replace the child node for `Foo`, which -// led to the structure of the tree being messed up. - -use std::iter::Iterator; - -trait IntoPyDictPointer { } - -struct Foo { } - -impl Iterator for Foo { - type Item = (); - fn next(&mut self) -> Option<()> { - None - } -} - -impl IntoPyDictPointer for Foo { } - -impl IntoPyDictPointer for I -where - I: Iterator, -{ -} - -impl IntoPyDictPointer for () //~ ERROR conflicting implementations -{ -} - -fn main() { } diff --git a/src/test/ui/specialization/issue-52050.stderr b/src/test/ui/specialization/issue-52050.stderr deleted file mode 100644 index c263fe467..000000000 --- a/src/test/ui/specialization/issue-52050.stderr +++ /dev/null @@ -1,24 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-52050.rs:1:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0119]: conflicting implementations of trait `IntoPyDictPointer` for type `()` - --> $DIR/issue-52050.rs:28:1 - | -LL | impl IntoPyDictPointer for I - | ------------------------------- first implementation here -... -LL | impl IntoPyDictPointer for () - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `()` - | - = note: upstream crates may add a new impl of trait `std::iter::Iterator` for type `()` in future versions - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0119`. diff --git a/src/test/ui/specialization/issue-59435.rs b/src/test/ui/specialization/issue-59435.rs deleted file mode 100644 index 323900256..000000000 --- a/src/test/ui/specialization/issue-59435.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![feature(specialization)] -#![allow(incomplete_features)] - -struct MyStruct {} - -trait MyTrait { - type MyType: Default; -} - -impl MyTrait for i32 { - default type MyType = MyStruct; - //~^ ERROR: the trait bound `MyStruct: Default` is not satisfied -} - -fn main() { - let _x: ::MyType = ::MyType::default(); -} diff --git a/src/test/ui/specialization/issue-59435.stderr b/src/test/ui/specialization/issue-59435.stderr deleted file mode 100644 index 211459406..000000000 --- a/src/test/ui/specialization/issue-59435.stderr +++ /dev/null @@ -1,19 +0,0 @@ -error[E0277]: the trait bound `MyStruct: Default` is not satisfied - --> $DIR/issue-59435.rs:11:27 - | -LL | default type MyType = MyStruct; - | ^^^^^^^^ the trait `Default` is not implemented for `MyStruct` - | -note: required by a bound in `MyTrait::MyType` - --> $DIR/issue-59435.rs:7:18 - | -LL | type MyType: Default; - | ^^^^^^^ required by this bound in `MyTrait::MyType` -help: consider annotating `MyStruct` with `#[derive(Default)]` - | -LL | #[derive(Default)] - | - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/specialization/issue-63716-parse-async.rs b/src/test/ui/specialization/issue-63716-parse-async.rs deleted file mode 100644 index 10f185c33..000000000 --- a/src/test/ui/specialization/issue-63716-parse-async.rs +++ /dev/null @@ -1,14 +0,0 @@ -// Ensure that `default async fn` will parse. -// See issue #63716 for details. - -// check-pass -// edition:2018 - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -fn main() {} - -#[cfg(FALSE)] -impl Foo for Bar { - default async fn baz() {} -} diff --git a/src/test/ui/specialization/issue-63716-parse-async.stderr b/src/test/ui/specialization/issue-63716-parse-async.stderr deleted file mode 100644 index a00572da8..000000000 --- a/src/test/ui/specialization/issue-63716-parse-async.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-63716-parse-async.rs:7:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/issue-68830-spurious-diagnostics.rs b/src/test/ui/specialization/issue-68830-spurious-diagnostics.rs deleted file mode 100644 index d11ec7983..000000000 --- a/src/test/ui/specialization/issue-68830-spurious-diagnostics.rs +++ /dev/null @@ -1,23 +0,0 @@ -// A regression test for #68830. This checks we don't emit -// a verbose `conflicting implementations` error. - -#![feature(specialization)] -#![allow(incomplete_features)] - -struct BadStruct { - err: MissingType //~ ERROR: cannot find type `MissingType` in this scope -} - -trait MyTrait { - fn foo(); -} - -impl MyTrait for D { - default fn foo() {} -} - -impl MyTrait for BadStruct { - fn foo() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/issue-68830-spurious-diagnostics.stderr b/src/test/ui/specialization/issue-68830-spurious-diagnostics.stderr deleted file mode 100644 index 833f61dca..000000000 --- a/src/test/ui/specialization/issue-68830-spurious-diagnostics.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0412]: cannot find type `MissingType` in this scope - --> $DIR/issue-68830-spurious-diagnostics.rs:8:10 - | -LL | err: MissingType - | ^^^^^^^^^^^ not found in this scope - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0412`. diff --git a/src/test/ui/specialization/issue-70442.rs b/src/test/ui/specialization/issue-70442.rs deleted file mode 100644 index d41b5355c..000000000 --- a/src/test/ui/specialization/issue-70442.rs +++ /dev/null @@ -1,23 +0,0 @@ -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// check-pass - -trait Trait { - type Assoc; -} - -impl Trait for T { - default type Assoc = bool; -} - -// This impl inherits the `Assoc` definition from above and "locks it in", or finalizes it, making -// child impls unable to further specialize it. However, since the specialization graph didn't -// correctly track this, we would refuse to project `Assoc` from this impl, even though that should -// happen for items that are final. -impl Trait for () {} - -fn foo>() {} - -fn main() { - foo::<()>(); // `<() as Trait>::Assoc` is normalized to `bool` correctly -} diff --git a/src/test/ui/specialization/issue-70442.stderr b/src/test/ui/specialization/issue-70442.stderr deleted file mode 100644 index aa72c3286..000000000 --- a/src/test/ui/specialization/issue-70442.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/issue-70442.rs:1:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/min_specialization/auxiliary/specialization-trait.rs b/src/test/ui/specialization/min_specialization/auxiliary/specialization-trait.rs deleted file mode 100644 index 6ec0d261d..000000000 --- a/src/test/ui/specialization/min_specialization/auxiliary/specialization-trait.rs +++ /dev/null @@ -1,6 +0,0 @@ -#![feature(rustc_attrs)] - -#[rustc_specialization_trait] -pub trait SpecTrait { - fn method(&self); -} diff --git a/src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.rs b/src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.rs deleted file mode 100644 index 03cab00b0..000000000 --- a/src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.rs +++ /dev/null @@ -1,32 +0,0 @@ -// Test that associated types in trait objects are not considered to be -// constrained. - -#![feature(min_specialization)] - -trait Specializable { - fn f(); -} - -trait B { - type Y; -} - -trait C { - type Y; -} - -impl Specializable for A { - default fn f() {} -} - -impl<'a, T> Specializable for dyn B + 'a { - //~^ ERROR specializing impl repeats parameter `T` - fn f() {} -} - -impl<'a, T> Specializable for dyn C + 'a { - //~^ ERROR specializing impl repeats parameter `T` - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.stderr b/src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.stderr deleted file mode 100644 index db5558f16..000000000 --- a/src/test/ui/specialization/min_specialization/dyn-trait-assoc-types.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: specializing impl repeats parameter `T` - --> $DIR/dyn-trait-assoc-types.rs:22:1 - | -LL | impl<'a, T> Specializable for dyn B + 'a { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: specializing impl repeats parameter `T` - --> $DIR/dyn-trait-assoc-types.rs:27:1 - | -LL | impl<'a, T> Specializable for dyn C + 'a { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 2 previous errors - diff --git a/src/test/ui/specialization/min_specialization/impl-on-nonexisting.rs b/src/test/ui/specialization/min_specialization/impl-on-nonexisting.rs deleted file mode 100644 index 77a64320d..000000000 --- a/src/test/ui/specialization/min_specialization/impl-on-nonexisting.rs +++ /dev/null @@ -1,7 +0,0 @@ -#![feature(min_specialization)] - -trait Trait {} -impl Trait for NonExistent {} -//~^ ERROR cannot find type `NonExistent` in this scope - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/impl-on-nonexisting.stderr b/src/test/ui/specialization/min_specialization/impl-on-nonexisting.stderr deleted file mode 100644 index b032ccbe5..000000000 --- a/src/test/ui/specialization/min_specialization/impl-on-nonexisting.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0412]: cannot find type `NonExistent` in this scope - --> $DIR/impl-on-nonexisting.rs:4:16 - | -LL | impl Trait for NonExistent {} - | ^^^^^^^^^^^ not found in this scope - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0412`. diff --git a/src/test/ui/specialization/min_specialization/impl_specialization_trait.rs b/src/test/ui/specialization/min_specialization/impl_specialization_trait.rs deleted file mode 100644 index 723ed71c3..000000000 --- a/src/test/ui/specialization/min_specialization/impl_specialization_trait.rs +++ /dev/null @@ -1,16 +0,0 @@ -// Check that specialization traits can't be implemented without a feature. - -// gate-test-min_specialization - -// aux-build:specialization-trait.rs - -extern crate specialization_trait; - -struct A {} - -impl specialization_trait::SpecTrait for A { - //~^ ERROR implementing `rustc_specialization_trait` traits is unstable - fn method(&self) {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/impl_specialization_trait.stderr b/src/test/ui/specialization/min_specialization/impl_specialization_trait.stderr deleted file mode 100644 index 934103d49..000000000 --- a/src/test/ui/specialization/min_specialization/impl_specialization_trait.stderr +++ /dev/null @@ -1,10 +0,0 @@ -error: implementing `rustc_specialization_trait` traits is unstable - --> $DIR/impl_specialization_trait.rs:11:1 - | -LL | impl specialization_trait::SpecTrait for A { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: add `#![feature(min_specialization)]` to the crate attributes to enable - -error: aborting due to previous error - diff --git a/src/test/ui/specialization/min_specialization/implcit-well-formed-bounds.rs b/src/test/ui/specialization/min_specialization/implcit-well-formed-bounds.rs deleted file mode 100644 index 98d7f9194..000000000 --- a/src/test/ui/specialization/min_specialization/implcit-well-formed-bounds.rs +++ /dev/null @@ -1,30 +0,0 @@ -// Test that specializing on the well-formed predicates of the trait and -// self-type of an impl is allowed. - -// check-pass - -#![feature(min_specialization)] - -struct OrdOnly(T); - -trait SpecTrait { - fn f(); -} - -impl SpecTrait for T { - default fn f() {} -} - -impl SpecTrait<()> for OrdOnly { - fn f() {} -} - -impl SpecTrait> for () { - fn f() {} -} - -impl SpecTrait<(OrdOnly, OrdOnly)> for &[OrdOnly] { - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/issue-79224.rs b/src/test/ui/specialization/min_specialization/issue-79224.rs deleted file mode 100644 index 408732fe9..000000000 --- a/src/test/ui/specialization/min_specialization/issue-79224.rs +++ /dev/null @@ -1,24 +0,0 @@ -#![feature(min_specialization)] -use std::fmt::{self, Display}; - -pub enum Cow<'a, B: ?Sized + 'a, O = ::Owned> -where - B: ToOwned, -{ - Borrowed(&'a B), - Owned(O), -} - -impl ToString for Cow<'_, str> { - fn to_string(&self) -> String { - String::new() - } -} - -impl Display for Cow<'_, B> { //~ ERROR: the trait bound `B: Clone` is not satisfied [E0277] - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { //~ ERROR: the trait bound `B: Clone` is not satisfied [E0277] - write!(f, "foo") - } -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/issue-79224.stderr b/src/test/ui/specialization/min_specialization/issue-79224.stderr deleted file mode 100644 index fd34a59d2..000000000 --- a/src/test/ui/specialization/min_specialization/issue-79224.stderr +++ /dev/null @@ -1,33 +0,0 @@ -error[E0277]: the trait bound `B: Clone` is not satisfied - --> $DIR/issue-79224.rs:18:1 - | -LL | / impl Display for Cow<'_, B> { -LL | | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { -LL | | write!(f, "foo") -LL | | } -LL | | } - | |_^ the trait `Clone` is not implemented for `B` - | - = note: required for `B` to implement `ToOwned` -help: consider further restricting this bound - | -LL | impl Display for Cow<'_, B> { - | +++++++++++++++++++ - -error[E0277]: the trait bound `B: Clone` is not satisfied - --> $DIR/issue-79224.rs:19:5 - | -LL | / fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { -LL | | write!(f, "foo") -LL | | } - | |_____^ the trait `Clone` is not implemented for `B` - | - = note: required for `B` to implement `ToOwned` -help: consider further restricting this bound - | -LL | impl Display for Cow<'_, B> { - | +++++++++++++++++++ - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0277`. diff --git a/src/test/ui/specialization/min_specialization/repeated_projection_type.rs b/src/test/ui/specialization/min_specialization/repeated_projection_type.rs deleted file mode 100644 index f21f39f06..000000000 --- a/src/test/ui/specialization/min_specialization/repeated_projection_type.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Test that projection bounds can't be specialized on. - -#![feature(min_specialization)] - -trait X { - fn f(); -} -trait Id { - type This; -} -impl Id for T { - type This = T; -} - -impl X for T { - default fn f() {} -} - -impl> X for V { - //~^ ERROR cannot specialize on - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/repeated_projection_type.stderr b/src/test/ui/specialization/min_specialization/repeated_projection_type.stderr deleted file mode 100644 index a751ba793..000000000 --- a/src/test/ui/specialization/min_specialization/repeated_projection_type.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: cannot specialize on associated type `::This == (I,)` - --> $DIR/repeated_projection_type.rs:19:15 - | -LL | impl> X for V { - | ^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/specialization/min_specialization/repeating_lifetimes.rs b/src/test/ui/specialization/min_specialization/repeating_lifetimes.rs deleted file mode 100644 index 49bfacec0..000000000 --- a/src/test/ui/specialization/min_specialization/repeating_lifetimes.rs +++ /dev/null @@ -1,19 +0,0 @@ -// Test that directly specializing on repeated lifetime parameters is not -// allowed. - -#![feature(min_specialization)] - -trait X { - fn f(); -} - -impl X for T { - default fn f() {} -} - -impl<'a> X for (&'a u8, &'a u8) { - //~^ ERROR specializing impl repeats parameter `'a` - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/repeating_lifetimes.stderr b/src/test/ui/specialization/min_specialization/repeating_lifetimes.stderr deleted file mode 100644 index 16dccb10b..000000000 --- a/src/test/ui/specialization/min_specialization/repeating_lifetimes.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: specializing impl repeats parameter `'a` - --> $DIR/repeating_lifetimes.rs:14:1 - | -LL | impl<'a> X for (&'a u8, &'a u8) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/specialization/min_specialization/repeating_param.rs b/src/test/ui/specialization/min_specialization/repeating_param.rs deleted file mode 100644 index 5a1c97fd3..000000000 --- a/src/test/ui/specialization/min_specialization/repeating_param.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Test that specializing on two type parameters being equal is not allowed. - -#![feature(min_specialization)] - -trait X { - fn f(); -} - -impl X for T { - default fn f() {} -} -impl X for (T, T) { - //~^ ERROR specializing impl repeats parameter `T` - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/repeating_param.stderr b/src/test/ui/specialization/min_specialization/repeating_param.stderr deleted file mode 100644 index 5e6adf723..000000000 --- a/src/test/ui/specialization/min_specialization/repeating_param.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: specializing impl repeats parameter `T` - --> $DIR/repeating_param.rs:12:1 - | -LL | impl X for (T, T) { - | ^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/specialization/min_specialization/spec-iter.rs b/src/test/ui/specialization/min_specialization/spec-iter.rs deleted file mode 100644 index e17e9dd5f..000000000 --- a/src/test/ui/specialization/min_specialization/spec-iter.rs +++ /dev/null @@ -1,20 +0,0 @@ -// Check that we can specialize on a concrete iterator type. This requires us -// to consider which parameters in the parent impl are constrained. - -// check-pass - -#![feature(min_specialization)] - -trait SpecFromIter { - fn f(&self); -} - -impl<'a, T: 'a, I: Iterator> SpecFromIter for I { - default fn f(&self) {} -} - -impl<'a, T> SpecFromIter for std::slice::Iter<'a, T> { - fn f(&self) {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/spec-marker-supertraits.rs b/src/test/ui/specialization/min_specialization/spec-marker-supertraits.rs deleted file mode 100644 index 3bb2480e9..000000000 --- a/src/test/ui/specialization/min_specialization/spec-marker-supertraits.rs +++ /dev/null @@ -1,29 +0,0 @@ -// Check that supertraits cannot be used to work around min_specialization -// limitations. - -#![feature(min_specialization)] -#![feature(rustc_attrs)] - -trait HasMethod { - fn method(&self); -} - -#[rustc_unsafe_specialization_marker] -trait Marker: HasMethod {} - -trait Spec { - fn spec_me(&self); -} - -impl Spec for T { - default fn spec_me(&self) {} -} - -impl Spec for T { - //~^ ERROR cannot specialize on trait `HasMethod` - fn spec_me(&self) { - self.method(); - } -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/spec-marker-supertraits.stderr b/src/test/ui/specialization/min_specialization/spec-marker-supertraits.stderr deleted file mode 100644 index ba9d6bbe3..000000000 --- a/src/test/ui/specialization/min_specialization/spec-marker-supertraits.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: cannot specialize on trait `HasMethod` - --> $DIR/spec-marker-supertraits.rs:22:9 - | -LL | impl Spec for T { - | ^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/specialization/min_specialization/spec-reference.rs b/src/test/ui/specialization/min_specialization/spec-reference.rs deleted file mode 100644 index 377889e2c..000000000 --- a/src/test/ui/specialization/min_specialization/spec-reference.rs +++ /dev/null @@ -1,19 +0,0 @@ -// Check that lifetime parameters are allowed in specializing impls. - -// check-pass - -#![feature(min_specialization)] - -trait MySpecTrait { - fn f(); -} - -impl MySpecTrait for T { - default fn f() {} -} - -impl<'a, T: ?Sized> MySpecTrait for &'a T { - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/specialization_marker.rs b/src/test/ui/specialization/min_specialization/specialization_marker.rs deleted file mode 100644 index 93462d02e..000000000 --- a/src/test/ui/specialization/min_specialization/specialization_marker.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Test that `rustc_unsafe_specialization_marker` is only allowed on marker traits. - -#![feature(rustc_attrs)] - -#[rustc_unsafe_specialization_marker] -trait SpecMarker { - fn f(); - //~^ ERROR marker traits -} - -#[rustc_unsafe_specialization_marker] -trait SpecMarker2 { - type X; - //~^ ERROR marker traits -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/specialization_marker.stderr b/src/test/ui/specialization/min_specialization/specialization_marker.stderr deleted file mode 100644 index b47c14f3c..000000000 --- a/src/test/ui/specialization/min_specialization/specialization_marker.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0714]: marker traits cannot have associated items - --> $DIR/specialization_marker.rs:7:5 - | -LL | fn f(); - | ^^^^^^^ - -error[E0714]: marker traits cannot have associated items - --> $DIR/specialization_marker.rs:13:5 - | -LL | type X; - | ^^^^^^ - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0714`. diff --git a/src/test/ui/specialization/min_specialization/specialization_super_trait.rs b/src/test/ui/specialization/min_specialization/specialization_super_trait.rs deleted file mode 100644 index 145f376ed..000000000 --- a/src/test/ui/specialization/min_specialization/specialization_super_trait.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Test that supertraits can't be assumed in impls of -// `rustc_specialization_trait`, as such impls would -// allow specializing on the supertrait. - -#![feature(min_specialization)] -#![feature(rustc_attrs)] - -#[rustc_specialization_trait] -trait SpecMarker: Default { - fn f(); -} - -impl SpecMarker for T { - //~^ ERROR cannot specialize - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/specialization_super_trait.stderr b/src/test/ui/specialization/min_specialization/specialization_super_trait.stderr deleted file mode 100644 index e93578662..000000000 --- a/src/test/ui/specialization/min_specialization/specialization_super_trait.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: cannot specialize on trait `Default` - --> $DIR/specialization_super_trait.rs:13:9 - | -LL | impl SpecMarker for T { - | ^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/specialization/min_specialization/specialization_trait.rs b/src/test/ui/specialization/min_specialization/specialization_trait.rs deleted file mode 100644 index d597278d2..000000000 --- a/src/test/ui/specialization/min_specialization/specialization_trait.rs +++ /dev/null @@ -1,26 +0,0 @@ -// Test that `rustc_specialization_trait` requires always applicable impls. - -#![feature(min_specialization)] -#![feature(rustc_attrs)] - -#[rustc_specialization_trait] -trait SpecMarker { - fn f(); -} - -impl SpecMarker for &'static u8 { - //~^ ERROR cannot specialize - fn f() {} -} - -impl SpecMarker for (T, T) { - //~^ ERROR specializing impl - fn f() {} -} - -impl SpecMarker for [T] { - //~^ ERROR cannot specialize - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/specialization_trait.stderr b/src/test/ui/specialization/min_specialization/specialization_trait.stderr deleted file mode 100644 index bc87ae0f8..000000000 --- a/src/test/ui/specialization/min_specialization/specialization_trait.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error: cannot specialize on `'static` lifetime - --> $DIR/specialization_trait.rs:11:1 - | -LL | impl SpecMarker for &'static u8 { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: specializing impl repeats parameter `T` - --> $DIR/specialization_trait.rs:16:1 - | -LL | impl SpecMarker for (T, T) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: cannot specialize on trait `Clone` - --> $DIR/specialization_trait.rs:21:9 - | -LL | impl SpecMarker for [T] { - | ^^^^^ - -error: aborting due to 3 previous errors - diff --git a/src/test/ui/specialization/min_specialization/specialize_on_marker.rs b/src/test/ui/specialization/min_specialization/specialize_on_marker.rs deleted file mode 100644 index 4219bd13b..000000000 --- a/src/test/ui/specialization/min_specialization/specialize_on_marker.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Test that specializing on a `rustc_unsafe_specialization_marker` trait is -// allowed. - -// check-pass - -#![feature(min_specialization)] -#![feature(rustc_attrs)] - -#[rustc_unsafe_specialization_marker] -trait SpecMarker {} - -trait X { - fn f(); -} - -impl X for T { - default fn f() {} -} - -impl X for T { - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/specialize_on_spec_trait.rs b/src/test/ui/specialization/min_specialization/specialize_on_spec_trait.rs deleted file mode 100644 index abbab5c23..000000000 --- a/src/test/ui/specialization/min_specialization/specialize_on_spec_trait.rs +++ /dev/null @@ -1,27 +0,0 @@ -// Test that specializing on a `rustc_specialization_trait` trait is allowed. - -// check-pass - -#![feature(min_specialization)] -#![feature(rustc_attrs)] - -#[rustc_specialization_trait] -trait SpecTrait { - fn g(&self); -} - -trait X { - fn f(&self); -} - -impl X for T { - default fn f(&self) {} -} - -impl X for T { - fn f(&self) { - self.g(); - } -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/specialize_on_static.rs b/src/test/ui/specialization/min_specialization/specialize_on_static.rs deleted file mode 100644 index dd1b05401..000000000 --- a/src/test/ui/specialization/min_specialization/specialize_on_static.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Test that directly specializing on `'static` is not allowed. - -#![feature(min_specialization)] - -trait X { - fn f(); -} - -impl X for &'_ T { - default fn f() {} -} - -impl X for &'static u8 { - //~^ ERROR cannot specialize on `'static` lifetime - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/specialize_on_static.stderr b/src/test/ui/specialization/min_specialization/specialize_on_static.stderr deleted file mode 100644 index 9a16798f1..000000000 --- a/src/test/ui/specialization/min_specialization/specialize_on_static.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: cannot specialize on `'static` lifetime - --> $DIR/specialize_on_static.rs:13:1 - | -LL | impl X for &'static u8 { - | ^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/specialization/min_specialization/specialize_on_trait.rs b/src/test/ui/specialization/min_specialization/specialize_on_trait.rs deleted file mode 100644 index 0588442c3..000000000 --- a/src/test/ui/specialization/min_specialization/specialize_on_trait.rs +++ /dev/null @@ -1,20 +0,0 @@ -// Test that specializing on a trait is not allowed in general. - -#![feature(min_specialization)] - -trait SpecMarker {} - -trait X { - fn f(); -} - -impl X for T { - default fn f() {} -} - -impl X for T { - //~^ ERROR cannot specialize on trait `SpecMarker` - fn f() {} -} - -fn main() {} diff --git a/src/test/ui/specialization/min_specialization/specialize_on_trait.stderr b/src/test/ui/specialization/min_specialization/specialize_on_trait.stderr deleted file mode 100644 index 7b79c7eb4..000000000 --- a/src/test/ui/specialization/min_specialization/specialize_on_trait.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: cannot specialize on trait `SpecMarker` - --> $DIR/specialize_on_trait.rs:15:9 - | -LL | impl X for T { - | ^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/src/test/ui/specialization/non-defaulted-item-fail.rs b/src/test/ui/specialization/non-defaulted-item-fail.rs deleted file mode 100644 index b7d6ac829..000000000 --- a/src/test/ui/specialization/non-defaulted-item-fail.rs +++ /dev/null @@ -1,54 +0,0 @@ -#![feature(specialization, associated_type_defaults)] -//~^ WARN the feature `specialization` is incomplete - -// Test that attempting to override a non-default method or one not in the -// parent impl causes an error. - -trait Foo { - type Ty = (); - const CONST: u8 = 123; - fn foo(&self) -> bool { true } -} - -// Specialization tree for Foo: -// -// Box Vec -// / \ / \ -// Box Box Vec<()> Vec - -impl Foo for Box { - type Ty = bool; - const CONST: u8 = 0; - fn foo(&self) -> bool { false } -} - -// Allowed -impl Foo for Box {} - -// Can't override a non-`default` fn -impl Foo for Box { - type Ty = Vec<()>; -//~^ error: `Ty` specializes an item from a parent `impl`, but that item is not marked `default` - const CONST: u8 = 42; -//~^ error: `CONST` specializes an item from a parent `impl`, but that item is not marked `default` - fn foo(&self) -> bool { true } -//~^ error: `foo` specializes an item from a parent `impl`, but that item is not marked `default` -} - - -// Doesn't mention the item = provided body/value is used and the method is final. -impl Foo for Vec {} - -// Allowed -impl Foo for Vec<()> {} - -impl Foo for Vec { - type Ty = Vec<()>; -//~^ error: `Ty` specializes an item from a parent `impl`, but that item is not marked `default` - const CONST: u8 = 42; -//~^ error: `CONST` specializes an item from a parent `impl`, but that item is not marked `default` - fn foo(&self) -> bool { true } -//~^ error: `foo` specializes an item from a parent `impl`, but that item is not marked `default` -} - -fn main() {} diff --git a/src/test/ui/specialization/non-defaulted-item-fail.stderr b/src/test/ui/specialization/non-defaulted-item-fail.stderr deleted file mode 100644 index faa14555a..000000000 --- a/src/test/ui/specialization/non-defaulted-item-fail.stderr +++ /dev/null @@ -1,79 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/non-defaulted-item-fail.rs:1:12 - | -LL | #![feature(specialization, associated_type_defaults)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0520]: `Ty` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/non-defaulted-item-fail.rs:30:5 - | -LL | impl Foo for Box { - | ---------------------- parent `impl` is here -... -LL | type Ty = Vec<()>; - | ^^^^^^^^^^^^^^^^^^ cannot specialize default item `Ty` - | - = note: to specialize, `Ty` in the parent `impl` must be marked `default` - -error[E0520]: `CONST` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/non-defaulted-item-fail.rs:32:5 - | -LL | impl Foo for Box { - | ---------------------- parent `impl` is here -... -LL | const CONST: u8 = 42; - | ^^^^^^^^^^^^^^^^^^^^^ cannot specialize default item `CONST` - | - = note: to specialize, `CONST` in the parent `impl` must be marked `default` - -error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/non-defaulted-item-fail.rs:34:5 - | -LL | impl Foo for Box { - | ---------------------- parent `impl` is here -... -LL | fn foo(&self) -> bool { true } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot specialize default item `foo` - | - = note: to specialize, `foo` in the parent `impl` must be marked `default` - -error[E0520]: `Ty` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/non-defaulted-item-fail.rs:46:5 - | -LL | impl Foo for Vec {} - | ---------------------- parent `impl` is here -... -LL | type Ty = Vec<()>; - | ^^^^^^^^^^^^^^^^^^ cannot specialize default item `Ty` - | - = note: to specialize, `Ty` in the parent `impl` must be marked `default` - -error[E0520]: `CONST` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/non-defaulted-item-fail.rs:48:5 - | -LL | impl Foo for Vec {} - | ---------------------- parent `impl` is here -... -LL | const CONST: u8 = 42; - | ^^^^^^^^^^^^^^^^^^^^^ cannot specialize default item `CONST` - | - = note: to specialize, `CONST` in the parent `impl` must be marked `default` - -error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/non-defaulted-item-fail.rs:50:5 - | -LL | impl Foo for Vec {} - | ---------------------- parent `impl` is here -... -LL | fn foo(&self) -> bool { true } - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot specialize default item `foo` - | - = note: to specialize, `foo` in the parent `impl` must be marked `default` - -error: aborting due to 6 previous errors; 1 warning emitted - -For more information about this error, try `rustc --explain E0520`. diff --git a/src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs b/src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs deleted file mode 100644 index 923dec892..000000000 --- a/src/test/ui/specialization/soundness/partial_eq_range_inclusive.rs +++ /dev/null @@ -1,35 +0,0 @@ -// run-pass - -use std::cell::RefCell; -use std::cmp::Ordering; - -struct Evil<'a, 'b> { - values: RefCell>, - to_insert: &'b String, -} - -impl<'a, 'b> PartialEq for Evil<'a, 'b> { - fn eq(&self, _other: &Self) -> bool { - true - } -} - -impl<'a> PartialOrd for Evil<'a, 'a> { - fn partial_cmp(&self, _other: &Self) -> Option { - self.values.borrow_mut().push(self.to_insert); - None - } -} - -fn main() { - let e; - let values; - { - let to_insert = String::from("Hello, world!"); - e = Evil { values: RefCell::new(Vec::new()), to_insert: &to_insert }; - let range = &e..=&e; - let _ = range == range; - values = e.values; - } - assert_eq!(*values.borrow(), Vec::<&str>::new()); -} diff --git a/src/test/ui/specialization/soundness/partial_ord_slice.rs b/src/test/ui/specialization/soundness/partial_ord_slice.rs deleted file mode 100644 index b9e80a48d..000000000 --- a/src/test/ui/specialization/soundness/partial_ord_slice.rs +++ /dev/null @@ -1,42 +0,0 @@ -// Check that we aren't using unsound specialization in slice comparisons. - -// run-pass - -use std::cell::Cell; -use std::cmp::Ordering; - -struct Evil<'a, 'b>(Cell<(&'a [i32], &'b [i32])>); - -impl PartialEq for Evil<'_, '_> { - fn eq(&self, _other: &Self) -> bool { - true - } -} - -impl Eq for Evil<'_, '_> {} - -impl PartialOrd for Evil<'_, '_> { - fn partial_cmp(&self, _other: &Self) -> Option { - Some(Ordering::Equal) - } -} - -impl<'a> Ord for Evil<'a, 'a> { - fn cmp(&self, _other: &Self) -> Ordering { - let (a, b) = self.0.get(); - self.0.set((b, a)); - Ordering::Equal - } -} - -fn main() { - let x = &[1, 2, 3, 4]; - let u = { - let a = Box::new([7, 8, 9, 10]); - let y = [Evil(Cell::new((x, &*a)))]; - let _ = &y[..] <= &y[..]; - let [Evil(c)] = y; - c.get().0 - }; - assert_eq!(u, &[1, 2, 3, 4]); -} diff --git a/src/test/ui/specialization/specialization-allowed-cross-crate.rs b/src/test/ui/specialization/specialization-allowed-cross-crate.rs deleted file mode 100644 index 5d67160eb..000000000 --- a/src/test/ui/specialization/specialization-allowed-cross-crate.rs +++ /dev/null @@ -1,26 +0,0 @@ -// run-pass -#![allow(dead_code)] -#![allow(unused_variables)] -#![allow(unused_imports)] - -// aux-build:go_trait.rs - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -extern crate go_trait; - -use go_trait::{Go,GoMut}; -use std::fmt::Debug; -use std::default::Default; - -struct MyThingy; - -impl Go for MyThingy { - fn go(&self, arg: isize) { } -} - -impl GoMut for MyThingy { - fn go_mut(&mut self, arg: isize) { } -} - -fn main() { } diff --git a/src/test/ui/specialization/specialization-allowed-cross-crate.stderr b/src/test/ui/specialization/specialization-allowed-cross-crate.stderr deleted file mode 100644 index 3eea4a53b..000000000 --- a/src/test/ui/specialization/specialization-allowed-cross-crate.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-allowed-cross-crate.rs:8:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-assoc-fns.rs b/src/test/ui/specialization/specialization-assoc-fns.rs deleted file mode 100644 index cbfcb4719..000000000 --- a/src/test/ui/specialization/specialization-assoc-fns.rs +++ /dev/null @@ -1,29 +0,0 @@ -// run-pass - -// Test that non-method associated functions can be specialized - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Foo { - fn mk() -> Self; -} - -impl Foo for T { - default fn mk() -> T { - T::default() - } -} - -impl Foo for Vec { - fn mk() -> Vec { - vec![0] - } -} - -fn main() { - let v1: Vec = Foo::mk(); - let v2: Vec = Foo::mk(); - - assert!(v1.len() == 0); - assert!(v2.len() == 1); -} diff --git a/src/test/ui/specialization/specialization-assoc-fns.stderr b/src/test/ui/specialization/specialization-assoc-fns.stderr deleted file mode 100644 index 69f7cece7..000000000 --- a/src/test/ui/specialization/specialization-assoc-fns.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-assoc-fns.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-basics.rs b/src/test/ui/specialization/specialization-basics.rs deleted file mode 100644 index 721c934db..000000000 --- a/src/test/ui/specialization/specialization-basics.rs +++ /dev/null @@ -1,98 +0,0 @@ -// run-pass - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Tests a variety of basic specialization scenarios and method -// dispatch for them. - -trait Foo { - fn foo(&self) -> &'static str; -} - -impl Foo for T { - default fn foo(&self) -> &'static str { - "generic" - } -} - -impl Foo for T { - default fn foo(&self) -> &'static str { - "generic Clone" - } -} - -impl Foo for (T, U) where T: Clone, U: Clone { - default fn foo(&self) -> &'static str { - "generic pair" - } -} - -impl Foo for (T, T) { - default fn foo(&self) -> &'static str { - "generic uniform pair" - } -} - -impl Foo for (u8, u32) { - default fn foo(&self) -> &'static str { - "(u8, u32)" - } -} - -impl Foo for (u8, u8) { - default fn foo(&self) -> &'static str { - "(u8, u8)" - } -} - -impl Foo for Vec { - default fn foo(&self) -> &'static str { - "generic Vec" - } -} - -impl Foo for Vec { - fn foo(&self) -> &'static str { - "Vec" - } -} - -impl Foo for String { - fn foo(&self) -> &'static str { - "String" - } -} - -impl Foo for i32 { - fn foo(&self) -> &'static str { - "i32" - } -} - -struct NotClone; - -trait MyMarker {} -impl Foo for T { - default fn foo(&self) -> &'static str { - "generic Clone + MyMarker" - } -} - -#[derive(Clone)] -struct MarkedAndClone; -impl MyMarker for MarkedAndClone {} - -fn main() { - assert!(NotClone.foo() == "generic"); - assert!(0u8.foo() == "generic Clone"); - assert!(vec![NotClone].foo() == "generic"); - assert!(vec![0u8].foo() == "generic Vec"); - assert!(vec![0i32].foo() == "Vec"); - assert!(0i32.foo() == "i32"); - assert!(String::new().foo() == "String"); - assert!(((), 0).foo() == "generic pair"); - assert!(((), ()).foo() == "generic uniform pair"); - assert!((0u8, 0u32).foo() == "(u8, u32)"); - assert!((0u8, 0u8).foo() == "(u8, u8)"); - assert!(MarkedAndClone.foo() == "generic Clone + MyMarker"); -} diff --git a/src/test/ui/specialization/specialization-basics.stderr b/src/test/ui/specialization/specialization-basics.stderr deleted file mode 100644 index 7714d4af4..000000000 --- a/src/test/ui/specialization/specialization-basics.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-basics.rs:3:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-cross-crate-no-gate.rs b/src/test/ui/specialization/specialization-cross-crate-no-gate.rs deleted file mode 100644 index f744b16de..000000000 --- a/src/test/ui/specialization/specialization-cross-crate-no-gate.rs +++ /dev/null @@ -1,21 +0,0 @@ -// run-pass - -// Test that specialization works even if only the upstream crate enables it - -// aux-build:specialization_cross_crate.rs - -extern crate specialization_cross_crate; - -use specialization_cross_crate::*; - -fn main() { - assert!(0u8.foo() == "generic Clone"); - assert!(vec![0u8].foo() == "generic Vec"); - assert!(vec![0i32].foo() == "Vec"); - assert!(0i32.foo() == "i32"); - assert!(String::new().foo() == "String"); - assert!(((), 0).foo() == "generic pair"); - assert!(((), ()).foo() == "generic uniform pair"); - assert!((0u8, 0u32).foo() == "(u8, u32)"); - assert!((0u8, 0u8).foo() == "(u8, u8)"); -} diff --git a/src/test/ui/specialization/specialization-cross-crate.rs b/src/test/ui/specialization/specialization-cross-crate.rs deleted file mode 100644 index d9381d661..000000000 --- a/src/test/ui/specialization/specialization-cross-crate.rs +++ /dev/null @@ -1,50 +0,0 @@ -// run-pass - -// aux-build:specialization_cross_crate.rs - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -extern crate specialization_cross_crate; - -use specialization_cross_crate::*; - -struct NotClone; - -#[derive(Clone)] -struct MarkedAndClone; -impl MyMarker for MarkedAndClone {} - -struct MyType(#[allow(unused_tuple_struct_fields)] T); -impl Foo for MyType { - default fn foo(&self) -> &'static str { - "generic MyType" - } -} - -impl Foo for MyType { - fn foo(&self) -> &'static str { - "MyType" - } -} - -struct MyOtherType; -impl Foo for MyOtherType {} - -fn main() { - assert!(NotClone.foo() == "generic"); - assert!(0u8.foo() == "generic Clone"); - assert!(vec![NotClone].foo() == "generic"); - assert!(vec![0u8].foo() == "generic Vec"); - assert!(vec![0i32].foo() == "Vec"); - assert!(0i32.foo() == "i32"); - assert!(String::new().foo() == "String"); - assert!(((), 0).foo() == "generic pair"); - assert!(((), ()).foo() == "generic uniform pair"); - assert!((0u8, 0u32).foo() == "(u8, u32)"); - assert!((0u8, 0u8).foo() == "(u8, u8)"); - assert!(MarkedAndClone.foo() == "generic Clone + MyMarker"); - - assert!(MyType(()).foo() == "generic MyType"); - assert!(MyType(0u8).foo() == "MyType"); - assert!(MyOtherType.foo() == "generic"); -} diff --git a/src/test/ui/specialization/specialization-cross-crate.stderr b/src/test/ui/specialization/specialization-cross-crate.stderr deleted file mode 100644 index 06818bb56..000000000 --- a/src/test/ui/specialization/specialization-cross-crate.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-cross-crate.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-default-methods.rs b/src/test/ui/specialization/specialization-default-methods.rs deleted file mode 100644 index dcf68afa9..000000000 --- a/src/test/ui/specialization/specialization-default-methods.rs +++ /dev/null @@ -1,87 +0,0 @@ -// run-pass - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Test that default methods are cascaded correctly - -// First, test only use of explicit `default` items: - -trait Foo { - fn foo(&self) -> bool; -} - -// Specialization tree for Foo: -// -// T -// / \ -// i32 i64 - -impl Foo for T { - default fn foo(&self) -> bool { false } -} - -impl Foo for i32 {} - -impl Foo for i64 { - fn foo(&self) -> bool { true } -} - -fn test_foo() { - assert!(!0i8.foo()); - assert!(!0i32.foo()); - assert!(0i64.foo()); -} - -// Next, test mixture of explicit `default` and provided methods: - -trait Bar { - fn bar(&self) -> i32 { 0 } -} - -// Specialization tree for Bar. -// Uses of $ designate that method is provided -// -// $Bar (the trait) -// | -// T -// /|\ -// / | \ -// / | \ -// / | \ -// / | \ -// / | \ -// $i32 &str $Vec -// /\ -// / \ -// Vec $Vec - -impl Bar for T { - default fn bar(&self) -> i32 { 0 } -} - -impl Bar for i32 { - fn bar(&self) -> i32 { 1 } -} -impl<'a> Bar for &'a str {} - -impl Bar for Vec { - default fn bar(&self) -> i32 { 2 } -} -impl Bar for Vec {} -impl Bar for Vec { - fn bar(&self) -> i32 { 3 } -} - -fn test_bar() { - assert!(0u8.bar() == 0); - assert!(0i32.bar() == 1); - assert!("hello".bar() == 0); - assert!(vec![()].bar() == 2); - assert!(vec![0i32].bar() == 2); - assert!(vec![0i64].bar() == 3); -} - -fn main() { - test_foo(); - test_bar(); -} diff --git a/src/test/ui/specialization/specialization-default-methods.stderr b/src/test/ui/specialization/specialization-default-methods.stderr deleted file mode 100644 index d78d30bd8..000000000 --- a/src/test/ui/specialization/specialization-default-methods.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-default-methods.rs:3:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-default-projection.rs b/src/test/ui/specialization/specialization-default-projection.rs deleted file mode 100644 index 7f3ae9512..000000000 --- a/src/test/ui/specialization/specialization-default-projection.rs +++ /dev/null @@ -1,36 +0,0 @@ -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Make sure we can't project defaulted associated types - -trait Foo { - type Assoc; -} - -impl Foo for T { - default type Assoc = (); -} - -impl Foo for u8 { - type Assoc = String; -} - -fn generic() -> ::Assoc { - // `T` could be some downstream crate type that specializes (or, - // for that matter, `u8`). - - () //~ ERROR mismatched types -} - -fn monomorphic() -> () { - // Even though we know that `()` is not specialized in a - // downstream crate, typeck refuses to project here. - - generic::<()>() //~ ERROR mismatched types -} - -fn main() { - // No error here, we CAN project from `u8`, as there is no `default` - // in that impl. - let s: String = generic::(); - println!("{}", s); // bad news if this all compiles -} diff --git a/src/test/ui/specialization/specialization-default-projection.stderr b/src/test/ui/specialization/specialization-default-projection.stderr deleted file mode 100644 index b8b81876d..000000000 --- a/src/test/ui/specialization/specialization-default-projection.stderr +++ /dev/null @@ -1,43 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-default-projection.rs:1:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0308]: mismatched types - --> $DIR/specialization-default-projection.rs:21:5 - | -LL | fn generic() -> ::Assoc { - | ----------------- expected `::Assoc` because of return type -... -LL | () - | ^^ expected associated type, found `()` - | - = note: expected associated type `::Assoc` - found unit type `()` - = help: consider constraining the associated type `::Assoc` to `()` or calling a method that returns `::Assoc` - = note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html - -error[E0308]: mismatched types - --> $DIR/specialization-default-projection.rs:28:5 - | -LL | fn monomorphic() -> () { - | -- expected `()` because of return type -... -LL | generic::<()>() - | ^^^^^^^^^^^^^^^- help: consider using a semicolon here: `;` - | | - | expected `()`, found associated type - | - = note: expected unit type `()` - found associated type `<() as Foo>::Assoc` - = help: consider constraining the associated type `<() as Foo>::Assoc` to `()` - = note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html - -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/specialization/specialization-default-types.rs b/src/test/ui/specialization/specialization-default-types.rs deleted file mode 100644 index 346471f11..000000000 --- a/src/test/ui/specialization/specialization-default-types.rs +++ /dev/null @@ -1,35 +0,0 @@ -// It should not be possible to use the concrete value of a defaulted -// associated type in the impl defining it -- otherwise, what happens -// if it's overridden? - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Example { - type Output; - fn generate(self) -> Self::Output; -} - -impl Example for T { - default type Output = Box; - default fn generate(self) -> Self::Output { - Box::new(self) //~ ERROR mismatched types - } -} - -impl Example for bool { - type Output = bool; - fn generate(self) -> bool { self } -} - -fn trouble(t: T) -> Box { - Example::generate(t) //~ ERROR mismatched types -} - -fn weaponize() -> bool { - let b: Box = trouble(true); - *b -} - -fn main() { - weaponize(); -} diff --git a/src/test/ui/specialization/specialization-default-types.stderr b/src/test/ui/specialization/specialization-default-types.stderr deleted file mode 100644 index 61a556a93..000000000 --- a/src/test/ui/specialization/specialization-default-types.stderr +++ /dev/null @@ -1,39 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-default-types.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0308]: mismatched types - --> $DIR/specialization-default-types.rs:15:9 - | -LL | default type Output = Box; - | ----------------------------- expected this associated type -LL | default fn generate(self) -> Self::Output { - | ------------ expected `::Output` because of return type -LL | Box::new(self) - | ^^^^^^^^^^^^^^ expected associated type, found struct `Box` - | - = note: expected associated type `::Output` - found struct `Box` - -error[E0308]: mismatched types - --> $DIR/specialization-default-types.rs:25:5 - | -LL | fn trouble(t: T) -> Box { - | ------ expected `Box` because of return type -LL | Example::generate(t) - | ^^^^^^^^^^^^^^^^^^^^ expected struct `Box`, found associated type - | - = note: expected struct `Box` - found associated type `::Output` - = help: consider constraining the associated type `::Output` to `Box` - = note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html - -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/specialization/specialization-feature-gate-default.rs b/src/test/ui/specialization/specialization-feature-gate-default.rs deleted file mode 100644 index 8bad3ac0a..000000000 --- a/src/test/ui/specialization/specialization-feature-gate-default.rs +++ /dev/null @@ -1,13 +0,0 @@ -// Check that specialization must be ungated to use the `default` keyword - -// gate-test-specialization - -trait Foo { - fn foo(&self); -} - -impl Foo for T { - default fn foo(&self) {} //~ ERROR specialization is unstable -} - -fn main() {} diff --git a/src/test/ui/specialization/specialization-feature-gate-default.stderr b/src/test/ui/specialization/specialization-feature-gate-default.stderr deleted file mode 100644 index 42dbb200c..000000000 --- a/src/test/ui/specialization/specialization-feature-gate-default.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0658]: specialization is unstable - --> $DIR/specialization-feature-gate-default.rs:10:5 - | -LL | default fn foo(&self) {} - | ^^^^^^^^^^^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: add `#![feature(specialization)]` to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/specialization/specialization-feature-gate-overlap.rs b/src/test/ui/specialization/specialization-feature-gate-overlap.rs deleted file mode 100644 index b83c84ab8..000000000 --- a/src/test/ui/specialization/specialization-feature-gate-overlap.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Check that writing an overlapping impl is not allow unless specialization is ungated. - -// gate-test-specialization - -trait Foo { - fn foo(&self); -} - -impl Foo for T { - fn foo(&self) {} -} - -impl Foo for u8 { //~ ERROR E0119 - fn foo(&self) {} -} - -fn main() {} diff --git a/src/test/ui/specialization/specialization-feature-gate-overlap.stderr b/src/test/ui/specialization/specialization-feature-gate-overlap.stderr deleted file mode 100644 index 9157ad0d4..000000000 --- a/src/test/ui/specialization/specialization-feature-gate-overlap.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0119]: conflicting implementations of trait `Foo` for type `u8` - --> $DIR/specialization-feature-gate-overlap.rs:13:1 - | -LL | impl Foo for T { - | ----------------- first implementation here -... -LL | impl Foo for u8 { - | ^^^^^^^^^^^^^^^ conflicting implementation for `u8` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0119`. diff --git a/src/test/ui/specialization/specialization-no-default.rs b/src/test/ui/specialization/specialization-no-default.rs deleted file mode 100644 index ae739b235..000000000 --- a/src/test/ui/specialization/specialization-no-default.rs +++ /dev/null @@ -1,77 +0,0 @@ -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Check a number of scenarios in which one impl tries to override another, -// without correctly using `default`. - -// Test 1: one layer of specialization, multiple methods, missing `default` - -trait Foo { - fn foo(&self); - fn bar(&self); -} - -impl Foo for T { - fn foo(&self) {} - fn bar(&self) {} -} - -impl Foo for u8 {} -impl Foo for u16 { - fn foo(&self) {} //~ ERROR E0520 -} -impl Foo for u32 { - fn bar(&self) {} //~ ERROR E0520 -} - -// Test 2: one layer of specialization, missing `default` on associated type - -trait Bar { - type T; -} - -impl Bar for T { - type T = u8; -} - -impl Bar for u8 { - type T = (); //~ ERROR E0520 -} - -// Test 3a: multiple layers of specialization, missing interior `default` - -trait Baz { - fn baz(&self); -} - -impl Baz for T { - default fn baz(&self) {} -} - -impl Baz for T { - fn baz(&self) {} -} - -impl Baz for i32 { - fn baz(&self) {} //~ ERROR E0520 -} - -// Test 3b: multiple layers of specialization, missing interior `default`, -// redundant `default` in bottom layer. - -trait Redundant { - fn redundant(&self); -} - -impl Redundant for T { - default fn redundant(&self) {} -} - -impl Redundant for T { - fn redundant(&self) {} -} - -impl Redundant for i32 { - default fn redundant(&self) {} //~ ERROR E0520 -} - -fn main() {} diff --git a/src/test/ui/specialization/specialization-no-default.stderr b/src/test/ui/specialization/specialization-no-default.stderr deleted file mode 100644 index 842cec9c7..000000000 --- a/src/test/ui/specialization/specialization-no-default.stderr +++ /dev/null @@ -1,68 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-no-default.rs:1:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:20:5 - | -LL | impl Foo for T { - | ----------------- parent `impl` is here -... -LL | fn foo(&self) {} - | ^^^^^^^^^^^^^^^^ cannot specialize default item `foo` - | - = note: to specialize, `foo` in the parent `impl` must be marked `default` - -error[E0520]: `bar` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:23:5 - | -LL | impl Foo for T { - | ----------------- parent `impl` is here -... -LL | fn bar(&self) {} - | ^^^^^^^^^^^^^^^^ cannot specialize default item `bar` - | - = note: to specialize, `bar` in the parent `impl` must be marked `default` - -error[E0520]: `T` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:37:5 - | -LL | impl Bar for T { - | ----------------- parent `impl` is here -... -LL | type T = (); - | ^^^^^^^^^^^^ cannot specialize default item `T` - | - = note: to specialize, `T` in the parent `impl` must be marked `default` - -error[E0520]: `baz` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:55:5 - | -LL | impl Baz for T { - | ------------------------ parent `impl` is here -... -LL | fn baz(&self) {} - | ^^^^^^^^^^^^^^^^ cannot specialize default item `baz` - | - = note: to specialize, `baz` in the parent `impl` must be marked `default` - -error[E0520]: `redundant` specializes an item from a parent `impl`, but that item is not marked `default` - --> $DIR/specialization-no-default.rs:74:5 - | -LL | impl Redundant for T { - | ------------------------------ parent `impl` is here -... -LL | default fn redundant(&self) {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot specialize default item `redundant` - | - = note: to specialize, `redundant` in the parent `impl` must be marked `default` - -error: aborting due to 5 previous errors; 1 warning emitted - -For more information about this error, try `rustc --explain E0520`. diff --git a/src/test/ui/specialization/specialization-on-projection.rs b/src/test/ui/specialization/specialization-on-projection.rs deleted file mode 100644 index be8dcc423..000000000 --- a/src/test/ui/specialization/specialization-on-projection.rs +++ /dev/null @@ -1,24 +0,0 @@ -// run-pass -#![allow(dead_code)] - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Ensure that specialization works for impls defined directly on a projection - -trait Foo {} - -trait Assoc { - type Item; -} - -impl Foo for T {} - -struct Struct; - -impl Assoc for Struct { - type Item = u8; -} - -impl Foo for Struct {} - -fn main() {} diff --git a/src/test/ui/specialization/specialization-on-projection.stderr b/src/test/ui/specialization/specialization-on-projection.stderr deleted file mode 100644 index 00fc7ffc5..000000000 --- a/src/test/ui/specialization/specialization-on-projection.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-on-projection.rs:4:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-out-of-order.rs b/src/test/ui/specialization/specialization-out-of-order.rs deleted file mode 100644 index cb7563e27..000000000 --- a/src/test/ui/specialization/specialization-out-of-order.rs +++ /dev/null @@ -1,19 +0,0 @@ -// run-pass - -// Test that you can list the more specific impl before the more general one. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Foo { - type Out; -} - -impl Foo for bool { - type Out = (); -} - -impl Foo for T { - default type Out = bool; -} - -fn main() {} diff --git a/src/test/ui/specialization/specialization-out-of-order.stderr b/src/test/ui/specialization/specialization-out-of-order.stderr deleted file mode 100644 index b524e00f0..000000000 --- a/src/test/ui/specialization/specialization-out-of-order.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-out-of-order.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-overlap-hygiene.rs b/src/test/ui/specialization/specialization-overlap-hygiene.rs deleted file mode 100644 index 93e7c8325..000000000 --- a/src/test/ui/specialization/specialization-overlap-hygiene.rs +++ /dev/null @@ -1,23 +0,0 @@ -#![feature(decl_macro)] - -struct X; - -macro_rules! define_f_legacy { () => { - fn f() {} -}} -macro define_g_modern() { - fn g() {} -} - -impl X { - fn f() {} //~ ERROR duplicate definitions with name `f` - fn g() {} // OK -} -impl X { - define_f_legacy!(); -} -impl X { - define_g_modern!(); -} - -fn main() {} diff --git a/src/test/ui/specialization/specialization-overlap-hygiene.stderr b/src/test/ui/specialization/specialization-overlap-hygiene.stderr deleted file mode 100644 index 81efd46cc..000000000 --- a/src/test/ui/specialization/specialization-overlap-hygiene.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0592]: duplicate definitions with name `f` - --> $DIR/specialization-overlap-hygiene.rs:13:4 - | -LL | fn f() {} - | ------ other definition for `f` -... -LL | fn f() {} - | ^^^^^^ duplicate definitions for `f` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0592`. diff --git a/src/test/ui/specialization/specialization-overlap-negative.rs b/src/test/ui/specialization/specialization-overlap-negative.rs deleted file mode 100644 index 550d37082..000000000 --- a/src/test/ui/specialization/specialization-overlap-negative.rs +++ /dev/null @@ -1,11 +0,0 @@ -#![feature(negative_impls)] -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait MyTrait {} - -struct TestType(::std::marker::PhantomData); - -unsafe impl Send for TestType {} -impl !Send for TestType {} //~ ERROR E0751 - -fn main() {} diff --git a/src/test/ui/specialization/specialization-overlap-negative.stderr b/src/test/ui/specialization/specialization-overlap-negative.stderr deleted file mode 100644 index 1fe4869ff..000000000 --- a/src/test/ui/specialization/specialization-overlap-negative.stderr +++ /dev/null @@ -1,21 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-overlap-negative.rs:2:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0751]: found both positive and negative implementation of trait `Send` for type `TestType<_>`: - --> $DIR/specialization-overlap-negative.rs:9:1 - | -LL | unsafe impl Send for TestType {} - | ------------------------------------------ positive implementation here -LL | impl !Send for TestType {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ negative implementation here - -error: aborting due to previous error; 1 warning emitted - -For more information about this error, try `rustc --explain E0751`. diff --git a/src/test/ui/specialization/specialization-overlap-projection.rs b/src/test/ui/specialization/specialization-overlap-projection.rs deleted file mode 100644 index b07efb2a5..000000000 --- a/src/test/ui/specialization/specialization-overlap-projection.rs +++ /dev/null @@ -1,25 +0,0 @@ -// run-pass - -// Test that impls on projected self types can resolve overlap, even when the -// projections involve specialization, so long as the associated type is -// provided by the most specialized impl. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Assoc { - type Output; -} - -impl Assoc for T { - default type Output = bool; -} - -impl Assoc for u8 { type Output = u8; } -impl Assoc for u16 { type Output = u16; } - -trait Foo {} -impl Foo for u32 {} -impl Foo for ::Output {} -impl Foo for ::Output {} - -fn main() {} diff --git a/src/test/ui/specialization/specialization-overlap-projection.stderr b/src/test/ui/specialization/specialization-overlap-projection.stderr deleted file mode 100644 index 708c0817f..000000000 --- a/src/test/ui/specialization/specialization-overlap-projection.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-overlap-projection.rs:7:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-overlap.rs b/src/test/ui/specialization/specialization-overlap.rs deleted file mode 100644 index 6bee22ceb..000000000 --- a/src/test/ui/specialization/specialization-overlap.rs +++ /dev/null @@ -1,19 +0,0 @@ -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Foo { fn foo() {} } -impl Foo for T {} -impl Foo for Vec {} //~ ERROR E0119 - -trait Bar { fn bar() {} } -impl Bar for (T, u8) {} -impl Bar for (u8, T) {} //~ ERROR E0119 - -trait Baz { fn baz() {} } -impl Baz for u8 {} -impl Baz for T {} //~ ERROR E0119 - -trait Qux { fn qux() {} } -impl Qux for T {} -impl Qux for T {} //~ ERROR E0119 - -fn main() {} diff --git a/src/test/ui/specialization/specialization-overlap.stderr b/src/test/ui/specialization/specialization-overlap.stderr deleted file mode 100644 index 098bf4a70..000000000 --- a/src/test/ui/specialization/specialization-overlap.stderr +++ /dev/null @@ -1,45 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-overlap.rs:1:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0119]: conflicting implementations of trait `Foo` for type `Vec<_>` - --> $DIR/specialization-overlap.rs:5:1 - | -LL | impl Foo for T {} - | ------------------------ first implementation here -LL | impl Foo for Vec {} - | ^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Vec<_>` - -error[E0119]: conflicting implementations of trait `Bar` for type `(u8, u8)` - --> $DIR/specialization-overlap.rs:9:1 - | -LL | impl Bar for (T, u8) {} - | ----------------------- first implementation here -LL | impl Bar for (u8, T) {} - | ^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `(u8, u8)` - -error[E0119]: conflicting implementations of trait `Baz` for type `u8` - --> $DIR/specialization-overlap.rs:13:1 - | -LL | impl Baz for u8 {} - | --------------------- first implementation here -LL | impl Baz for T {} - | ^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `u8` - -error[E0119]: conflicting implementations of trait `Qux` - --> $DIR/specialization-overlap.rs:17:1 - | -LL | impl Qux for T {} - | ------------------------ first implementation here -LL | impl Qux for T {} - | ^^^^^^^^^^^^^^^^^^^^^ conflicting implementation - -error: aborting due to 4 previous errors; 1 warning emitted - -For more information about this error, try `rustc --explain E0119`. diff --git a/src/test/ui/specialization/specialization-polarity.rs b/src/test/ui/specialization/specialization-polarity.rs deleted file mode 100644 index b3cd8255b..000000000 --- a/src/test/ui/specialization/specialization-polarity.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Make sure specialization cannot change impl polarity - -#![feature(auto_traits)] -#![feature(negative_impls)] -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -auto trait Foo {} - -impl Foo for T {} -impl !Foo for u8 {} //~ ERROR E0751 - -auto trait Bar {} - -impl !Bar for T {} -impl Bar for u8 {} //~ ERROR E0751 - -fn main() {} diff --git a/src/test/ui/specialization/specialization-polarity.stderr b/src/test/ui/specialization/specialization-polarity.stderr deleted file mode 100644 index f287018ba..000000000 --- a/src/test/ui/specialization/specialization-polarity.stderr +++ /dev/null @@ -1,29 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-polarity.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -error[E0751]: found both positive and negative implementation of trait `Foo` for type `u8`: - --> $DIR/specialization-polarity.rs:10:1 - | -LL | impl Foo for T {} - | ----------------- positive implementation here -LL | impl !Foo for u8 {} - | ^^^^^^^^^^^^^^^^ negative implementation here - -error[E0751]: found both positive and negative implementation of trait `Bar` for type `u8`: - --> $DIR/specialization-polarity.rs:15:1 - | -LL | impl !Bar for T {} - | ------------------ negative implementation here -LL | impl Bar for u8 {} - | ^^^^^^^^^^^^^^^ positive implementation here - -error: aborting due to 2 previous errors; 1 warning emitted - -For more information about this error, try `rustc --explain E0751`. diff --git a/src/test/ui/specialization/specialization-projection-alias.rs b/src/test/ui/specialization/specialization-projection-alias.rs deleted file mode 100644 index f1f0b47bb..000000000 --- a/src/test/ui/specialization/specialization-projection-alias.rs +++ /dev/null @@ -1,26 +0,0 @@ -// run-pass -#![allow(dead_code)] -#![allow(unused_variables)] - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Regression test for ICE when combining specialized associated types and type -// aliases - -trait Id_ { - type Out; -} - -type Id = ::Out; - -impl Id_ for T { - default type Out = T; -} - -fn test_proection() { - let x: Id = panic!(); -} - -fn main() { - -} diff --git a/src/test/ui/specialization/specialization-projection-alias.stderr b/src/test/ui/specialization/specialization-projection-alias.stderr deleted file mode 100644 index c94d9ed07..000000000 --- a/src/test/ui/specialization/specialization-projection-alias.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-projection-alias.rs:5:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-projection.rs b/src/test/ui/specialization/specialization-projection.rs deleted file mode 100644 index 78afe7a94..000000000 --- a/src/test/ui/specialization/specialization-projection.rs +++ /dev/null @@ -1,42 +0,0 @@ -// run-pass -#![allow(dead_code)] - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Make sure we *can* project non-defaulted associated types -// cf ui/specialization/specialization-default-projection.rs - -// First, do so without any use of specialization - -trait Foo { - type Assoc; -} - -impl Foo for T { - type Assoc = (); -} - -fn generic_foo() -> ::Assoc { - () -} - -// Next, allow for one layer of specialization - -trait Bar { - type Assoc; -} - -impl Bar for T { - default type Assoc = (); -} - -impl Bar for T { - type Assoc = u8; -} - -fn generic_bar_clone() -> ::Assoc { - 0u8 -} - -fn main() { -} diff --git a/src/test/ui/specialization/specialization-projection.stderr b/src/test/ui/specialization/specialization-projection.stderr deleted file mode 100644 index bfc4e0a0f..000000000 --- a/src/test/ui/specialization/specialization-projection.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-projection.rs:4:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-supertraits.rs b/src/test/ui/specialization/specialization-supertraits.rs deleted file mode 100644 index fb85d8019..000000000 --- a/src/test/ui/specialization/specialization-supertraits.rs +++ /dev/null @@ -1,17 +0,0 @@ -// run-pass - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -// Test that you can specialize via an explicit trait hierarchy - -// FIXME: this doesn't work yet... - -trait Parent {} -trait Child: Parent {} - -trait Foo {} - -impl Foo for T {} -impl Foo for T {} - -fn main() {} diff --git a/src/test/ui/specialization/specialization-supertraits.stderr b/src/test/ui/specialization/specialization-supertraits.stderr deleted file mode 100644 index e716bc215..000000000 --- a/src/test/ui/specialization/specialization-supertraits.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-supertraits.rs:3:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-translate-projections-with-lifetimes.rs b/src/test/ui/specialization/specialization-translate-projections-with-lifetimes.rs deleted file mode 100644 index 904aeaa08..000000000 --- a/src/test/ui/specialization/specialization-translate-projections-with-lifetimes.rs +++ /dev/null @@ -1,33 +0,0 @@ -// run-pass - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Iterator { - fn next(&self); -} - -trait WithAssoc { - type Item; -} - -impl<'a> WithAssoc for &'a () { - type Item = &'a u32; -} - -struct Cloned(#[allow(unused_tuple_struct_fields)] I); - -impl<'a, I, T: 'a> Iterator for Cloned - where I: WithAssoc, T: Clone -{ - fn next(&self) {} -} - -impl<'a, I, T: 'a> Iterator for Cloned - where I: WithAssoc, T: Copy -{ - -} - -fn main() { - Cloned(&()).next(); -} diff --git a/src/test/ui/specialization/specialization-translate-projections-with-lifetimes.stderr b/src/test/ui/specialization/specialization-translate-projections-with-lifetimes.stderr deleted file mode 100644 index c7aad3c0f..000000000 --- a/src/test/ui/specialization/specialization-translate-projections-with-lifetimes.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-translate-projections-with-lifetimes.rs:3:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-translate-projections-with-params.rs b/src/test/ui/specialization/specialization-translate-projections-with-params.rs deleted file mode 100644 index 62d63590a..000000000 --- a/src/test/ui/specialization/specialization-translate-projections-with-params.rs +++ /dev/null @@ -1,32 +0,0 @@ -// run-pass - -// Ensure that provided items are inherited properly even when impls vary in -// type parameters *and* rely on projections, and the type parameters are input -// types on the trait. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Trait { - fn convert(&self) -> T; -} -trait WithAssoc { - type Item; - fn as_item(&self) -> &Self::Item; -} - -impl Trait for T where T: WithAssoc, U: Clone { - fn convert(&self) -> U { - self.as_item().clone() - } -} - -impl WithAssoc for u8 { - type Item = u8; - fn as_item(&self) -> &u8 { self } -} - -impl Trait for u8 {} - -fn main() { - assert!(3u8.convert() == 3u8); -} diff --git a/src/test/ui/specialization/specialization-translate-projections-with-params.stderr b/src/test/ui/specialization/specialization-translate-projections-with-params.stderr deleted file mode 100644 index 1c4fd9325..000000000 --- a/src/test/ui/specialization/specialization-translate-projections-with-params.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-translate-projections-with-params.rs:7:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/specialization-translate-projections.rs b/src/test/ui/specialization/specialization-translate-projections.rs deleted file mode 100644 index 92ea9e2b8..000000000 --- a/src/test/ui/specialization/specialization-translate-projections.rs +++ /dev/null @@ -1,33 +0,0 @@ -// run-pass - -// Ensure that provided items are inherited properly even when impls vary in -// type parameters *and* rely on projections. - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -use std::convert::Into; - -trait Trait { - fn to_u8(&self) -> u8; -} -trait WithAssoc { - type Item; - fn to_item(&self) -> Self::Item; -} - -impl Trait for T where T: WithAssoc, U: Into { - fn to_u8(&self) -> u8 { - self.to_item().into() - } -} - -impl WithAssoc for u8 { - type Item = u8; - fn to_item(&self) -> u8 { *self } -} - -impl Trait for u8 {} - -fn main() { - assert!(3u8.to_u8() == 3u8); -} diff --git a/src/test/ui/specialization/specialization-translate-projections.stderr b/src/test/ui/specialization/specialization-translate-projections.stderr deleted file mode 100644 index 22bbb12a0..000000000 --- a/src/test/ui/specialization/specialization-translate-projections.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/specialization-translate-projections.rs:6:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - diff --git a/src/test/ui/specialization/transmute-specialization.rs b/src/test/ui/specialization/transmute-specialization.rs deleted file mode 100644 index 499334d98..000000000 --- a/src/test/ui/specialization/transmute-specialization.rs +++ /dev/null @@ -1,15 +0,0 @@ -// run-pass - -#![feature(specialization)] //~ WARN the feature `specialization` is incomplete - -trait Specializable { type Output; } - -impl Specializable for T { - default type Output = u16; -} - -fn main() { - unsafe { - std::mem::transmute::::Output>(0); - } -} diff --git a/src/test/ui/specialization/transmute-specialization.stderr b/src/test/ui/specialization/transmute-specialization.stderr deleted file mode 100644 index b1c26d7da..000000000 --- a/src/test/ui/specialization/transmute-specialization.stderr +++ /dev/null @@ -1,12 +0,0 @@ -warning: the feature `specialization` is incomplete and may not be safe to use and/or cause compiler crashes - --> $DIR/transmute-specialization.rs:3:12 - | -LL | #![feature(specialization)] - | ^^^^^^^^^^^^^^ - | - = note: see issue #31844 for more information - = help: consider using `min_specialization` instead, which is more stable and complete - = note: `#[warn(incomplete_features)]` on by default - -warning: 1 warning emitted - -- cgit v1.2.3