| //@ run-pass |
| //@ aux-build:repeat.rs |
| |
| // This tests the allocating algo branch of the |
| // inherent impls overlap checker. |
| // This branch was added by PR: |
| // https://github.com/rust-lang/rust/pull/78317 |
| // In this test, we repeat many impl blocks |
| // to trigger the allocating branch. |
| |
| #![allow(unused)] |
| |
| extern crate repeat; |
| |
| // Simple case where each impl block is distinct |
| |
| struct Foo {} |
| |
| repeat::repeat_with_idents!(impl Foo { fn IDENT() {} }); |
| |
| // There are overlapping impl blocks but due to generics, |
| // they may overlap. |
| |
| struct Bar<T>(T); |
| |
| struct A; |
| struct B; |
| |
| repeat::repeat_with_idents!(impl Bar<A> { fn IDENT() {} }); |
| |
| impl Bar<A> { fn foo() {} } |
| impl Bar<B> { fn foo() {} } |
| |
| // Regression test for issue #89820: |
| |
| impl Bar<u8> { |
| pub fn a() {} |
| pub fn aa() {} |
| } |
| |
| impl Bar<u16> { |
| pub fn b() {} |
| pub fn bb() {} |
| } |
| |
| impl Bar<u32> { |
| pub fn a() {} |
| pub fn aa() {} |
| pub fn bb() {} |
| pub fn b() {} |
| } |
| |
| fn main() {} |