pub mod declares;
pub mod enum_declaration;
pub mod interface;
pub mod namespace;
pub mod type_alias;
pub mod type_annotations;
pub mod type_declarations;
pub use interface::InterfaceDeclaration;
#[cfg(feature = "extras")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "self-rust-tokenize", derive(self_rust_tokenize::SelfRustTokenize))]
#[cfg_attr(feature = "serde-serialize", derive(serde::Serialize))]
pub enum AnnotationPerforms {
PerformsStatements {
performs_keyword: crate::Keyword<crate::tsx_keywords::Performs>,
statements: crate::Block,
},
PerformsConst {
performs_keyword: crate::Keyword<crate::tsx_keywords::Performs>,
identifier: String,
},
}
#[cfg(feature = "extras")]
impl crate::ASTNode for AnnotationPerforms {
fn get_position(&self) -> &source_map::Span {
todo!()
}
fn from_reader(
reader: &mut impl tokenizer_lib::TokenReader<crate::TSXToken, crate::TokenStart>,
state: &mut crate::ParsingState,
settings: &crate::ParseOptions,
) -> crate::ParseResult<Self> {
let performs_keyword = crate::Keyword::from_reader(reader)?;
if let Some(tokenizer_lib::Token(crate::TSXToken::OpenBrace, _)) = reader.peek() {
let body = crate::Block::from_reader(reader, state, settings)?;
Ok(AnnotationPerforms::PerformsStatements { performs_keyword, statements: body })
} else {
reader.expect_next(crate::TSXToken::Keyword(crate::TSXKeyword::Const))?;
let (identifier, _) =
crate::tokens::token_as_identifier(reader.next().unwrap(), "performs const")?;
Ok(AnnotationPerforms::PerformsConst { performs_keyword, identifier })
}
}
fn to_string_from_buffer<T: source_map::ToString>(
&self,
_buf: &mut T,
_settings: &crate::ToStringOptions,
_depth: u8,
) {
todo!()
}
}