From 5e105177cf100720f4405609a1c247dc12310ab4 Mon Sep 17 00:00:00 2001 From: Jeff Date: Thu, 15 Feb 2024 16:06:47 -0500 Subject: [PATCH] Simplify TypeDefinition type --- src/abstract_tree/enum_defintion.rs | 22 +++------------------- src/built_in_type_definitions.rs | 9 ++++----- 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/src/abstract_tree/enum_defintion.rs b/src/abstract_tree/enum_defintion.rs index 91b5e63..777b1d7 100644 --- a/src/abstract_tree/enum_defintion.rs +++ b/src/abstract_tree/enum_defintion.rs @@ -9,18 +9,11 @@ use crate::{ #[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, PartialOrd, Ord)] pub struct EnumDefinition { identifier: Identifier, - variants: Vec<(Identifier, VariantContent)>, -} - -#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, PartialOrd, Ord)] -pub enum VariantContent { - Type(Type), - TypeDefinition(TypeDefinition), - None, + variants: Vec<(Identifier, Option)>, } impl EnumDefinition { - pub fn new(identifier: Identifier, variants: Vec<(Identifier, VariantContent)>) -> Self { + pub fn new(identifier: Identifier, variants: Vec<(Identifier, Option)>) -> Self { Self { identifier, variants, @@ -57,16 +50,7 @@ impl AbstractTree for EnumDefinition { if child.kind() == "type" { let r#type = Type::from_syntax(child, source, context)?; - variants.push((identifier.clone(), VariantContent::Type(r#type))); - } - - if child.kind() == "type_definition" { - let type_definition = TypeDefinition::from_syntax(child, source, context)?; - - variants.push(( - identifier.clone(), - VariantContent::TypeDefinition(type_definition), - )); + variants.push((identifier.clone(), Some(r#type))); } } } diff --git a/src/built_in_type_definitions.rs b/src/built_in_type_definitions.rs index d52bf7f..05ae41c 100644 --- a/src/built_in_type_definitions.rs +++ b/src/built_in_type_definitions.rs @@ -4,7 +4,6 @@ use enum_iterator::{all, Sequence}; use crate::{ error::rw_lock_error::RwLockError, Context, EnumDefinition, Identifier, Type, TypeDefinition, - VariantContent, }; static OPTION: OnceLock> = OnceLock::new(); @@ -34,8 +33,8 @@ impl BuiltInTypeDefinition { let definition = TypeDefinition::Enum(EnumDefinition::new( Identifier::new(self.name()), vec![ - (Identifier::new("Some"), VariantContent::Type(Type::Any)), - (Identifier::new("None"), VariantContent::None), + (Identifier::new("Some"), Some(Type::Any)), + (Identifier::new("None"), None), ], )); @@ -45,8 +44,8 @@ impl BuiltInTypeDefinition { let definition = TypeDefinition::Enum(EnumDefinition::new( Identifier::new(self.name()), vec![ - (Identifier::new("Ok"), VariantContent::Type(Type::Any)), - (Identifier::new("Err"), VariantContent::Type(Type::Any)), + (Identifier::new("Ok"), Some(Type::Any)), + (Identifier::new("Err"), Some(Type::Any)), ], ));