Replace TyDesc and its uses with trait vtables and a type_name intrinsic.
This commit is contained in:
parent
3e98ab560a
commit
e256b7f049
15 changed files with 88 additions and 307 deletions
|
|
@ -13,17 +13,17 @@ struct NT(str);
|
|||
struct DST { a: u32, b: str }
|
||||
|
||||
fn main() {
|
||||
// get_tydesc should support unsized types
|
||||
// type_name should support unsized types
|
||||
assert_eq!(unsafe {(
|
||||
// Slice
|
||||
(*std::intrinsics::get_tydesc::<[u8]>()).name,
|
||||
std::intrinsics::type_name::<[u8]>(),
|
||||
// str
|
||||
(*std::intrinsics::get_tydesc::<str>()).name,
|
||||
std::intrinsics::type_name::<str>(),
|
||||
// Trait
|
||||
(*std::intrinsics::get_tydesc::<Copy>()).name,
|
||||
std::intrinsics::type_name::<Copy>(),
|
||||
// Newtype
|
||||
(*std::intrinsics::get_tydesc::<NT>()).name,
|
||||
std::intrinsics::type_name::<NT>(),
|
||||
// DST
|
||||
(*std::intrinsics::get_tydesc::<DST>()).name
|
||||
std::intrinsics::type_name::<DST>()
|
||||
)}, ("[u8]", "str", "core::marker::Copy", "NT", "DST"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
// except according to those terms.
|
||||
|
||||
|
||||
use std::intrinsics::get_tydesc;
|
||||
use std::intrinsics::type_name;
|
||||
|
||||
struct Foo<T> {
|
||||
x: T
|
||||
|
|
@ -17,7 +17,7 @@ struct Foo<T> {
|
|||
|
||||
pub fn main() {
|
||||
unsafe {
|
||||
assert_eq!((*get_tydesc::<int>()).name, "isize");
|
||||
assert_eq!((*get_tydesc::<Foo<uint>>()).name, "Foo<usize>");
|
||||
assert_eq!(type_name::<int>(), "isize");
|
||||
assert_eq!(type_name::<Foo<uint>>(), "Foo<usize>");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue