//@ known-bug: #110395 // // This test is complement to the test in issue-73976-polymorphic.rs. // In that test we ensure that polymorphic use of type_id and type_name in patterns // will be properly rejected. This test will ensure that monomorphic use of these // would not be wrongly rejected in patterns. #![feature(const_type_id)] #![feature(const_type_name)] #![feature(const_trait_impl)] use std::any::{self, TypeId}; pub struct GetTypeId(T); impl GetTypeId { pub const VALUE: TypeId = TypeId::of::(); } const fn check_type_id() -> bool { GetTypeId::::VALUE == GetTypeId::::VALUE } pub struct GetTypeNameLen(T); impl GetTypeNameLen { pub const VALUE: usize = any::type_name::().len(); } const fn check_type_name_len() -> bool { matches!(GetTypeNameLen::::VALUE, GetTypeNameLen::::VALUE) } fn main() { assert!(check_type_id::()); assert!(check_type_name_len::()); }