mirror of
https://github.com/bevyengine/bevy
synced 2024-11-24 21:53:07 +00:00
Remove thiserror
from bevy_ecs
(#15774)
# Objective - Contributes to #15460 ## Solution - Removed `thiserror` from `bevy_ecs`
This commit is contained in:
parent
4c76ea7a5a
commit
0a61f04d9b
13 changed files with 94 additions and 90 deletions
|
@ -32,7 +32,13 @@ concurrent-queue = "2.4.0"
|
|||
disqualified = "1.0"
|
||||
fixedbitset = "0.5"
|
||||
serde = { version = "1", optional = true, default-features = false }
|
||||
thiserror = "1.0"
|
||||
derive_more = { version = "1", default-features = false, features = [
|
||||
"error",
|
||||
"from",
|
||||
"display",
|
||||
"into",
|
||||
"as_ref",
|
||||
] }
|
||||
nonmax = "0.5"
|
||||
arrayvec = { version = "0.7.4", optional = true }
|
||||
smallvec = "1"
|
||||
|
|
|
@ -27,7 +27,7 @@ use core::{
|
|||
marker::PhantomData,
|
||||
mem::needs_drop,
|
||||
};
|
||||
use thiserror::Error;
|
||||
use derive_more::derive::{Display, Error};
|
||||
|
||||
/// A data type that can be used to store data for an [entity].
|
||||
///
|
||||
|
@ -1623,14 +1623,18 @@ impl<T: Component> FromWorld for InitComponentId<T> {
|
|||
}
|
||||
|
||||
/// An error returned when the registration of a required component fails.
|
||||
#[derive(Error, Debug)]
|
||||
#[derive(Error, Display, Debug)]
|
||||
#[non_exhaustive]
|
||||
pub enum RequiredComponentsError {
|
||||
/// The component is already a directly required component for the requiree.
|
||||
#[error("Component {0:?} already directly requires component {1:?}")]
|
||||
#[display("Component {0:?} already directly requires component {_1:?}")]
|
||||
#[error(ignore)]
|
||||
DuplicateRegistration(ComponentId, ComponentId),
|
||||
/// An archetype with the component that requires other components already exists
|
||||
#[error("An archetype with the component {0:?} that requires other components already exists")]
|
||||
#[display(
|
||||
"An archetype with the component {_0:?} that requires other components already exists"
|
||||
)]
|
||||
#[error(ignore)]
|
||||
ArchetypeExists(ComponentId),
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ use crate::component::ComponentId;
|
|||
use crate::storage::SparseSetIndex;
|
||||
use crate::world::World;
|
||||
use core::{fmt, fmt::Debug, marker::PhantomData};
|
||||
use derive_more::derive::From;
|
||||
use fixedbitset::FixedBitSet;
|
||||
|
||||
/// A wrapper struct to make Debug representations of [`FixedBitSet`] easier
|
||||
|
@ -856,7 +857,7 @@ impl<T: SparseSetIndex> From<FilteredAccess<T>> for FilteredAccessSet<T> {
|
|||
}
|
||||
|
||||
/// Records how two accesses conflict with each other
|
||||
#[derive(Debug, PartialEq)]
|
||||
#[derive(Debug, PartialEq, From)]
|
||||
pub enum AccessConflicts {
|
||||
/// Conflict is for all indices
|
||||
All,
|
||||
|
@ -908,12 +909,6 @@ impl AccessConflicts {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<FixedBitSet> for AccessConflicts {
|
||||
fn from(value: FixedBitSet) -> Self {
|
||||
Self::Individual(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: SparseSetIndex> From<Vec<T>> for AccessConflicts {
|
||||
fn from(value: Vec<T>) -> Self {
|
||||
Self::Individual(value.iter().map(T::sparse_set_index).collect())
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use thiserror::Error;
|
||||
use derive_more::derive::{Display, Error};
|
||||
|
||||
use crate::{entity::Entity, world::unsafe_world_cell::UnsafeWorldCell};
|
||||
|
||||
|
@ -90,13 +90,15 @@ impl<'w> Eq for QueryEntityError<'w> {}
|
|||
|
||||
/// An error that occurs when evaluating a [`Query`](crate::system::Query) or [`QueryState`](crate::query::QueryState) as a single expected result via
|
||||
/// [`get_single`](crate::system::Query::get_single) or [`get_single_mut`](crate::system::Query::get_single_mut).
|
||||
#[derive(Debug, Error)]
|
||||
#[derive(Debug, Error, Display)]
|
||||
pub enum QuerySingleError {
|
||||
/// No entity fits the query.
|
||||
#[error("No entities fit the query {0}")]
|
||||
#[display("No entities fit the query {_0}")]
|
||||
#[error(ignore)]
|
||||
NoEntities(&'static str),
|
||||
/// Multiple entities fit the query.
|
||||
#[error("Multiple entities fit the query {0}")]
|
||||
#[display("Multiple entities fit the query {_0}")]
|
||||
#[error(ignore)]
|
||||
MultipleEntities(&'static str),
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,8 @@ use crate::{
|
|||
world::{unsafe_world_cell::UnsafeWorldCell, World},
|
||||
};
|
||||
|
||||
use derive_more::derive::Into;
|
||||
|
||||
use core::{
|
||||
fmt::Debug,
|
||||
iter,
|
||||
|
@ -21,15 +23,9 @@ use core::{
|
|||
|
||||
/// Wrapper around [`Entity`] for [`RemovedComponents`].
|
||||
/// Internally, `RemovedComponents` uses these as an `Events<RemovedComponentEntity>`.
|
||||
#[derive(Event, Debug, Clone)]
|
||||
#[derive(Event, Debug, Clone, Into)]
|
||||
pub struct RemovedComponentEntity(Entity);
|
||||
|
||||
impl From<RemovedComponentEntity> for Entity {
|
||||
fn from(value: RemovedComponentEntity) -> Self {
|
||||
value.0
|
||||
}
|
||||
}
|
||||
|
||||
/// Wrapper around a [`EventCursor<RemovedComponentEntity>`] so that we
|
||||
/// can differentiate events between components.
|
||||
#[derive(Debug)]
|
||||
|
|
|
@ -8,10 +8,10 @@ use bevy_utils::{
|
|||
tracing::{error, info, warn},
|
||||
HashMap, HashSet,
|
||||
};
|
||||
use derive_more::derive::{Display, Error};
|
||||
use disqualified::ShortName;
|
||||
use fixedbitset::FixedBitSet;
|
||||
use petgraph::{algo::TarjanScc, prelude::*};
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::{
|
||||
self as bevy_ecs,
|
||||
|
@ -1934,42 +1934,43 @@ impl ScheduleGraph {
|
|||
}
|
||||
|
||||
/// Category of errors encountered during schedule construction.
|
||||
#[derive(Error, Debug)]
|
||||
#[derive(Error, Display, Debug)]
|
||||
#[error(ignore)]
|
||||
#[non_exhaustive]
|
||||
pub enum ScheduleBuildError {
|
||||
/// A system set contains itself.
|
||||
#[error("System set `{0}` contains itself.")]
|
||||
#[display("System set `{_0}` contains itself.")]
|
||||
HierarchyLoop(String),
|
||||
/// The hierarchy of system sets contains a cycle.
|
||||
#[error("System set hierarchy contains cycle(s).\n{0}")]
|
||||
#[display("System set hierarchy contains cycle(s).\n{_0}")]
|
||||
HierarchyCycle(String),
|
||||
/// The hierarchy of system sets contains redundant edges.
|
||||
///
|
||||
/// This error is disabled by default, but can be opted-in using [`ScheduleBuildSettings`].
|
||||
#[error("System set hierarchy contains redundant edges.\n{0}")]
|
||||
#[display("System set hierarchy contains redundant edges.\n{_0}")]
|
||||
HierarchyRedundancy(String),
|
||||
/// A system (set) has been told to run before itself.
|
||||
#[error("System set `{0}` depends on itself.")]
|
||||
#[display("System set `{_0}` depends on itself.")]
|
||||
DependencyLoop(String),
|
||||
/// The dependency graph contains a cycle.
|
||||
#[error("System dependencies contain cycle(s).\n{0}")]
|
||||
#[display("System dependencies contain cycle(s).\n{_0}")]
|
||||
DependencyCycle(String),
|
||||
/// Tried to order a system (set) relative to a system set it belongs to.
|
||||
#[error("`{0}` and `{1}` have both `in_set` and `before`-`after` relationships (these might be transitive). This combination is unsolvable as a system cannot run before or after a set it belongs to.")]
|
||||
#[display("`{0}` and `{_1}` have both `in_set` and `before`-`after` relationships (these might be transitive). This combination is unsolvable as a system cannot run before or after a set it belongs to.")]
|
||||
CrossDependency(String, String),
|
||||
/// Tried to order system sets that share systems.
|
||||
#[error("`{0}` and `{1}` have a `before`-`after` relationship (which may be transitive) but share systems.")]
|
||||
#[display("`{0}` and `{_1}` have a `before`-`after` relationship (which may be transitive) but share systems.")]
|
||||
SetsHaveOrderButIntersect(String, String),
|
||||
/// Tried to order a system (set) relative to all instances of some system function.
|
||||
#[error("Tried to order against `{0}` in a schedule that has more than one `{0}` instance. `{0}` is a `SystemTypeSet` and cannot be used for ordering if ambiguous. Use a different set without this restriction.")]
|
||||
#[display("Tried to order against `{0}` in a schedule that has more than one `{0}` instance. `{_0}` is a `SystemTypeSet` and cannot be used for ordering if ambiguous. Use a different set without this restriction.")]
|
||||
SystemTypeSetAmbiguity(String),
|
||||
/// Systems with conflicting access have indeterminate run order.
|
||||
///
|
||||
/// This error is disabled by default, but can be opted-in using [`ScheduleBuildSettings`].
|
||||
#[error("Systems with conflicting access have indeterminate run order.\n{0}")]
|
||||
#[display("Systems with conflicting access have indeterminate run order.\n{_0}")]
|
||||
Ambiguity(String),
|
||||
/// Tried to run a schedule before all of its systems have been initialized.
|
||||
#[error("Systems in schedule have not been initialized.")]
|
||||
#[display("Systems in schedule have not been initialized.")]
|
||||
Uninitialized,
|
||||
}
|
||||
|
||||
|
@ -2040,8 +2041,8 @@ impl ScheduleBuildSettings {
|
|||
|
||||
/// Error to denote that [`Schedule::initialize`] or [`Schedule::run`] has not yet been called for
|
||||
/// this schedule.
|
||||
#[derive(Error, Debug)]
|
||||
#[error("executable schedule has not been built")]
|
||||
#[derive(Error, Display, Debug)]
|
||||
#[display("executable schedule has not been built")]
|
||||
pub struct ScheduleNotInitialized;
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
|
@ -7,10 +7,13 @@ use crate::{
|
|||
system::{IntoSystem, ResMut, Resource},
|
||||
};
|
||||
use bevy_utils::{
|
||||
tracing::{error, info, warn},
|
||||
tracing::{info, warn},
|
||||
TypeIdMap,
|
||||
};
|
||||
use thiserror::Error;
|
||||
use derive_more::derive::{Display, Error};
|
||||
|
||||
#[cfg(not(feature = "bevy_debug_stepping"))]
|
||||
use bevy_utils::tracing::error;
|
||||
|
||||
#[cfg(test)]
|
||||
use bevy_utils::tracing::debug;
|
||||
|
@ -87,8 +90,8 @@ enum Update {
|
|||
ClearBehavior(InternedScheduleLabel, SystemIdentifier),
|
||||
}
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
#[error("not available until all configured schedules have been run; try again next frame")]
|
||||
#[derive(Error, Display, Debug)]
|
||||
#[display("not available until all configured schedules have been run; try again next frame")]
|
||||
pub struct NotReady;
|
||||
|
||||
#[derive(Resource, Default)]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
use bevy_utils::tracing::warn;
|
||||
use core::fmt::Debug;
|
||||
use thiserror::Error;
|
||||
use derive_more::derive::{Display, Error};
|
||||
|
||||
use crate::{
|
||||
archetype::ArchetypeComponentId,
|
||||
|
@ -357,12 +357,13 @@ impl RunSystemOnce for &mut World {
|
|||
}
|
||||
|
||||
/// Running system failed.
|
||||
#[derive(Error)]
|
||||
#[derive(Error, Display)]
|
||||
pub enum RunSystemError {
|
||||
/// System could not be run due to parameters that failed validation.
|
||||
///
|
||||
/// This can occur because the data required by the system was not present in the world.
|
||||
#[error("The data required by the system {0:?} was not found in the world and the system did not run due to failed parameter validation.")]
|
||||
#[display("The data required by the system {_0:?} was not found in the world and the system did not run due to failed parameter validation.")]
|
||||
#[error(ignore)]
|
||||
InvalidParams(Cow<'static, str>),
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ use crate::{
|
|||
};
|
||||
use alloc::borrow::Cow;
|
||||
use core::ops::Deref;
|
||||
use derive_more::derive::{AsRef, Display, Into};
|
||||
|
||||
/// [`SystemParam`] that returns the name of the system which it is used in.
|
||||
///
|
||||
|
@ -33,7 +34,8 @@ use core::ops::Deref;
|
|||
/// logger.log("Hello");
|
||||
/// }
|
||||
/// ```
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Into, Display, AsRef)]
|
||||
#[as_ref(str)]
|
||||
pub struct SystemName<'s>(&'s str);
|
||||
|
||||
impl<'s> SystemName<'s> {
|
||||
|
@ -50,25 +52,6 @@ impl<'s> Deref for SystemName<'s> {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'s> AsRef<str> for SystemName<'s> {
|
||||
fn as_ref(&self) -> &str {
|
||||
self.name()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'s> From<SystemName<'s>> for &'s str {
|
||||
fn from(name: SystemName<'s>) -> &'s str {
|
||||
name.0
|
||||
}
|
||||
}
|
||||
|
||||
impl<'s> core::fmt::Display for SystemName<'s> {
|
||||
#[inline(always)]
|
||||
fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
|
||||
core::fmt::Display::fmt(&self.name(), f)
|
||||
}
|
||||
}
|
||||
|
||||
// SAFETY: no component value access
|
||||
unsafe impl SystemParam for SystemName<'_> {
|
||||
type State = Cow<'static, str>;
|
||||
|
|
|
@ -12,7 +12,7 @@ use bevy_ecs_macros::{Component, Resource};
|
|||
#[cfg(feature = "bevy_reflect")]
|
||||
use bevy_reflect::Reflect;
|
||||
use core::marker::PhantomData;
|
||||
use thiserror::Error;
|
||||
use derive_more::derive::{Display, Error};
|
||||
|
||||
/// A small wrapper for [`BoxedSystem`] that also keeps track whether or not the system has been initialized.
|
||||
#[derive(Component)]
|
||||
|
@ -587,28 +587,28 @@ where
|
|||
}
|
||||
|
||||
/// An operation with stored systems failed.
|
||||
#[derive(Error)]
|
||||
#[derive(Error, Display)]
|
||||
pub enum RegisteredSystemError<I: SystemInput = (), O = ()> {
|
||||
/// A system was run by id, but no system with that id was found.
|
||||
///
|
||||
/// Did you forget to register it?
|
||||
#[error("System {0:?} was not registered")]
|
||||
#[display("System {_0:?} was not registered")]
|
||||
SystemIdNotRegistered(SystemId<I, O>),
|
||||
/// A cached system was removed by value, but no system with its type was found.
|
||||
///
|
||||
/// Did you forget to register it?
|
||||
#[error("Cached system was not found")]
|
||||
#[display("Cached system was not found")]
|
||||
SystemNotCached,
|
||||
/// A system tried to run itself recursively.
|
||||
#[error("System {0:?} tried to run itself recursively")]
|
||||
#[display("System {_0:?} tried to run itself recursively")]
|
||||
Recursive(SystemId<I, O>),
|
||||
/// A system tried to remove itself.
|
||||
#[error("System {0:?} tried to remove itself")]
|
||||
#[display("System {_0:?} tried to remove itself")]
|
||||
SelfRemove(SystemId<I, O>),
|
||||
/// System could not be run due to parameters that failed validation.
|
||||
///
|
||||
/// This can occur because the data required by the system was not present in the world.
|
||||
#[error("The data required by the system {0:?} was not found in the world and the system did not run due to failed parameter validation.")]
|
||||
#[display("The data required by the system {_0:?} was not found in the world and the system did not run due to failed parameter validation.")]
|
||||
InvalidParams(SystemId<I, O>),
|
||||
}
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ use crate::{
|
|||
use bevy_ptr::{OwningPtr, Ptr};
|
||||
use bevy_utils::{HashMap, HashSet};
|
||||
use core::{any::TypeId, marker::PhantomData, mem::MaybeUninit};
|
||||
use thiserror::Error;
|
||||
use derive_more::derive::{Display, Error};
|
||||
|
||||
use super::{unsafe_world_cell::UnsafeEntityCell, Ref, ON_REMOVE, ON_REPLACE};
|
||||
|
||||
|
@ -2774,12 +2774,16 @@ impl<'a> From<&'a mut EntityWorldMut<'_>> for FilteredEntityMut<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
#[derive(Error, Display, Debug)]
|
||||
pub enum TryFromFilteredError {
|
||||
#[error("Conversion failed, filtered entity ref does not have read access to all components")]
|
||||
#[display(
|
||||
"Conversion failed, filtered entity ref does not have read access to all components"
|
||||
)]
|
||||
MissingReadAllAccess,
|
||||
|
||||
#[error("Conversion failed, filtered entity ref does not have write access to all components")]
|
||||
#[display(
|
||||
"Conversion failed, filtered entity ref does not have write access to all components"
|
||||
)]
|
||||
MissingWriteAllAccess,
|
||||
}
|
||||
|
||||
|
|
|
@ -1,34 +1,39 @@
|
|||
//! Contains error types returned by bevy's schedule.
|
||||
|
||||
use thiserror::Error;
|
||||
use derive_more::derive::{Display, Error};
|
||||
|
||||
use crate::{component::ComponentId, entity::Entity, schedule::InternedScheduleLabel};
|
||||
|
||||
/// The error type returned by [`World::try_run_schedule`] if the provided schedule does not exist.
|
||||
///
|
||||
/// [`World::try_run_schedule`]: crate::world::World::try_run_schedule
|
||||
#[derive(Error, Debug)]
|
||||
#[error("The schedule with the label {0:?} was not found.")]
|
||||
#[derive(Error, Display, Debug)]
|
||||
#[display("The schedule with the label {_0:?} was not found.")]
|
||||
#[error(ignore)]
|
||||
pub struct TryRunScheduleError(pub InternedScheduleLabel);
|
||||
|
||||
/// An error that occurs when dynamically retrieving components from an entity.
|
||||
#[derive(Error, Debug, Clone, Copy, PartialEq, Eq)]
|
||||
#[derive(Error, Display, Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum EntityComponentError {
|
||||
/// The component with the given [`ComponentId`] does not exist on the entity.
|
||||
#[error("The component with ID {0:?} does not exist on the entity.")]
|
||||
#[display("The component with ID {_0:?} does not exist on the entity.")]
|
||||
#[error(ignore)]
|
||||
MissingComponent(ComponentId),
|
||||
/// The component with the given [`ComponentId`] was requested mutably more than once.
|
||||
#[error("The component with ID {0:?} was requested mutably more than once.")]
|
||||
#[display("The component with ID {_0:?} was requested mutably more than once.")]
|
||||
#[error(ignore)]
|
||||
AliasedMutability(ComponentId),
|
||||
}
|
||||
|
||||
/// An error that occurs when fetching entities mutably from a world.
|
||||
#[derive(Error, Debug, Clone, Copy, PartialEq, Eq)]
|
||||
#[derive(Error, Display, Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum EntityFetchError {
|
||||
/// The entity with the given ID does not exist.
|
||||
#[error("The entity with ID {0:?} does not exist.")]
|
||||
#[display("The entity with ID {_0:?} does not exist.")]
|
||||
#[error(ignore)]
|
||||
NoSuchEntity(Entity),
|
||||
/// The entity with the given ID was requested mutably more than once.
|
||||
#[error("The entity with ID {0:?} was requested mutably more than once.")]
|
||||
#[display("The entity with ID {_0:?} was requested mutably more than once.")]
|
||||
#[error(ignore)]
|
||||
AliasedMutability(Entity),
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
use core::any::TypeId;
|
||||
|
||||
use thiserror::Error;
|
||||
use derive_more::derive::{Display, Error};
|
||||
|
||||
use bevy_reflect::{Reflect, ReflectFromPtr};
|
||||
|
||||
|
@ -198,7 +198,7 @@ impl World {
|
|||
}
|
||||
|
||||
/// The error type returned by [`World::get_reflect`] and [`World::get_reflect_mut`].
|
||||
#[derive(Error, Debug)]
|
||||
#[derive(Error, Display, Debug)]
|
||||
pub enum GetComponentReflectError {
|
||||
/// There is no [`ComponentId`] corresponding to the given [`TypeId`].
|
||||
///
|
||||
|
@ -208,11 +208,14 @@ pub enum GetComponentReflectError {
|
|||
/// See the documentation for [`bevy_reflect`] for more information.
|
||||
///
|
||||
/// [`App::register_type`]: ../../../bevy_app/struct.App.html#method.register_type
|
||||
#[error("No `ComponentId` corresponding to {0:?} found (did you call App::register_type()?)")]
|
||||
#[display(
|
||||
"No `ComponentId` corresponding to {_0:?} found (did you call App::register_type()?)"
|
||||
)]
|
||||
#[error(ignore)]
|
||||
NoCorrespondingComponentId(TypeId),
|
||||
|
||||
/// The given [`Entity`] does not have a [`Component`] corresponding to the given [`TypeId`].
|
||||
#[error("The given `Entity` {entity:?} does not have a `{component_name:?}` component ({component_id:?}, which corresponds to {type_id:?})")]
|
||||
#[display("The given `Entity` {entity:?} does not have a `{component_name:?}` component ({component_id:?}, which corresponds to {type_id:?})")]
|
||||
EntityDoesNotHaveComponent {
|
||||
/// The given [`Entity`].
|
||||
entity: Entity,
|
||||
|
@ -226,7 +229,7 @@ pub enum GetComponentReflectError {
|
|||
},
|
||||
|
||||
/// The [`World`] was missing the [`AppTypeRegistry`] resource.
|
||||
#[error("The `World` was missing the `AppTypeRegistry` resource")]
|
||||
#[display("The `World` was missing the `AppTypeRegistry` resource")]
|
||||
MissingAppTypeRegistry,
|
||||
|
||||
/// The [`World`]'s [`TypeRegistry`] did not contain [`TypeData`] for [`ReflectFromPtr`] for the given [`TypeId`].
|
||||
|
@ -240,7 +243,8 @@ pub enum GetComponentReflectError {
|
|||
/// [`TypeRegistry`]: bevy_reflect::TypeRegistry
|
||||
/// [`ReflectFromPtr`]: bevy_reflect::ReflectFromPtr
|
||||
/// [`App::register_type`]: ../../../bevy_app/struct.App.html#method.register_type
|
||||
#[error("The `World`'s `TypeRegistry` did not contain `TypeData` for `ReflectFromPtr` for the given {0:?} (did you call `App::register_type()`?)")]
|
||||
#[display("The `World`'s `TypeRegistry` did not contain `TypeData` for `ReflectFromPtr` for the given {_0:?} (did you call `App::register_type()`?)")]
|
||||
#[error(ignore)]
|
||||
MissingReflectFromPtrTypeData(TypeId),
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue