]> git.proxmox.com Git - rustc.git/blame - src/test/ui/symbol-names/impl1.rs
New upstream version 1.56.0~beta.4+dfsg1
[rustc.git] / src / test / ui / symbol-names / impl1.rs
CommitLineData
dfeec247 1// build-fail
dc9dc135
XL
2// revisions: legacy v0
3//[legacy]compile-flags: -Z symbol-mangling-version=legacy
4 //[v0]compile-flags: -Z symbol-mangling-version=v0
6a06907d 5//[legacy]normalize-stderr-test: "h[\w]{16}E?\)" -> "<SYMBOL_HASH>)"
dc9dc135 6
fc512014 7#![feature(auto_traits, rustc_attrs)]
54a0048b
SL
8#![allow(dead_code)]
9
10mod foo {
11 pub struct Foo { x: u32 }
12
13 impl Foo {
dc9dc135
XL
14 #[rustc_symbol_name]
15 //[legacy]~^ ERROR symbol-name(_ZN5impl13foo3Foo3bar
16 //[legacy]~| ERROR demangling(impl1::foo::Foo::bar
17 //[legacy]~| ERROR demangling-alt(impl1::foo::Foo::bar)
136023e0
XL
18 //[v0]~^^^^ ERROR symbol-name(_RNvMNtCs2qSCrjELJET_5impl13fooNtB2_3Foo3bar)
19 //[v0]~| ERROR demangling(<impl1[1c5860ab79c9e305]::foo::Foo>::bar)
dc9dc135
XL
20 //[v0]~| ERROR demangling-alt(<impl1::foo::Foo>::bar)
21 #[rustc_def_path]
22 //[legacy]~^ ERROR def-path(foo::Foo::bar)
23 //[v0]~^^ ERROR def-path(foo::Foo::bar)
54a0048b
SL
24 fn bar() { }
25 }
26}
27
28mod bar {
29 use foo::Foo;
30
31 impl Foo {
dc9dc135
XL
32 #[rustc_symbol_name]
33 //[legacy]~^ ERROR symbol-name(_ZN5impl13bar33_$LT$impl$u20$impl1..foo..Foo$GT$3baz
34 //[legacy]~| ERROR demangling(impl1::bar::<impl impl1::foo::Foo>::baz
35 //[legacy]~| ERROR demangling-alt(impl1::bar::<impl impl1::foo::Foo>::baz)
136023e0
XL
36 //[v0]~^^^^ ERROR symbol-name(_RNvMNtCs2qSCrjELJET_5impl13barNtNtB4_3foo3Foo3baz)
37 //[v0]~| ERROR demangling(<impl1[1c5860ab79c9e305]::foo::Foo>::baz)
dc9dc135
XL
38 //[v0]~| ERROR demangling-alt(<impl1::foo::Foo>::baz)
39 #[rustc_def_path]
40 //[legacy]~^ ERROR def-path(bar::<impl foo::Foo>::baz)
41 //[v0]~^^ ERROR def-path(bar::<impl foo::Foo>::baz)
54a0048b
SL
42 fn baz() { }
43 }
44}
45
dc9dc135
XL
46trait Foo {
47 type Assoc;
48}
49
50auto trait AutoTrait {}
51
54a0048b 52fn main() {
dc9dc135
XL
53 // Test closure mangling, and disambiguators.
54 || {};
55 || {
56 trait Bar {
57 fn method(&self) {}
58 }
59
60 // Test type mangling, by putting them in an `impl` header.
5869c6ff 61 impl Bar for [&'_ (dyn Foo<Assoc = extern "C" fn(&u8, ...)> + AutoTrait); 3] {
dc9dc135 62 #[rustc_symbol_name]
dfeec247
XL
63 //[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
64 //[legacy]~| ERROR demangling(<[&dyn impl1::Foo+Assoc = extern "C" fn(&u8, ::.)+impl1::AutoTrait; 3] as impl1::main::{{closure}}::Bar>::method
65 //[legacy]~| ERROR demangling-alt(<[&dyn impl1::Foo+Assoc = extern "C" fn(&u8, ::.)+impl1::AutoTrait; 3] as impl1::main::{{closure}}::Bar>::method)
136023e0 66 //[v0]~^^^^ ERROR symbol-name(_RNvXNCNvCs2qSCrjELJET_5impl14mains_0ARDNtB6_3Foop5AssocFG_KCRL0_hvEuNtB6_9AutoTraitEL_j3_NtB2_3Bar6method)
94222f64 67 //[v0]~| ERROR demangling(<[&dyn impl1[1c5860ab79c9e305]::Foo<Assoc = for<'a> extern "C" fn(&'a u8, ...)> + impl1[1c5860ab79c9e305]::AutoTrait; 3usize] as impl1[1c5860ab79c9e305]::main::{closure#1}::Bar>::method)
e74abb32 68 //[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)
dc9dc135 69 #[rustc_def_path]
29967ef6
XL
70 //[legacy]~^ ERROR def-path(<[&dyn Foo<Assoc = for<'r> extern "C" fn(&'r u8, ...)> + AutoTrait; 3] as main::{closure#1}::Bar>::method)
71 //[v0]~^^ ERROR def-path(<[&dyn Foo<Assoc = for<'r> extern "C" fn(&'r u8, ...)> + AutoTrait; 3] as main::{closure#1}::Bar>::method)
dc9dc135
XL
72 fn method(&self) {}
73 }
74 };
54a0048b 75}