| //@ compile-flags:-Zprint-mono-items=eager -Zinline-mir=no -Copt-level=0 |
| |
| #![deny(dead_code)] |
| #![feature(start)] |
| |
| //@ aux-build:cgu_export_trait_method.rs |
| extern crate cgu_export_trait_method; |
| |
| use cgu_export_trait_method::Trait; |
| |
| //~ MONO_ITEM fn start |
| #[start] |
| fn start(_: isize, _: *const *const u8) -> isize { |
| // The object code of these methods is contained in the external crate, so |
| // calling them should *not* introduce codegen items in the current crate. |
| let _: (u32, u32) = Trait::without_default_impl(0); |
| let _: (char, u32) = Trait::without_default_impl(0); |
| |
| // Currently, no object code is generated for trait methods with default |
| // implementations, unless they are actually called from somewhere. Therefore |
| // we cannot import the implementations and have to create our own inline. |
| //~ MONO_ITEM fn <u32 as cgu_export_trait_method::Trait>::with_default_impl |
| let _ = Trait::with_default_impl(0u32); |
| //~ MONO_ITEM fn <char as cgu_export_trait_method::Trait>::with_default_impl |
| let _ = Trait::with_default_impl('c'); |
| |
| //~ MONO_ITEM fn <u32 as cgu_export_trait_method::Trait>::with_default_impl_generic::<&str> |
| let _ = Trait::with_default_impl_generic(0u32, "abc"); |
| //~ MONO_ITEM fn <u32 as cgu_export_trait_method::Trait>::with_default_impl_generic::<bool> |
| let _ = Trait::with_default_impl_generic(0u32, false); |
| |
| //~ MONO_ITEM fn <char as cgu_export_trait_method::Trait>::with_default_impl_generic::<i16> |
| let _ = Trait::with_default_impl_generic('x', 1i16); |
| //~ MONO_ITEM fn <char as cgu_export_trait_method::Trait>::with_default_impl_generic::<i32> |
| let _ = Trait::with_default_impl_generic('y', 0i32); |
| |
| //~ MONO_ITEM fn <u32 as cgu_export_trait_method::Trait>::without_default_impl_generic::<char> |
| let _: (u32, char) = Trait::without_default_impl_generic('c'); |
| //~ MONO_ITEM fn <u32 as cgu_export_trait_method::Trait>::without_default_impl_generic::<bool> |
| let _: (u32, bool) = Trait::without_default_impl_generic(false); |
| |
| //~ MONO_ITEM fn <char as cgu_export_trait_method::Trait>::without_default_impl_generic::<char> |
| let _: (char, char) = Trait::without_default_impl_generic('c'); |
| //~ MONO_ITEM fn <char as cgu_export_trait_method::Trait>::without_default_impl_generic::<bool> |
| let _: (char, bool) = Trait::without_default_impl_generic(false); |
| |
| 0 |
| } |