Skip to content

Commit 0f97fc8

Browse files
authored
Rollup merge of #103774 - compiler-errors:dyn-trait-in-type-name, r=eholk
Format `dyn Trait` better in `type_name` intrinsic Noticed this in #103764 (though not related to that PR at all!) ```rust trait Foo { type Bar; } fn main() { println!( "`dyn Fn(i32, i32) -> i32` => `{}`", std::any::type_name::<dyn Fn(i32, i32) -> i32>() ); println!( "`dyn Foo<Bar = i32> + Send + Sync` => `{}`", std::any::type_name::<dyn Foo<Bar = i32> + Send + Sync>() ); } ``` ``` `dyn Fn(i32, i32) -> i32` => `dyn core::ops::function::Fn<(i32, i32)>+Output = i32` `dyn Foo<Bar = i32> + Send + Sync` => `dyn playground::Foo+Bar = i32+core::marker::Sync+core::marker::Send` ``` Just reuse `pretty_print_dyn_existential` which already makes an attempt to make its output stable.
2 parents f6f6050 + fe02bb5 commit 0f97fc8

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

core/tests/any.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,24 @@ fn distinct_type_names() {
131131
assert_ne!(type_name_of_val(Velocity), type_name_of_val(Velocity(0.0, -9.8)),);
132132
}
133133

134+
#[cfg(not(bootstrap))]
135+
#[test]
136+
fn dyn_type_name() {
137+
trait Foo {
138+
type Bar;
139+
}
140+
141+
assert_eq!(
142+
"dyn core::ops::function::Fn(i32, i32) -> i32",
143+
std::any::type_name::<dyn Fn(i32, i32) -> i32>()
144+
);
145+
assert_eq!(
146+
"dyn coretests::any::dyn_type_name::Foo<Bar = i32> \
147+
+ core::marker::Send + core::marker::Sync",
148+
std::any::type_name::<dyn Foo<Bar = i32> + Send + Sync>()
149+
);
150+
}
151+
134152
// Test the `Provider` API.
135153

136154
struct SomeConcreteType {

0 commit comments

Comments
 (0)