mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-02 10:18:25 +00:00
Stabilize const TypeId::of
This commit is contained in:
parent
e05ab47e6c
commit
4653b7acbd
@ -725,7 +725,7 @@ unsafe impl Send for TypeId {}
|
||||
unsafe impl Sync for TypeId {}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_const_unstable(feature = "const_type_id", issue = "77125")]
|
||||
#[rustc_const_unstable(feature = "const_cmp", issue = "143800")]
|
||||
impl const PartialEq for TypeId {
|
||||
#[inline]
|
||||
fn eq(&self, other: &Self) -> bool {
|
||||
@ -773,7 +773,7 @@ impl TypeId {
|
||||
/// ```
|
||||
#[must_use]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[rustc_const_unstable(feature = "const_type_id", issue = "77125")]
|
||||
#[rustc_const_stable(feature = "const_type_id", since = "CURRENT_RUSTC_VERSION")]
|
||||
pub const fn of<T: ?Sized + 'static>() -> TypeId {
|
||||
const { intrinsics::type_id::<T>() }
|
||||
}
|
||||
|
@ -1,4 +1,3 @@
|
||||
#![feature(const_type_id)]
|
||||
#![feature(generic_const_exprs)]
|
||||
#![feature(const_trait_impl, const_cmp)]
|
||||
#![feature(core_intrinsics)]
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: overly complex generic constant
|
||||
--> $DIR/issue-90318.rs:15:8
|
||||
--> $DIR/issue-90318.rs:14:8
|
||||
|
|
||||
LL | If<{ TypeId::of::<T>() != TypeId::of::<()>() }>: True,
|
||||
| ^^-----------------^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -10,7 +10,7 @@ LL | If<{ TypeId::of::<T>() != TypeId::of::<()>() }>: True,
|
||||
= note: this operation may be supported in the future
|
||||
|
||||
error: overly complex generic constant
|
||||
--> $DIR/issue-90318.rs:22:8
|
||||
--> $DIR/issue-90318.rs:21:8
|
||||
|
|
||||
LL | If<{ TypeId::of::<T>() != TypeId::of::<()>() }>: True,
|
||||
| ^^-----------------^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -1,6 +1,4 @@
|
||||
//@ run-pass
|
||||
#![feature(const_type_id)]
|
||||
#![feature(core_intrinsics)]
|
||||
|
||||
use std::any::TypeId;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
//@ compile-flags: -Znext-solver
|
||||
#![feature(const_type_id, const_trait_impl, const_cmp)]
|
||||
#![feature(const_trait_impl, const_cmp)]
|
||||
|
||||
use std::any::TypeId;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(const_type_id, const_trait_impl, const_cmp)]
|
||||
#![feature(const_trait_impl, const_cmp)]
|
||||
|
||||
use std::any::TypeId;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
//@ normalize-stderr: "0x(ff)+" -> "<u128::MAX>"
|
||||
|
||||
#![feature(const_type_id, const_trait_impl, const_cmp)]
|
||||
#![feature( const_trait_impl, const_cmp)]
|
||||
|
||||
use std::any::TypeId;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
//! Test that all bytes of a TypeId must have the
|
||||
//! TypeId marker provenance.
|
||||
|
||||
#![feature(const_type_id, const_trait_impl, const_cmp)]
|
||||
#![feature( const_trait_impl, const_cmp)]
|
||||
|
||||
use std::any::TypeId;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(const_type_id, const_trait_impl, const_cmp)]
|
||||
#![feature(const_trait_impl, const_cmp)]
|
||||
|
||||
use std::any::TypeId;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
//! Test that we require an equal TypeId to have an integer part that properly
|
||||
//! reflects the type id hash.
|
||||
|
||||
#![feature(const_type_id, const_trait_impl, const_cmp)]
|
||||
#![feature(const_trait_impl, const_cmp)]
|
||||
|
||||
use std::any::TypeId;
|
||||
|
||||
|
@ -1,5 +1,3 @@
|
||||
#![feature(const_type_id)]
|
||||
|
||||
use std::alloc::Layout;
|
||||
use std::any::TypeId;
|
||||
use std::mem::transmute;
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0310]: the parameter type `T` may not live long enough
|
||||
--> $DIR/issue-102117.rs:19:26
|
||||
--> $DIR/issue-102117.rs:17:26
|
||||
|
|
||||
LL | type_id: TypeId::of::<T>(),
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@ -13,7 +13,7 @@ LL | pub fn new<T: 'static>() -> &'static Self {
|
||||
| +++++++++
|
||||
|
||||
error[E0310]: the parameter type `T` may not live long enough
|
||||
--> $DIR/issue-102117.rs:19:26
|
||||
--> $DIR/issue-102117.rs:17:26
|
||||
|
|
||||
LL | type_id: TypeId::of::<T>(),
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
@ -5,7 +5,6 @@
|
||||
// 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)]
|
||||
#![feature(const_cmp)]
|
||||
|
@ -5,7 +5,6 @@
|
||||
// This test case should either run-pass or be rejected at compile time.
|
||||
// Currently we just disallow this usage and require pattern is monomorphic.
|
||||
|
||||
#![feature(const_type_id)]
|
||||
#![feature(const_type_name)]
|
||||
|
||||
use std::any::{self, TypeId};
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0158]: constant pattern cannot depend on generic parameters
|
||||
--> $DIR/issue-73976-polymorphic.rs:20:37
|
||||
--> $DIR/issue-73976-polymorphic.rs:19:37
|
||||
|
|
||||
LL | impl<T: 'static> GetTypeId<T> {
|
||||
| -----------------------------
|
||||
@ -12,7 +12,7 @@ LL | matches!(GetTypeId::<T>::VALUE, GetTypeId::<T>::VALUE)
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ `const` depends on a generic parameter
|
||||
|
||||
error[E0158]: constant pattern cannot depend on generic parameters
|
||||
--> $DIR/issue-73976-polymorphic.rs:31:42
|
||||
--> $DIR/issue-73976-polymorphic.rs:30:42
|
||||
|
|
||||
LL | impl<T: 'static> GetTypeNameLen<T> {
|
||||
| ----------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user