summaryrefslogtreecommitdiffstats
path: root/tests/ui/traits/new-solver/negative-coherence-bounds.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
commit9918693037dce8aa4bb6f08741b6812923486c18 (patch)
tree21d2b40bec7e6a7ea664acee056eb3d08e15a1cf /tests/ui/traits/new-solver/negative-coherence-bounds.rs
parentReleasing progress-linux version 1.75.0+dfsg1-5~progress7.99u1. (diff)
downloadrustc-9918693037dce8aa4bb6f08741b6812923486c18.tar.xz
rustc-9918693037dce8aa4bb6f08741b6812923486c18.zip
Merging upstream version 1.76.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/traits/new-solver/negative-coherence-bounds.rs')
-rw-r--r--tests/ui/traits/new-solver/negative-coherence-bounds.rs40
1 files changed, 0 insertions, 40 deletions
diff --git a/tests/ui/traits/new-solver/negative-coherence-bounds.rs b/tests/ui/traits/new-solver/negative-coherence-bounds.rs
deleted file mode 100644
index 5436b02c3..000000000
--- a/tests/ui/traits/new-solver/negative-coherence-bounds.rs
+++ /dev/null
@@ -1,40 +0,0 @@
-// check-pass
-
-// This test verifies that negative trait predicate cannot be satisfied from a
-// positive param-env candidate.
-
-// Negative coherence is one of the only places where we actually construct and
-// evaluate negative predicates. Specifically, when verifying whether the first
-// and second impls below overlap, we do not want to consider them disjoint,
-// otherwise the second impl would be missing an associated type `type Item`
-// which is provided by the first impl that it is specializing.
-
-#![feature(specialization)]
-//~^ WARN the feature `specialization` is incomplete
-#![feature(with_negative_coherence)]
-
-trait BoxIter {
- type Item;
-
- fn last(self) -> Option<Self::Item>;
-}
-
-impl<I: Iterator + ?Sized> BoxIter for Box<I> {
- type Item = I::Item;
-
- default fn last(self) -> Option<I::Item> {
- todo!()
- }
-}
-
-// When checking that this impl does/doesn't overlap the one above, we evaluate
-// a negative version of all of the where-clause predicates of the impl below.
-// For `I: !Iterator`, we should make sure that the param-env clause `I: Iterator`
-// from above doesn't satisfy this predicate.
-impl<I: Iterator> BoxIter for Box<I> {
- fn last(self) -> Option<I::Item> {
- (*self).last()
- }
-}
-
-fn main() {}