blob: b6e2fd3ecd47e5e852b2a0ff2bc104d4840d8de4 [file] [edit]
//! Test for splat symbol mangling.
//@ revisions: default legacy v0
//@ [default] compile-flags: -C opt-level=0
//@ [legacy] compile-flags: -C opt-level=0 -Z unstable-options -Csymbol-mangling-version=legacy
//@ [v0] compile-flags: -C opt-level=0 -Z unstable-options -Csymbol-mangling-version=v0
//@ build-fail
// CRATE_HASH normalization doesn't seem to work on some of these symbol logs
//@ normalize-stderr: "splat_mangling\[([0-9a-f]{16})\]::" -> "splat_mangling[CRATE_HASH]::"
//@ normalize-stderr: "h([0-9a-f]{16})E\)" -> "hCRATE_HASHE)"
//@ normalize-stderr: "::h([0-9a-f]{16})\)" -> "::hCRATE_HASH)"
#![allow(incomplete_features)]
#![feature(splat, rustc_attrs)]
fn main() {
struct Type<T: ?Sized>(T);
// FIXME(rustfmt): the attribute gets deleted by rustfmt
#[rustfmt::skip]
// FIXME(splat, legacy mangling): the first comma is in the wrong place
#[rustc_dump_symbol_name]
//[legacy]~^ ERROR symbol-name(_ZN14splat_mangling4main72Type$LT$fn$LP$$C$$u20$$u23$$u5b$rustc_splat$u5d$$LP$u8$C$u32$RP$$RP$$GT
//[legacy]~| ERROR demangling(splat_mangling::main::Type<fn(, #[rustc_splat](u8,u32))>::
//[legacy]~| ERROR demangling-alt(splat_mangling::main::Type<fn(, #[rustc_splat](u8,u32))>)
//[v0,default]~^^^^ ERROR symbol-name(_RMNvCsCRATE_HASH_14splat_mangling4mainINtB<REF>_4TypeFwThmEEuE)
//[v0,default]~| ERROR demangling(<splat_mangling[
//[v0,default]~| ERROR demangling-alt(<splat_mangling::main::Type<fn(#[splat] (u8, u32))>>)
impl Type<fn(#[rustc_splat] (u8, u32))> {}
#[rustfmt::skip]
#[rustc_dump_symbol_name]
//[legacy]~^ ERROR symbol-name(_ZN14splat_mangling4main38Type$LT$fn$LP$$LP$u8$C$u32$RP$$RP$$GT
//[legacy]~| ERROR demangling(splat_mangling::main::Type<fn((u8,u32))>::
//[legacy]~| ERROR demangling-alt(splat_mangling::main::Type<fn((u8,u32))>)
//[v0,default]~^^^^ ERROR symbol-name(_RMs_NvCsCRATE_HASH_14splat_mangling4mainINtB<REF>_4TypeFThmEEuE)
//[v0,default]~| ERROR demangling(<splat_mangling[
//[v0,default]~| ERROR demangling-alt(<splat_mangling::main::Type<fn((u8, u32))>>)
impl Type<fn((u8, u32))> {}
#[rustfmt::skip]
#[rustc_dump_symbol_name]
//[legacy]~^ ERROR symbol-name(_ZN14splat_mangling4main83Type$LT$fn$LP$$C$$u20$$u23$$u5b$rustc_splat$u5d$$LP$$LP$u8$C$u32$RP$$C$$RP$$RP$$GT
//[legacy]~| ERROR demangling(splat_mangling::main::Type<fn(, #[rustc_splat]((u8,u32),))>::
//[legacy]~| ERROR demangling-alt(splat_mangling::main::Type<fn(, #[rustc_splat]((u8,u32),))>)
//[v0,default]~^^^^ ERROR symbol-name(_RMs0_NvCsCRATE_HASH_14splat_mangling4mainINtB<REF>_4TypeFwTThmEEEuE)
//[v0,default]~| ERROR demangling(<splat_mangling[
//[v0,default]~| ERROR demangling-alt(<splat_mangling::main::Type<fn(#[splat] ((u8, u32),))>>)
impl Type<fn(#[rustc_splat] ((u8, u32),))> {}
#[rustfmt::skip]
#[rustc_dump_symbol_name]
//[legacy]~^ ERROR symbol-name(_ZN14splat_mangling4main49Type$LT$fn$LP$$LP$$LP$u8$C$u32$RP$$C$$RP$$RP$$GT
//[legacy]~| ERROR demangling(splat_mangling::main::Type<fn(((u8,u32),))>::
//[legacy]~| ERROR demangling-alt(splat_mangling::main::Type<fn(((u8,u32),))>)
//[v0,default]~^^^^ ERROR symbol-name(_RMs1_NvCsCRATE_HASH_14splat_mangling4mainINtB<REF>_4TypeFTThmEEEuE)
//[v0,default]~| ERROR demangling(<splat_mangling[
//[v0,default]~| ERROR demangling-alt(<splat_mangling::main::Type<fn(((u8, u32),))>>)
impl Type<fn(((u8, u32),))> {}
#[rustfmt::skip]
#[rustc_dump_symbol_name]
//[legacy]~^ ERROR symbol-name(_ZN14splat_mangling4main86Type$LT$$BP$const$u20$fn$LP$$C$$u20$$u23$$u5b$rustc_splat$u5d$$LP$u32$C$i8$RP$$RP$$GT
//[legacy]~| ERROR demangling(splat_mangling::main::Type<*const fn(, #[rustc_splat](u32,i8))>::
//[legacy]~| ERROR demangling-alt(splat_mangling::main::Type<*const fn(, #[rustc_splat](u32,i8))>)
//[v0,default]~^^^^ ERROR symbol-name(_RMs2_NvCsCRATE_HASH_14splat_mangling4mainINtB<REF>_4TypePFwTmaEEuE)
//[v0,default]~| ERROR demangling(<splat_mangling[
//[v0,default]~| ERROR demangling-alt(<splat_mangling::main::Type<*const fn(#[splat] (u32, i8))>>)
impl Type<*const fn(#[rustc_splat] (u32, i8))> {}
#[rustfmt::skip]
#[rustc_dump_symbol_name]
//[legacy]~^ ERROR symbol-name(_ZN14splat_mangling4main52Type$LT$$BP$const$u20$fn$LP$$LP$u32$C$i8$RP$$RP$$GT
//[legacy]~| ERROR demangling(splat_mangling::main::Type<*const fn((u32,i8))>::
//[legacy]~| ERROR demangling-alt(splat_mangling::main::Type<*const fn((u32,i8))>)
//[v0,default]~^^^^ ERROR symbol-name(_RMs3_NvCsCRATE_HASH_14splat_mangling4mainINtB<REF>_4TypePFTmaEEuE)
//[v0,default]~| ERROR demangling(<splat_mangling[
//[v0,default]~| ERROR demangling-alt(<splat_mangling::main::Type<*const fn((u32, i8))>>)
impl Type<*const fn((u32, i8))> {}
#[rustfmt::skip]
#[rustc_dump_symbol_name]
//[legacy]~^ ERROR symbol-name(_ZN14splat_mangling4main78Type$LT$fn$LP$$C$$u20$$u23$$u5b$rustc_splat$u5d$$LP$u32$C$i8$RP$$C$f64$RP$$GT
//[legacy]~| ERROR demangling(splat_mangling::main::Type<fn(, #[rustc_splat](u32,i8),f64)>::
//[legacy]~| ERROR demangling-alt(splat_mangling::main::Type<fn(, #[rustc_splat](u32,i8),f64)>)
//[v0,default]~^^^^ ERROR symbol-name(_RMs4_NvCsCRATE_HASH_14splat_mangling4mainINtB<REF>_4TypeFwTmaEdEuE)
//[v0,default]~| ERROR demangling(<splat_mangling[
//[v0,default]~| ERROR demangling-alt(<splat_mangling::main::Type<fn(#[splat] (u32, i8), f64)>>)
impl Type<fn(#[rustc_splat] (u32, i8), f64)> {}
#[rustfmt::skip]
#[rustc_dump_symbol_name]
//[legacy]~^ ERROR symbol-name(_ZN14splat_mangling4main44Type$LT$fn$LP$$LP$u32$C$i8$RP$$C$f64$RP$$GT
//[legacy]~| ERROR demangling(splat_mangling::main::Type<fn((u32,i8),f64)>::
//[legacy]~| ERROR demangling-alt(splat_mangling::main::Type<fn((u32,i8),f64)>)
//[v0,default]~^^^^ ERROR symbol-name(_RMs5_NvCsCRATE_HASH_14splat_mangling4mainINtB<REF>_4TypeFTmaEdEuE)
//[v0,default]~| ERROR demangling(<splat_mangling[
//[v0,default]~| ERROR demangling-alt(<splat_mangling::main::Type<fn((u32, i8), f64)>>)
impl Type<fn((u32, i8), f64)> {}
}