2019-12-13 21:28:32 -06:00
|
|
|
// build-fail
|
2019-05-29 19:56:45 -05:00
|
|
|
// ignore-tidy-linelength
|
2019-04-13 11:03:02 -05:00
|
|
|
// revisions: legacy v0
|
|
|
|
//[legacy]compile-flags: -Z symbol-mangling-version=legacy
|
|
|
|
//[v0]compile-flags: -Z symbol-mangling-version=v0
|
2020-05-20 12:58:41 -05:00
|
|
|
//[legacy]normalize-stderr-32bit: "h5ef5dfc14aeecbfc" -> "SYMBOL_HASH"
|
|
|
|
//[legacy]normalize-stderr-64bit: "h9e54d216f70fcbc5" -> "SYMBOL_HASH"
|
2019-04-13 11:03:02 -05:00
|
|
|
|
2019-05-29 19:56:45 -05:00
|
|
|
#![feature(optin_builtin_traits, rustc_attrs)]
|
2016-03-16 14:00:20 -05:00
|
|
|
#![allow(dead_code)]
|
|
|
|
|
|
|
|
mod foo {
|
|
|
|
pub struct Foo { x: u32 }
|
|
|
|
|
|
|
|
impl Foo {
|
2019-05-29 15:58:55 -05:00
|
|
|
#[rustc_symbol_name]
|
2019-04-13 11:03:02 -05:00
|
|
|
//[legacy]~^ ERROR symbol-name(_ZN5impl13foo3Foo3bar
|
|
|
|
//[legacy]~| ERROR demangling(impl1::foo::Foo::bar
|
|
|
|
//[legacy]~| ERROR demangling-alt(impl1::foo::Foo::bar)
|
|
|
|
//[v0]~^^^^ ERROR symbol-name(_RNvMNtCs4fqI2P2rA04_5impl13fooNtB2_3Foo3bar)
|
|
|
|
//[v0]~| ERROR demangling(<impl1[317d481089b8c8fe]::foo::Foo>::bar)
|
|
|
|
//[v0]~| ERROR demangling-alt(<impl1::foo::Foo>::bar)
|
|
|
|
#[rustc_def_path]
|
|
|
|
//[legacy]~^ ERROR def-path(foo::Foo::bar)
|
|
|
|
//[v0]~^^ ERROR def-path(foo::Foo::bar)
|
2016-03-16 14:00:20 -05:00
|
|
|
fn bar() { }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
mod bar {
|
|
|
|
use foo::Foo;
|
|
|
|
|
|
|
|
impl Foo {
|
2019-05-29 15:58:55 -05:00
|
|
|
#[rustc_symbol_name]
|
2019-04-13 11:03:02 -05:00
|
|
|
//[legacy]~^ ERROR symbol-name(_ZN5impl13bar33_$LT$impl$u20$impl1..foo..Foo$GT$3baz
|
|
|
|
//[legacy]~| ERROR demangling(impl1::bar::<impl impl1::foo::Foo>::baz
|
|
|
|
//[legacy]~| ERROR demangling-alt(impl1::bar::<impl impl1::foo::Foo>::baz)
|
|
|
|
//[v0]~^^^^ ERROR symbol-name(_RNvMNtCs4fqI2P2rA04_5impl13barNtNtB4_3foo3Foo3baz)
|
|
|
|
//[v0]~| ERROR demangling(<impl1[317d481089b8c8fe]::foo::Foo>::baz)
|
|
|
|
//[v0]~| ERROR demangling-alt(<impl1::foo::Foo>::baz)
|
|
|
|
#[rustc_def_path]
|
|
|
|
//[legacy]~^ ERROR def-path(bar::<impl foo::Foo>::baz)
|
|
|
|
//[v0]~^^ ERROR def-path(bar::<impl foo::Foo>::baz)
|
2016-03-16 14:00:20 -05:00
|
|
|
fn baz() { }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-29 19:56:45 -05:00
|
|
|
trait Foo {
|
|
|
|
type Assoc;
|
|
|
|
}
|
|
|
|
|
|
|
|
auto trait AutoTrait {}
|
|
|
|
|
2016-03-16 14:00:20 -05:00
|
|
|
fn main() {
|
2019-05-29 19:56:45 -05:00
|
|
|
// Test closure mangling, and disambiguators.
|
|
|
|
|| {};
|
|
|
|
|| {
|
|
|
|
trait Bar {
|
|
|
|
fn method(&self) {}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Test type mangling, by putting them in an `impl` header.
|
2019-08-10 06:38:17 -05:00
|
|
|
impl Bar for [&'_ (dyn Foo<Assoc = extern fn(&u8, ...)> + AutoTrait); 3] {
|
2019-05-29 19:56:45 -05:00
|
|
|
#[rustc_symbol_name]
|
2020-01-10 20:22:36 -06:00
|
|
|
//[legacy]~^ ERROR symbol-name(_ZN209_$LT$$u5b$$RF$dyn$u20$impl1..Foo$u2b$Assoc$u20$$u3d$$u20$extern$u20$$u22$C$u22$$u20$fn$LP$$RF$u8$C$$u20$...$RP$$u2b$impl1..AutoTrait$u3b$$u20$3$u5d$$u20$as$u20$impl1..main..$u7b$$u7b$closure$u7d$$u7d$..Bar$GT$6method
|
|
|
|
//[legacy]~| ERROR demangling(<[&dyn impl1::Foo+Assoc = extern "C" fn(&u8, ::.)+impl1::AutoTrait; 3] as impl1::main::{{closure}}::Bar>::method
|
|
|
|
//[legacy]~| ERROR demangling-alt(<[&dyn impl1::Foo+Assoc = extern "C" fn(&u8, ::.)+impl1::AutoTrait; 3] as impl1::main::{{closure}}::Bar>::method)
|
2019-08-10 06:38:17 -05:00
|
|
|
//[v0]~^^^^ ERROR symbol-name(_RNvXNCNvCs4fqI2P2rA04_5impl14mains_0ARDNtB6_3Foop5AssocFG_KCRL0_hvEuNtB6_9AutoTraitEL_j3_NtB2_3Bar6method)
|
|
|
|
//[v0]~| ERROR demangling(<[&dyn impl1[317d481089b8c8fe]::Foo<Assoc = for<'a> extern "C" fn(&'a u8, ...)> + impl1[317d481089b8c8fe]::AutoTrait; 3: usize] as impl1[317d481089b8c8fe]::main::{closure#1}::Bar>::method)
|
|
|
|
//[v0]~| ERROR demangling-alt(<[&dyn impl1::Foo<Assoc = for<'a> extern "C" fn(&'a u8, ...)> + impl1::AutoTrait; 3] as impl1::main::{closure#1}::Bar>::method)
|
2019-05-29 19:56:45 -05:00
|
|
|
#[rustc_def_path]
|
2020-01-10 20:22:36 -06:00
|
|
|
//[legacy]~^ ERROR def-path(<[&dyn Foo<Assoc = for<'r> extern "C" fn(&'r u8, ...)> + AutoTrait; 3] as main::{{closure}}#1::Bar>::method)
|
|
|
|
//[v0]~^^ ERROR def-path(<[&dyn Foo<Assoc = for<'r> extern "C" fn(&'r u8, ...)> + AutoTrait; 3] as main::{{closure}}#1::Bar>::method)
|
2019-05-29 19:56:45 -05:00
|
|
|
fn method(&self) {}
|
|
|
|
}
|
|
|
|
};
|
2016-03-16 14:00:20 -05:00
|
|
|
}
|