aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/macros/mbe.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/macros/mbe.rs')
-rw-r--r--crates/ra_hir/src/macros/mbe.rs16
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
3use crate::macros::tt; 3use crate::macros::tt;
4 4
5struct MacroRules { 5#[derive(Debug)]
6pub(crate) struct MacroRules {
6 rules: Vec<Rule>, 7 rules: Vec<Rule>,
7} 8}
8 9
10#[derive(Debug)]
9struct Rule { 11struct Rule {
10 lhs: TokenTree, 12 lhs: TokenTree,
11 rhs: TokenTree, 13 rhs: TokenTree,
12} 14}
13 15
16#[derive(Debug)]
14enum TokenTree { 17enum 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)]
20enum Leaf { 24enum 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)]
27struct Subtree { 32struct Subtree {
28 delimiter: Delimiter, 33 delimiter: Delimiter,
29 token_trees: Vec<TokenTree>, 34 token_trees: Vec<TokenTree>,
30} 35}
31 36
37#[derive(Debug)]
32enum Delimiter { 38enum 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)]
39struct Repeat { 46struct Repeat {
40 subtree: Subtree, 47 subtree: Subtree,
41 kind: RepeatKind, 48 kind: RepeatKind,
42} 49}
43 50
51#[derive(Debug)]
44enum RepeatKind { 52enum RepeatKind {
45 ZeroOrMore, 53 ZeroOrMore,
46 OneOrMore, 54 OneOrMore,
47 ZeroOrOne, 55 ZeroOrOne,
48} 56}
49 57
58#[derive(Debug)]
50struct Literal { 59struct Literal {
51 text: SmolStr, 60 text: SmolStr,
52} 61}
53 62
63#[derive(Debug)]
54struct Punct { 64struct Punct {
55 char: char, 65 char: char,
56} 66}
57 67
68#[derive(Debug)]
58struct Ident { 69struct Ident {
59 text: SmolStr, 70 text: SmolStr,
60} 71}
61 72
73#[derive(Debug)]
62struct Var { 74struct Var {
63 text: SmolStr, 75 text: SmolStr,
64} 76}
65 77
66fn parse(tt: tt::TokenTree) -> MacroRules { 78pub(crate) fn parse(tt: &tt::Subtree) -> MacroRules {
67 MacroRules { rules: Vec::new() } 79 MacroRules { rules: Vec::new() }
68} 80}