// check-pass

#![feature(negative_impls)]
#![feature(rustc_attrs)]
#![feature(trait_alias)]
#![feature(with_negative_coherence)]

trait A {}
trait B {}

impl !A for u32 {}

#[rustc_strict_coherence]
trait C {}
impl<T: A + B> C for T {}
impl C for u32 {}

fn main() {}