#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum DeclarationContext {
TopLevel,
Member,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, serde::Serialize, serde::Deserialize)]
pub enum Visibility {
#[default]
Inherited,
Public,
Private,
Protected,
PublicCrate,
PublicSuper,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum TypeKind {
Class,
Struct,
Interface,
Trait,
Enum,
TypeAlias,
Newtype,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum PropertyStyle {
Accessor,
Field,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub enum ConstructorDelegationStyle {
Body,
Signature,
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct Modifiers {
pub visibility: Visibility,
pub is_static: bool,
pub is_abstract: bool,
pub is_readonly: bool,
pub is_async: bool,
pub is_override: bool,
pub is_constructor: bool,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_visibility_default() {
let vis = Visibility::default();
assert_eq!(vis, Visibility::Inherited);
}
#[test]
fn test_modifiers_default() {
let m = Modifiers::default();
assert_eq!(m.visibility, Visibility::Inherited);
assert!(!m.is_static);
assert!(!m.is_abstract);
assert!(!m.is_readonly);
assert!(!m.is_async);
assert!(!m.is_override);
assert!(!m.is_constructor);
}
}