1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use serde::{Deserialize, Serialize};
use swc_common::ast_serde;

use crate::common::Loc;

#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum CommentType {
    #[serde(rename = "CommentLine")]
    Line,
    #[serde(rename = "CommentBlock")]
    Block,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BaseComment {
    #[serde(rename = "type")]
    pub type_: CommentType,
    pub value: String,
    pub start: u32,
    pub end: u32,
    pub loc: Loc,
}

#[derive(Debug, Clone, PartialEq)]
#[ast_serde]
pub enum Comment {
    #[tag("CommentBlock")]
    Block(BaseComment),
    #[tag("CommentLine")]
    Line(BaseComment),
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum CommentTypeShorthand {
    Leading,
    Inner,
    Trailing,
}