]> git.lizzy.rs Git - rust.git/blob - tests/ui/lint/opaque-ty-ffi-normalization-cycle.rs
Rollup merge of #106816 - TimNN:rental-remap, r=oli-obj
[rust.git] / tests / ui / lint / opaque-ty-ffi-normalization-cycle.rs
1 #![feature(type_alias_impl_trait)]
2 #![allow(unused)]
3 #![deny(improper_ctypes)]
4
5 pub trait TraitA {
6     type Assoc;
7 }
8
9 impl TraitA for u32 {
10     type Assoc = u32;
11 }
12
13 pub trait TraitB {
14     type Assoc;
15 }
16
17 impl<T> TraitB for T
18 where
19     T: TraitA,
20 {
21     type Assoc = <T as TraitA>::Assoc;
22 }
23
24 type AliasA = impl TraitA<Assoc = u32>;
25
26 type AliasB = impl TraitB;
27
28 fn use_of_a() -> AliasA {
29     3
30 }
31
32 fn use_of_b() -> AliasB {
33     3
34 }
35
36 extern "C" {
37     fn lint_me() -> <AliasB as TraitB>::Assoc;
38     //~^ ERROR `extern` block uses type `AliasB`, which is not FFI-safe
39 }
40
41 fn main() {}