kotlin_poet_rs/spec/
member_inheritance_modifier.rs

1use crate::io::RenderKotlin;
2use crate::spec::CodeBlock;
3use crate::tokens;
4
5/// Inheritance modifiers applicable to class / file members
6#[derive(Debug, Clone)]
7pub enum MemberInheritanceModifier {
8    /// `open` modifier
9    Open,
10    /// `final` modifier
11    Final,
12    /// `abstract` modifier
13    Abstract,
14}
15
16impl RenderKotlin for MemberInheritanceModifier {
17    fn render_into(&self, block: &mut CodeBlock) {
18        let text = match self {
19            MemberInheritanceModifier::Open => tokens::keyword::OPEN,
20            MemberInheritanceModifier::Final => tokens::keyword::FINAL,
21            MemberInheritanceModifier::Abstract => tokens::keyword::ABSTRACT
22        };
23
24        block.push_atom(text);
25    }
26}
27
28#[cfg(test)]
29mod tests {
30    use crate::io::RenderKotlin;
31    use crate::spec::MemberInheritanceModifier;
32
33    #[test]
34    fn test_render() {
35        assert_eq!(MemberInheritanceModifier::Open.render_string(), "open");
36        assert_eq!(MemberInheritanceModifier::Final.render_string(), "final");
37        assert_eq!(MemberInheritanceModifier::Abstract.render_string(), "abstract");
38    }
39}