Change to just use first binders and add test
This commit is contained in:
parent
c34e7c60f5
commit
0daabbee2d
5 changed files with 218 additions and 27 deletions
56
src/test/ui/symbol-names/trait-objects.legacy.stderr
Normal file
56
src/test/ui/symbol-names/trait-objects.legacy.stderr
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
error: symbol-name(_ZN136_$LT$$RF$dyn$u20$core..ops..function..FnMut$LT$$LP$$RF$u8$C$$RP$$GT$$u2b$Output$u20$$u3d$$u20$$LP$$RP$$u20$as$u20$trait_objects..Bar$GT$6method17h1e14a5f2d365272fE)
|
||||
--> $DIR/trait-objects.rs:15:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling(<&dyn core::ops::function::FnMut<(&u8,)>+Output = () as trait_objects::Bar>::method::h1e14a5f2d365272f)
|
||||
--> $DIR/trait-objects.rs:15:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling-alt(<&dyn core::ops::function::FnMut<(&u8,)>+Output = () as trait_objects::Bar>::method)
|
||||
--> $DIR/trait-objects.rs:15:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: symbol-name(_ZN159_$LT$$RF$dyn$u20$core..ops..function..FnMut$LT$$LP$$RF$u8$C$$RP$$GT$$u2b$Output$u20$$u3d$$u20$$LP$$RP$$u2b$core..marker..Send$u20$as$u20$trait_objects..Foo$GT$6method17he7a07961c9aaa367E)
|
||||
--> $DIR/trait-objects.rs:30:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling(<&dyn core::ops::function::FnMut<(&u8,)>+Output = ()+core::marker::Send as trait_objects::Foo>::method::he7a07961c9aaa367)
|
||||
--> $DIR/trait-objects.rs:30:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling-alt(<&dyn core::ops::function::FnMut<(&u8,)>+Output = ()+core::marker::Send as trait_objects::Foo>::method)
|
||||
--> $DIR/trait-objects.rs:30:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: symbol-name(_ZN159_$LT$$RF$dyn$u20$core..ops..function..FnMut$LT$$LP$$RF$u8$C$$RP$$GT$$u2b$Output$u20$$u3d$$u20$$LP$$RP$$u2b$core..marker..Send$u20$as$u20$trait_objects..Baz$GT$6method17ha53e6f99bf033f0bE)
|
||||
--> $DIR/trait-objects.rs:45:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling(<&dyn core::ops::function::FnMut<(&u8,)>+Output = ()+core::marker::Send as trait_objects::Baz>::method::ha53e6f99bf033f0b)
|
||||
--> $DIR/trait-objects.rs:45:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling-alt(<&dyn core::ops::function::FnMut<(&u8,)>+Output = ()+core::marker::Send as trait_objects::Baz>::method)
|
||||
--> $DIR/trait-objects.rs:45:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 9 previous errors
|
||||
|
||||
56
src/test/ui/symbol-names/trait-objects.rs
Normal file
56
src/test/ui/symbol-names/trait-objects.rs
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
// Ensure that trait objects don't include more than one binder. See #83611
|
||||
|
||||
// build-fail
|
||||
// revisions: legacy v0
|
||||
//[legacy]compile-flags: -Z symbol-mangling-version=legacy
|
||||
//[v0]compile-flags: -Z symbol-mangling-version=v0
|
||||
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
trait Bar {
|
||||
fn method(&self) {}
|
||||
}
|
||||
|
||||
impl Bar for &dyn FnMut(&u8) {
|
||||
#[rustc_symbol_name]
|
||||
//[legacy]~^ ERROR symbol-name
|
||||
//[legacy]~| ERROR demangling
|
||||
//[legacy]~| ERROR demangling-alt
|
||||
//[v0]~^^^^ ERROR symbol-name
|
||||
//[v0]~| ERROR demangling
|
||||
//[v0]~| ERROR demangling-alt
|
||||
fn method(&self) {}
|
||||
}
|
||||
|
||||
trait Foo {
|
||||
fn method(&self) {}
|
||||
}
|
||||
|
||||
impl Foo for &(dyn FnMut(&u8) + for<'b> Send) {
|
||||
#[rustc_symbol_name]
|
||||
//[legacy]~^ ERROR symbol-name
|
||||
//[legacy]~| ERROR demangling
|
||||
//[legacy]~| ERROR demangling-alt
|
||||
//[v0]~^^^^ ERROR symbol-name
|
||||
//[v0]~| ERROR demangling
|
||||
//[v0]~| ERROR demangling-alt
|
||||
fn method(&self) {}
|
||||
}
|
||||
|
||||
trait Baz {
|
||||
fn method(&self) {}
|
||||
}
|
||||
|
||||
impl Baz for &(dyn for<'b> Send + FnMut(&u8)) {
|
||||
#[rustc_symbol_name]
|
||||
//[legacy]~^ ERROR symbol-name
|
||||
//[legacy]~| ERROR demangling
|
||||
//[legacy]~| ERROR demangling-alt
|
||||
//[v0]~^^^^ ERROR symbol-name
|
||||
//[v0]~| ERROR demangling
|
||||
//[v0]~| ERROR demangling-alt
|
||||
fn method(&self) {}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
}
|
||||
56
src/test/ui/symbol-names/trait-objects.v0.stderr
Normal file
56
src/test/ui/symbol-names/trait-objects.v0.stderr
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
error: symbol-name(_RNvXCs21hi0yVfW1J_13trait_objectsRDG_INtNtNtCs54lBhuwykzk_4core3ops8function5FnMutTRL0_hEEp6OutputuEL_NtB2_3Bar6method)
|
||||
--> $DIR/trait-objects.rs:15:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling(<&dyn for<'a> core[3b0e14d6e1ad42d0]::ops::function::FnMut<(&'a u8,), Output = ()> as trait_objects[17891616a171812d]::Bar>::method)
|
||||
--> $DIR/trait-objects.rs:15:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling-alt(<&dyn for<'a> core::ops::function::FnMut<(&'a u8,), Output = ()> as trait_objects::Bar>::method)
|
||||
--> $DIR/trait-objects.rs:15:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: symbol-name(_RNvXs_Cs21hi0yVfW1J_13trait_objectsRDG_INtNtNtCs54lBhuwykzk_4core3ops8function5FnMutTRL0_hEEp6OutputuNtNtBI_6marker4SendEL_NtB4_3Foo6method)
|
||||
--> $DIR/trait-objects.rs:30:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling(<&dyn for<'a> core[3b0e14d6e1ad42d0]::ops::function::FnMut<(&'a u8,), Output = ()> + core[3b0e14d6e1ad42d0]::marker::Send as trait_objects[17891616a171812d]::Foo>::method)
|
||||
--> $DIR/trait-objects.rs:30:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling-alt(<&dyn for<'a> core::ops::function::FnMut<(&'a u8,), Output = ()> + core::marker::Send as trait_objects::Foo>::method)
|
||||
--> $DIR/trait-objects.rs:30:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: symbol-name(_RNvXs0_Cs21hi0yVfW1J_13trait_objectsRDG_INtNtNtCs54lBhuwykzk_4core3ops8function5FnMutTRL0_hEEp6OutputuNtNtBJ_6marker4SendEL_NtB5_3Baz6method)
|
||||
--> $DIR/trait-objects.rs:45:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling(<&dyn for<'a> core[3b0e14d6e1ad42d0]::ops::function::FnMut<(&'a u8,), Output = ()> + core[3b0e14d6e1ad42d0]::marker::Send as trait_objects[17891616a171812d]::Baz>::method)
|
||||
--> $DIR/trait-objects.rs:45:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: demangling-alt(<&dyn for<'a> core::ops::function::FnMut<(&'a u8,), Output = ()> + core::marker::Send as trait_objects::Baz>::method)
|
||||
--> $DIR/trait-objects.rs:45:5
|
||||
|
|
||||
LL | #[rustc_symbol_name]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 9 previous errors
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue