diff --git a/src/protocol/ast.rs b/src/protocol/ast.rs index 829ec525d7d64a682ab17ae0f0ee5cafbbc07d14..de59ceb8784acf851202f9c4f8aa0cfb0ebfa85c 100644 --- a/src/protocol/ast.rs +++ b/src/protocol/ast.rs @@ -1004,6 +1004,16 @@ pub struct LiteralStruct { pub(crate) definition: Option } +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +pub struct LiteralEnum { + // Phase 1: parser + pub(crate) identifier: NamespacedIdentifier, + pub(crate) poly_args: Vec, + // Phase 2: linker + pub(crate) definition: Option, + pub(crate) variant_idx: usize, +} + #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub enum Method { Get, @@ -1031,6 +1041,13 @@ impl Field { _ => false, } } + + pub fn as_symbolic(&self) -> &FieldSymbolic { + match self { + Field::Symbolic(v) => v, + _ => unreachable!("attempted to get Field::Symbolic from {:?}", self) + } + } } #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]