mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-20 03:18:06 +08:00
Add invalid type
This commit is contained in:
@@ -77,7 +77,7 @@ macro_rules! fn_type_fut {
|
||||
};
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, Hash, Default, PartialOrd, Ord, serde::Serialize, serde::Deserialize)]
|
||||
#[derive(Clone, PartialEq, Eq, Hash, Default, serde::Serialize, serde::Deserialize)]
|
||||
pub struct NodeIOTypes {
|
||||
pub call_argument: Type,
|
||||
pub return_value: Type,
|
||||
@@ -229,20 +229,8 @@ impl PartialEq for TypeDescriptor {
|
||||
}
|
||||
}
|
||||
|
||||
impl Ord for TypeDescriptor {
|
||||
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
|
||||
self.name.cmp(&other.name)
|
||||
}
|
||||
}
|
||||
|
||||
impl PartialOrd for TypeDescriptor {
|
||||
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
|
||||
Some(self.cmp(other))
|
||||
}
|
||||
}
|
||||
|
||||
/// Graph runtime type information used for type inference.
|
||||
#[derive(Clone, PartialEq, Eq, Hash, PartialOrd, Ord, specta::Type, serde::Serialize, serde::Deserialize)]
|
||||
#[derive(Clone, PartialEq, Eq, Hash, specta::Type, serde::Serialize, serde::Deserialize)]
|
||||
pub enum Type {
|
||||
/// A wrapper for some type variable used within the inference system. Resolved at inference time and replaced with a concrete type.
|
||||
Generic(Cow<'static, str>),
|
||||
@@ -364,6 +352,15 @@ impl Type {
|
||||
_ => Cow::Owned(self.to_string()),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn nested_type_name(&self) -> &str {
|
||||
match self {
|
||||
Type::Generic(name) => name.as_ref(),
|
||||
Type::Concrete(type_descriptor) => type_descriptor.name.as_ref(),
|
||||
Type::Fn(_, nested) => nested.nested_type_name(),
|
||||
Type::Future(nested) => nested.nested_type_name(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn format_type(ty: &str) -> String {
|
||||
|
||||
Reference in New Issue
Block a user