diff options
Diffstat (limited to '')
-rw-r--r-- | src/test/codegen-units/item-collection/generic-functions.rs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/test/codegen-units/item-collection/generic-functions.rs b/src/test/codegen-units/item-collection/generic-functions.rs new file mode 100644 index 000000000..04383bb8e --- /dev/null +++ b/src/test/codegen-units/item-collection/generic-functions.rs @@ -0,0 +1,55 @@ +// compile-flags:-Zprint-mono-items=eager + +#![deny(dead_code)] +#![feature(start)] + +fn foo1<T1>(a: T1) -> (T1, u32) { + (a, 1) +} + +fn foo2<T1, T2>(a: T1, b: T2) -> (T1, T2) { + (a, b) +} + +fn foo3<T1, T2, T3>(a: T1, b: T2, c: T3) -> (T1, T2, T3) { + (a, b, c) +} + +// This function should be instantiated even if no used +//~ MONO_ITEM fn lifetime_only +pub fn lifetime_only<'a>(a: &'a u32) -> &'a u32 { + a +} + +//~ MONO_ITEM fn start +#[start] +fn start(_: isize, _: *const *const u8) -> isize { + //~ MONO_ITEM fn foo1::<i32> + let _ = foo1(2i32); + //~ MONO_ITEM fn foo1::<i64> + let _ = foo1(2i64); + //~ MONO_ITEM fn foo1::<&str> + let _ = foo1("abc"); + //~ MONO_ITEM fn foo1::<char> + let _ = foo1('v'); + + //~ MONO_ITEM fn foo2::<i32, i32> + let _ = foo2(2i32, 2i32); + //~ MONO_ITEM fn foo2::<i64, &str> + let _ = foo2(2i64, "abc"); + //~ MONO_ITEM fn foo2::<&str, usize> + let _ = foo2("a", 2usize); + //~ MONO_ITEM fn foo2::<char, ()> + let _ = foo2('v', ()); + + //~ MONO_ITEM fn foo3::<i32, i32, i32> + let _ = foo3(2i32, 2i32, 2i32); + //~ MONO_ITEM fn foo3::<i64, &str, char> + let _ = foo3(2i64, "abc", 'c'); + //~ MONO_ITEM fn foo3::<i16, &str, usize> + let _ = foo3(0i16, "a", 2usize); + //~ MONO_ITEM fn foo3::<char, (), ()> + let _ = foo3('v', (), ()); + + 0 +} |