rust/tests/ui/symbol-names/types.rs

272 lines
13 KiB
Rust

//@ build-fail
//@ revisions: legacy verbose-legacy v0
//@ compile-flags: --crate-name=a -Z unstable-options
//@ [legacy] compile-flags: -Csymbol-mangling-version=legacy
//@ [verbose-legacy] compile-flags: -Csymbol-mangling-version=legacy -Zverbose-internals
//@ [v0] compile-flags: -Csymbol-mangling-version=v0
//@ normalize-stderr-test: "h[[:xdigit:]]{16}" -> "h[HASH]"
//@ [v0] normalize-stderr-test: "\[[[:xdigit:]]{16}\]" -> "[HASH]"
#![feature(never_type)]
#![feature(rustc_attrs)]
#![feature(f128)]
#![feature(f16)]
pub fn b() {
struct Type<T: ?Sized>(T);
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b16Type$LT$bool$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<bool>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<bool>)
//[v0]~^^^^ ERROR symbol-name(_RMNvCsCRATE_HASH_1a1bINtB<REF>_4TypebE)
//[v0]~| ERROR ::b::Type<bool>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<bool>>)
impl Type<bool> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b16Type$LT$char$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<char>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<char>)
//[v0]~^^^^ ERROR symbol-name(_RMs_NvCsCRATE_HASH_1a1bINtB<REF>_4TypecE)
//[v0]~| ERROR ::b::Type<char>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<char>>)
impl Type<char> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b14Type$LT$i8$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<i8>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<i8>)
//[v0]~^^^^ ERROR symbol-name(_RMs0_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeaE)
//[v0]~| ERROR ::b::Type<i8>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<i8>>)
impl Type<i8> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$i16$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<i16>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<i16>)
//[v0]~^^^^ ERROR symbol-name(_RMs1_NvCsCRATE_HASH_1a1bINtB<REF>_4TypesE)
//[v0]~| ERROR ::b::Type<i16>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<i16>>)
impl Type<i16> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$i32$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<i32>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<i32>)
//[v0]~^^^^ ERROR symbol-name(_RMs2_NvCsCRATE_HASH_1a1bINtB<REF>_4TypelE)
//[v0]~| ERROR ::b::Type<i32>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<i32>>)
impl Type<i32> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$i64$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<i64>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<i64>)
//[v0]~^^^^ ERROR symbol-name(_RMs3_NvCsCRATE_HASH_1a1bINtB<REF>_4TypexE)
//[v0]~| ERROR ::b::Type<i64>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<i64>>)
impl Type<i64> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b14Type$LT$u8$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<u8>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<u8>)
//[v0]~^^^^ ERROR symbol-name(_RMs4_NvCsCRATE_HASH_1a1bINtB<REF>_4TypehE)
//[v0]~| ERROR ::b::Type<u8>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<u8>>)
impl Type<u8> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$u16$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<u16>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<u16>)
//[v0]~^^^^ ERROR symbol-name(_RMs5_NvCsCRATE_HASH_1a1bINtB<REF>_4TypetE)
//[v0]~| ERROR ::b::Type<u16>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<u16>>)
impl Type<u16> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$u32$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<u32>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<u32>)
//[v0]~^^^^ ERROR symbol-name(_RMs6_NvCsCRATE_HASH_1a1bINtB<REF>_4TypemE)
//[v0]~| ERROR ::b::Type<u32>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<u32>>)
impl Type<u32> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$u64$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<u64>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<u64>)
//[v0]~^^^^ ERROR symbol-name(_RMs7_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeyE)
//[v0]~| ERROR ::b::Type<u64>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<u64>>)
impl Type<u64> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$f16$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<f16>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<f16>)
//[v0]~^^^^ ERROR symbol-name(_RMs8_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeC3f16E)
//[v0]~| ERROR ::b::Type<f16>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<f16>>)
impl Type<f16> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$f32$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<f32>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<f32>)
//[v0]~^^^^ ERROR symbol-name(_RMs9_NvCsCRATE_HASH_1a1bINtB<REF>_4TypefE)
//[v0]~| ERROR ::b::Type<f32>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<f32>>)
impl Type<f32> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$f64$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<f64>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<f64>)
//[v0]~^^^^ ERROR symbol-name(_RMsa_NvCsCRATE_HASH_1a1bINtB<REF>_4TypedE)
//[v0]~| ERROR ::b::Type<f64>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<f64>>)
impl Type<f64> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b16Type$LT$f128$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<f128>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<f128>)
//[v0]~^^^^ ERROR symbol-name(_RMsb_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeC4f128E)
//[v0]~| ERROR ::b::Type<f128>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<f128>>)
impl Type<f128> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b15Type$LT$str$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<str>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<str>)
//[v0]~^^^^ ERROR symbol-name(_RMsc_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeeE)
//[v0]~| ERROR ::b::Type<str>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<str>>)
impl Type<str> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b17Type$LT$$u21$$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<!>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<!>)
//[v0]~^^^^ ERROR symbol-name(_RMsd_NvCsCRATE_HASH_1a1bINtB<REF>_4TypezE)
//[v0]~| ERROR ::b::Type<!>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<!>>)
impl Type<!> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b20Type$LT$$LP$$RP$$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<()>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<()>)
//[v0]~^^^^ ERROR symbol-name(_RMse_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeuE)
//[v0]~| ERROR ::b::Type<()>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<()>>)
impl Type<()> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b25Type$LT$$LP$u8$C$$RP$$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<(u8,)>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<(u8,)>)
//[v0]~^^^^ ERROR symbol-name(_RMsf_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeThEE)
//[v0]~| ERROR ::b::Type<(u8,)>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<(u8,)>>)
impl Type<(u8,)> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b28Type$LT$$LP$u8$C$u16$RP$$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<(u8,u16)>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<(u8,u16)>)
//[v0]~^^^^ ERROR symbol-name(_RMsg_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeThtEE)
//[v0]~| ERROR ::b::Type<(u8, u16)>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<(u8, u16)>>)
impl Type<(u8, u16)> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b34Type$LT$$LP$u8$C$u16$C$u32$RP$$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<(u8,u16,u32)>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<(u8,u16,u32)>)
//[v0]~^^^^ ERROR symbol-name(_RMsh_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeThtmEE)
//[v0]~| ERROR ::b::Type<(u8, u16, u32)>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<(u8, u16, u32)>>)
impl Type<(u8, u16, u32)> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b28Type$LT$$BP$const$u20$u8$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<*const u8>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<*const u8>)
//[v0]~^^^^ ERROR symbol-name(_RMsi_NvCsCRATE_HASH_1a1bINtB<REF>_4TypePhE)
//[v0]~| ERROR ::b::Type<*const u8>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<*const u8>>)
impl Type<*const u8> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b26Type$LT$$BP$mut$u20$u8$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<*mut u8>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<*mut u8>)
//[v0]~^^^^ ERROR symbol-name(_RMsj_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeOhE)
//[v0]~| ERROR ::b::Type<*mut u8>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<*mut u8>>)
impl Type<*mut u8> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b19Type$LT$$RF$str$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<&str>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<&str>)
//[v0]~^^^^ ERROR symbol-name(_RMsk_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeReE)
//[v0]~| ERROR ::b::Type<&str>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<&str>>)
impl Type<&str> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b27Type$LT$$RF$mut$u20$str$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<&mut str>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<&mut str>)
//[v0]~^^^^ ERROR symbol-name(_RMsl_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeQeE)
//[v0]~| ERROR ::b::Type<&mut str>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<&mut str>>)
impl Type<&mut str> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$0$u5d$$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<[u8; 0]>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<[u8; 0]>)
//[v0]~^^^^ ERROR symbol-name(_RMsm_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeAhj0_E)
//[v0]~| ERROR ::b::Type<[u8; 0usize]>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<[u8; 0]>>)
impl Type<[u8; 0]> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b22Type$LT$fn$LP$$RP$$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<fn()>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<fn()>)
//[v0]~^^^^ ERROR symbol-name(_RMsn_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeFEuE)
//[v0]~| ERROR ::b::Type<fn()>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<fn()>>)
impl Type<fn()> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b60Type$LT$unsafe$u20$extern$u20$$u22$C$u22$$u20$fn$LP$$RP$$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<unsafe extern "C" fn()>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<unsafe extern "C" fn()>)
//[v0]~^^^^ ERROR symbol-name(_RMso_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeFUKCEuE)
//[v0]~| ERROR ::b::Type<unsafe extern "C" fn()>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<unsafe extern "C" fn()>>)
impl Type<unsafe extern "C" fn()> {}
#[rustc_symbol_name]
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b34Type$LT$$u5b$T$u3b$$u20$N$u5d$$GT$
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<[T; N]>::
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<[T; N]>)
//[v0]~^^^^ ERROR symbol-name(_RMsp_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeAppEB<REF>_)
//[v0]~| ERROR ::b::Type<[_; _]>>)
//[v0]~| ERROR demangling-alt(<a::b::Type<[_; _]>>)
impl<const N: usize, T> Type<[T; N]> {}
}
fn main() {}