//@ run-pass
//@ proc-macro: 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() {}
