]> git.proxmox.com Git - rustc.git/blob - tests/codegen-units/item-collection/trait-implementations.rs
New upstream version 1.71.1+dfsg1
[rustc.git] / tests / codegen-units / item-collection / trait-implementations.rs
1 // compile-flags:-Zprint-mono-items=eager -Zinline-mir=no
2
3 #![deny(dead_code)]
4 #![feature(start)]
5
6 pub trait SomeTrait {
7 fn foo(&self);
8 fn bar<T>(&self, x: T);
9 }
10
11 impl SomeTrait for i64 {
12
13 //~ MONO_ITEM fn <i64 as SomeTrait>::foo
14 fn foo(&self) {}
15
16 fn bar<T>(&self, _: T) {}
17 }
18
19 impl SomeTrait for i32 {
20
21 //~ MONO_ITEM fn <i32 as SomeTrait>::foo
22 fn foo(&self) {}
23
24 fn bar<T>(&self, _: T) {}
25 }
26
27 pub trait SomeGenericTrait<T> {
28 fn foo(&self, x: T);
29 fn bar<T2>(&self, x: T, y: T2);
30 }
31
32 // Concrete impl of generic trait
33 impl SomeGenericTrait<u32> for f64 {
34
35 //~ MONO_ITEM fn <f64 as SomeGenericTrait<u32>>::foo
36 fn foo(&self, _: u32) {}
37
38 fn bar<T2>(&self, _: u32, _: T2) {}
39 }
40
41 // Generic impl of generic trait
42 impl<T> SomeGenericTrait<T> for f32 {
43
44 fn foo(&self, _: T) {}
45 fn bar<T2>(&self, _: T, _: T2) {}
46 }
47
48 //~ MONO_ITEM fn start
49 #[start]
50 fn start(_: isize, _: *const *const u8) -> isize {
51 //~ MONO_ITEM fn <i32 as SomeTrait>::bar::<char>
52 0i32.bar('x');
53
54 //~ MONO_ITEM fn <f64 as SomeGenericTrait<u32>>::bar::<&str>
55 0f64.bar(0u32, "&str");
56
57 //~ MONO_ITEM fn <f64 as SomeGenericTrait<u32>>::bar::<()>
58 0f64.bar(0u32, ());
59
60 //~ MONO_ITEM fn <f32 as SomeGenericTrait<char>>::foo
61 0f32.foo('x');
62
63 //~ MONO_ITEM fn <f32 as SomeGenericTrait<i64>>::foo
64 0f32.foo(-1i64);
65
66 //~ MONO_ITEM fn <f32 as SomeGenericTrait<u32>>::bar::<()>
67 0f32.bar(0u32, ());
68
69 //~ MONO_ITEM fn <f32 as SomeGenericTrait<&str>>::bar::<&str>
70 0f32.bar("&str", "&str");
71
72 0
73 }