]> git.lizzy.rs Git - rust.git/blob - src/test/ui/symbol-names/impl1.rs
Rollup merge of #105555 - krasimirgg:llvm-int-opt-2, r=cuviper
[rust.git] / src / test / ui / symbol-names / impl1.rs
1 // build-fail
2 // revisions: legacy v0
3 //[legacy]compile-flags: -Z unstable-options -C symbol-mangling-version=legacy
4     //[v0]compile-flags: -C symbol-mangling-version=v0
5 //[legacy]normalize-stderr-test: "h[\w]{16}E?\)" -> "<SYMBOL_HASH>)"
6
7 #![feature(auto_traits, rustc_attrs)]
8 #![allow(dead_code)]
9
10 mod foo {
11     pub struct Foo { x: u32 }
12
13     impl Foo {
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)
18          //[v0]~^^^^ ERROR symbol-name(_RNvMNtCs
19             //[v0]~| ERROR demangling(<impl1[
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)
24         fn bar() { }
25     }
26 }
27
28 mod bar {
29     use foo::Foo;
30
31     impl Foo {
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)
36          //[v0]~^^^^ ERROR symbol-name(_RNvMNtCs
37             //[v0]~| ERROR demangling(<impl1[
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)
42         fn baz() { }
43     }
44 }
45
46 trait Foo {
47     type Assoc;
48 }
49
50 auto trait AutoTrait {}
51
52 fn main() {
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.
61         impl Bar for [&'_ (dyn Foo<Assoc = extern "C" fn(&u8, ...)> + AutoTrait); 3] {
62             #[rustc_symbol_name]
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)
66              //[v0]~^^^^ ERROR symbol-name(_RNvXNCNvCs
67                 //[v0]~| ERROR demangling(<[&dyn
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)
69             #[rustc_def_path]
70             //[legacy]~^ ERROR def-path(<[&dyn Foo<Assoc = for<'a> extern "C" fn(&'a u8, ...)> + AutoTrait; 3] as main::{closure#1}::Bar>::method)
71                //[v0]~^^ ERROR def-path(<[&dyn Foo<Assoc = for<'a> extern "C" fn(&'a u8, ...)> + AutoTrait; 3] as main::{closure#1}::Bar>::method)
72             fn method(&self) {}
73         }
74     };
75 }