kotlin_poet_rs/spec/visibility_modifier.rs
1use crate::io::RenderKotlin;
2use crate::spec::CodeBlock;
3use crate::tokens;
4
5/// Represents [Kotlin's visibility modifier](https://kotlinlang.org/docs/visibility-modifiers.html)
6///
7/// Defaults to [VisibilityModifier::Public].
8/// Lack of visibility modifier means that the member is public.
9#[derive(PartialEq, Debug, Clone, Default)]
10pub enum VisibilityModifier {
11 /// `public` means that any client who sees the declaring class sees its `public` members.
12 #[default]
13 Public,
14 /// `internal` means that any client inside this module who sees the declaring class sees its `internal` members.
15 Internal,
16 /// `private` means that the member is visible inside this class only (including all its members).
17 Private,
18 /// `protected` means that the member has the same visibility as one marked as private, but that it is also visible in subclasses.
19 Protected,
20}
21
22impl RenderKotlin for VisibilityModifier {
23 fn render_into(&self, block: &mut CodeBlock) {
24 let keyword = match self {
25 VisibilityModifier::Public => tokens::keyword::PUBLIC,
26 VisibilityModifier::Internal => tokens::keyword::INTERNAL,
27 VisibilityModifier::Private => tokens::keyword::PRIVATE,
28 VisibilityModifier::Protected => tokens::keyword::PROTECTED
29 };
30
31 block.push_atom(keyword);
32 }
33}