diff options
author | Aleksey Kladov <[email protected]> | 2019-01-31 08:09:19 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-01-31 20:23:30 +0000 |
commit | 2980508ad2a04364f943af72c2c05337e03f4f6c (patch) | |
tree | 86c9b7bf5eaa5c825aaf179a96980e8174c49b28 /crates/ra_hir/src/macros/mbe.rs | |
parent | 82cf0185c36faf81dbdf7e64843bdfc5b4df1b21 (diff) |
debug impls
Diffstat (limited to 'crates/ra_hir/src/macros/mbe.rs')
-rw-r--r-- | crates/ra_hir/src/macros/mbe.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/crates/ra_hir/src/macros/mbe.rs b/crates/ra_hir/src/macros/mbe.rs index 1408ed511..7af7066fb 100644 --- a/crates/ra_hir/src/macros/mbe.rs +++ b/crates/ra_hir/src/macros/mbe.rs | |||
@@ -2,21 +2,25 @@ use ra_syntax::SmolStr; | |||
2 | 2 | ||
3 | use crate::macros::tt; | 3 | use crate::macros::tt; |
4 | 4 | ||
5 | struct MacroRules { | 5 | #[derive(Debug)] |
6 | pub(crate) struct MacroRules { | ||
6 | rules: Vec<Rule>, | 7 | rules: Vec<Rule>, |
7 | } | 8 | } |
8 | 9 | ||
10 | #[derive(Debug)] | ||
9 | struct Rule { | 11 | struct Rule { |
10 | lhs: TokenTree, | 12 | lhs: TokenTree, |
11 | rhs: TokenTree, | 13 | rhs: TokenTree, |
12 | } | 14 | } |
13 | 15 | ||
16 | #[derive(Debug)] | ||
14 | enum TokenTree { | 17 | enum TokenTree { |
15 | Leaf(Leaf), | 18 | Leaf(Leaf), |
16 | Subtree(Subtree), | 19 | Subtree(Subtree), |
17 | Repeat(Repeat), | 20 | Repeat(Repeat), |
18 | } | 21 | } |
19 | 22 | ||
23 | #[derive(Debug)] | ||
20 | enum Leaf { | 24 | enum Leaf { |
21 | Literal(Literal), | 25 | Literal(Literal), |
22 | Punct(Punct), | 26 | Punct(Punct), |
@@ -24,11 +28,13 @@ enum Leaf { | |||
24 | Var(Var), | 28 | Var(Var), |
25 | } | 29 | } |
26 | 30 | ||
31 | #[derive(Debug)] | ||
27 | struct Subtree { | 32 | struct Subtree { |
28 | delimiter: Delimiter, | 33 | delimiter: Delimiter, |
29 | token_trees: Vec<TokenTree>, | 34 | token_trees: Vec<TokenTree>, |
30 | } | 35 | } |
31 | 36 | ||
37 | #[derive(Debug)] | ||
32 | enum Delimiter { | 38 | enum Delimiter { |
33 | Parenthesis, | 39 | Parenthesis, |
34 | Brace, | 40 | Brace, |
@@ -36,33 +42,39 @@ enum Delimiter { | |||
36 | None, | 42 | None, |
37 | } | 43 | } |
38 | 44 | ||
45 | #[derive(Debug)] | ||
39 | struct Repeat { | 46 | struct Repeat { |
40 | subtree: Subtree, | 47 | subtree: Subtree, |
41 | kind: RepeatKind, | 48 | kind: RepeatKind, |
42 | } | 49 | } |
43 | 50 | ||
51 | #[derive(Debug)] | ||
44 | enum RepeatKind { | 52 | enum RepeatKind { |
45 | ZeroOrMore, | 53 | ZeroOrMore, |
46 | OneOrMore, | 54 | OneOrMore, |
47 | ZeroOrOne, | 55 | ZeroOrOne, |
48 | } | 56 | } |
49 | 57 | ||
58 | #[derive(Debug)] | ||
50 | struct Literal { | 59 | struct Literal { |
51 | text: SmolStr, | 60 | text: SmolStr, |
52 | } | 61 | } |
53 | 62 | ||
63 | #[derive(Debug)] | ||
54 | struct Punct { | 64 | struct Punct { |
55 | char: char, | 65 | char: char, |
56 | } | 66 | } |
57 | 67 | ||
68 | #[derive(Debug)] | ||
58 | struct Ident { | 69 | struct Ident { |
59 | text: SmolStr, | 70 | text: SmolStr, |
60 | } | 71 | } |
61 | 72 | ||
73 | #[derive(Debug)] | ||
62 | struct Var { | 74 | struct Var { |
63 | text: SmolStr, | 75 | text: SmolStr, |
64 | } | 76 | } |
65 | 77 | ||
66 | fn parse(tt: tt::TokenTree) -> MacroRules { | 78 | pub(crate) fn parse(tt: &tt::Subtree) -> MacroRules { |
67 | MacroRules { rules: Vec::new() } | 79 | MacroRules { rules: Vec::new() } |
68 | } | 80 | } |