summary refs log tree commit diff
path: root/tests/ui/traits/next-solver/coherence/ambiguity-causes-visitor-hang.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2025-01-27 23:20:59 +0000
committerbors <bors@rust-lang.org>2025-01-27 23:20:59 +0000
commite71f9a9a98b0faf423844bf0ba7438f29dc27d58 (patch)
tree9c54152146c4d35ca34ee55abc5e6d59ae1d81a6 /tests/ui/traits/next-solver/coherence/ambiguity-causes-visitor-hang.rs
parent9fc6b43126469e3858e2fe86cafb4f0fd5068869 (diff)
parent690f433e3e561ab79a7e9b1bc675b0109592dde6 (diff)
downloadrust-1.84.1.tar.gz
rust-1.84.1.zip
Auto merge of #136158 - cuviper:stable-next, r=cuviper 1.84.1
[stable] Prepare Rust 1.84.1 point release

- [Fix ICE 132920 in duplicate-crate diagnostics.](https://github.com/rust-lang/rust/pull/133304/)
- [Fix errors for overlapping impls in incremental rebuilds.](https://github.com/rust-lang/rust/pull/133828/)
- [Fix slow compilation related to the next-generation trait solver.](https://github.com/rust-lang/rust/pull/135618/)
- [Fix debuginfo when LLVM's location discriminator value limit is exceeded.](https://github.com/rust-lang/rust/pull/135643/)
- Fixes for building Rust from source:
  - [Only try to distribute `llvm-objcopy` if llvm tools are enabled.](https://github.com/rust-lang/rust/pull/134240/)
  - [Add Profile Override for Non-Git Sources.](https://github.com/rust-lang/rust/pull/135433/)
  - [Resolve symlinks of LLVM tool binaries before copying them.](https://github.com/rust-lang/rust/pull/135585/)
  - [Make it possible to use ci-rustc on tarball sources.](https://github.com/rust-lang/rust/pull/135722/)

cc `@rust-lang/release`
r? ghost
Diffstat (limited to 'tests/ui/traits/next-solver/coherence/ambiguity-causes-visitor-hang.rs')
-rw-r--r--tests/ui/traits/next-solver/coherence/ambiguity-causes-visitor-hang.rs56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/ui/traits/next-solver/coherence/ambiguity-causes-visitor-hang.rs b/tests/ui/traits/next-solver/coherence/ambiguity-causes-visitor-hang.rs
new file mode 100644
index 00000000000..54854b1b8a5
--- /dev/null
+++ b/tests/ui/traits/next-solver/coherence/ambiguity-causes-visitor-hang.rs
@@ -0,0 +1,56 @@
+// Computing the ambiguity causes for the overlap ended up
+// causing an exponential blowup when recursing into the normalization
+// goals for `<Box<?t> as RecursiveSuper>::Assoc`. This test
+// takes multiple minutes when doing so and less than a second
+// otherwise.
+
+//@ compile-flags: -Znext-solver=coherence
+
+trait RecursiveSuper:
+    Super<
+        A0 = Self::Assoc,
+        A1 = Self::Assoc,
+        A2 = Self::Assoc,
+        A3 = Self::Assoc,
+        A4 = Self::Assoc,
+        A5 = Self::Assoc,
+        A6 = Self::Assoc,
+        A7 = Self::Assoc,
+        A8 = Self::Assoc,
+        A9 = Self::Assoc,
+        A10 = Self::Assoc,
+        A11 = Self::Assoc,
+        A12 = Self::Assoc,
+        A13 = Self::Assoc,
+        A14 = Self::Assoc,
+        A15 = Self::Assoc,
+    >
+{
+    type Assoc;
+}
+
+trait Super {
+    type A0;
+    type A1;
+    type A2;
+    type A3;
+    type A4;
+    type A5;
+    type A6;
+    type A7;
+    type A8;
+    type A9;
+    type A10;
+    type A11;
+    type A12;
+    type A13;
+    type A14;
+    type A15;
+}
+
+trait Overlap {}
+impl<T: RecursiveSuper> Overlap for T {}
+impl<T> Overlap for Box<T> {}
+//~^ ERROR conflicting implementations of trait `Overlap` for type `Box<_>`
+
+fn main() {}