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
39
40
41
42
43
44
45
46
47
48
49
use crate::{diagnostic::Diagnostic, span::Span};
use serde::Serialize;
macro_rules! define_marker_tag {
( $struct_name:ident ) => {
#[derive(Debug, PartialEq, Serialize)]
pub struct $struct_name<'a> {
#[serde(skip)]
pub source: Span<'a>,
}
impl<'a> $struct_name<'a> {
pub fn parse() -> Result<Self, Diagnostic> {
Ok(Self {
source: Span::dummy(""),
})
}
}
};
}
define_marker_tag!(ServerTag);
define_marker_tag!(PluginTag);
define_marker_tag!(ClientTag);
define_marker_tag!(PrivateTag);
define_marker_tag!(IgnoreTag);
define_marker_tag!(YieldsTag);
define_marker_tag!(ReadOnlyTag);
define_marker_tag!(UnreleasedTag);
#[cfg(test)]
mod test {
use insta::assert_yaml_snapshot;
use super::*;
#[test]
fn snapshot() {
assert_yaml_snapshot!(ServerTag::parse(), @r###"
---
Ok: {}
"###);
assert_yaml_snapshot!(ServerTag::parse(), @r###"
---
Ok: {}
"###);
}
}