aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_mbe/src
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-02-11 16:24:39 +0000
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-02-11 16:24:39 +0000
commit77ccac74f94fbe387fc587d46f9d93f04fce3644 (patch)
treef0cc15c1fb77ca429717fcb1d5975f5cb5622c9e /crates/ra_mbe/src
parenta180674986df6ff4c1934dc92f29b49e607477db (diff)
parent2efdf41bdb178ebf1ff0f8e3b335f491c84d7fa3 (diff)
Merge #790
790: make macro-rules eq r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_mbe/src')
-rw-r--r--crates/ra_mbe/src/lib.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/crates/ra_mbe/src/lib.rs b/crates/ra_mbe/src/lib.rs
index 87782e5b9..b9f555ef6 100644
--- a/crates/ra_mbe/src/lib.rs
+++ b/crates/ra_mbe/src/lib.rs
@@ -30,7 +30,7 @@ pub use crate::syntax_bridge::ast_to_token_tree;
30/// be very confusing is that AST has almost exactly the same shape as 30/// be very confusing is that AST has almost exactly the same shape as
31/// `tt::TokenTree`, but there's a crucial difference: in macro rules, `$ident` 31/// `tt::TokenTree`, but there's a crucial difference: in macro rules, `$ident`
32/// and `$()*` have special meaning (see `Var` and `Repeat` data structures) 32/// and `$()*` have special meaning (see `Var` and `Repeat` data structures)
33#[derive(Debug)] 33#[derive(Debug, PartialEq, Eq)]
34pub struct MacroRules { 34pub struct MacroRules {
35 pub(crate) rules: Vec<Rule>, 35 pub(crate) rules: Vec<Rule>,
36} 36}
@@ -44,13 +44,13 @@ impl MacroRules {
44 } 44 }
45} 45}
46 46
47#[derive(Debug)] 47#[derive(Debug, PartialEq, Eq)]
48pub(crate) struct Rule { 48pub(crate) struct Rule {
49 pub(crate) lhs: Subtree, 49 pub(crate) lhs: Subtree,
50 pub(crate) rhs: Subtree, 50 pub(crate) rhs: Subtree,
51} 51}
52 52
53#[derive(Debug)] 53#[derive(Debug, PartialEq, Eq)]
54pub(crate) enum TokenTree { 54pub(crate) enum TokenTree {
55 Leaf(Leaf), 55 Leaf(Leaf),
56 Subtree(Subtree), 56 Subtree(Subtree),
@@ -58,7 +58,7 @@ pub(crate) enum TokenTree {
58} 58}
59impl_froms!(TokenTree: Leaf, Subtree, Repeat); 59impl_froms!(TokenTree: Leaf, Subtree, Repeat);
60 60
61#[derive(Debug)] 61#[derive(Debug, PartialEq, Eq)]
62pub(crate) enum Leaf { 62pub(crate) enum Leaf {
63 Literal(Literal), 63 Literal(Literal),
64 Punct(Punct), 64 Punct(Punct),
@@ -67,37 +67,37 @@ pub(crate) enum Leaf {
67} 67}
68impl_froms!(Leaf: Literal, Punct, Ident, Var); 68impl_froms!(Leaf: Literal, Punct, Ident, Var);
69 69
70#[derive(Debug)] 70#[derive(Debug, PartialEq, Eq)]
71pub(crate) struct Subtree { 71pub(crate) struct Subtree {
72 pub(crate) delimiter: Delimiter, 72 pub(crate) delimiter: Delimiter,
73 pub(crate) token_trees: Vec<TokenTree>, 73 pub(crate) token_trees: Vec<TokenTree>,
74} 74}
75 75
76#[derive(Debug)] 76#[derive(Debug, PartialEq, Eq)]
77pub(crate) struct Repeat { 77pub(crate) struct Repeat {
78 pub(crate) subtree: Subtree, 78 pub(crate) subtree: Subtree,
79 pub(crate) kind: RepeatKind, 79 pub(crate) kind: RepeatKind,
80 pub(crate) separator: Option<char>, 80 pub(crate) separator: Option<char>,
81} 81}
82 82
83#[derive(Debug)] 83#[derive(Debug, PartialEq, Eq)]
84pub(crate) enum RepeatKind { 84pub(crate) enum RepeatKind {
85 ZeroOrMore, 85 ZeroOrMore,
86 OneOrMore, 86 OneOrMore,
87 ZeroOrOne, 87 ZeroOrOne,
88} 88}
89 89
90#[derive(Debug)] 90#[derive(Debug, PartialEq, Eq)]
91pub(crate) struct Literal { 91pub(crate) struct Literal {
92 pub(crate) text: SmolStr, 92 pub(crate) text: SmolStr,
93} 93}
94 94
95#[derive(Debug)] 95#[derive(Debug, PartialEq, Eq)]
96pub(crate) struct Ident { 96pub(crate) struct Ident {
97 pub(crate) text: SmolStr, 97 pub(crate) text: SmolStr,
98} 98}
99 99
100#[derive(Debug)] 100#[derive(Debug, PartialEq, Eq)]
101pub(crate) struct Var { 101pub(crate) struct Var {
102 pub(crate) text: SmolStr, 102 pub(crate) text: SmolStr,
103 pub(crate) kind: Option<SmolStr>, 103 pub(crate) kind: Option<SmolStr>,