Skip to main content

ezno_parser/types/
mod.rs

1//! Includes type annotations + syntax added by TypeScript (and Ezno) such as `declare` declarations
2
3pub mod declare_variable;
4pub mod enum_declaration;
5pub mod interface;
6pub mod namespace;
7pub mod type_alias;
8pub mod type_annotations;
9pub mod type_declarations;
10
11pub use interface::InterfaceDeclaration;
12
13use crate::{derive_ASTNode, TSXKeyword, TSXToken};
14
15/// [See](https://www.typescriptlang.org/docs/handbook/2/classes.html#member-visibility)
16#[apply(derive_ASTNode)]
17#[derive(Debug, Clone, PartialEq, Eq)]
18pub enum Visibility {
19	Private,
20	Public,
21	Protected,
22}
23
24impl Visibility {
25	#[must_use]
26	pub fn as_str(&self) -> &'static str {
27		match self {
28			Visibility::Private => "private ",
29			Visibility::Public => "public ",
30			Visibility::Protected => "protected ",
31		}
32	}
33
34	#[must_use]
35	pub fn token_is_visibility_specifier(t: &TSXToken) -> bool {
36		matches!(
37			t,
38			TSXToken::Keyword(TSXKeyword::Private | TSXKeyword::Public | TSXKeyword::Protected)
39		)
40	}
41}