aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-01-30 20:02:27 +0000
committerAleksey Kladov <[email protected]>2019-01-31 20:23:30 +0000
commitb8f56f89c64f65b5a7d9c75f81597c28fba63b48 (patch)
treefbd24d2039f6bcad922210d7a3dd6bdc1f29b3c3 /crates
parent1bf47d43db631e096a0125b596fccad021ce6c2c (diff)
start token tree module
Diffstat (limited to 'crates')
-rw-r--r--crates/ra_hir/src/macros.rs3
-rw-r--r--crates/ra_hir/src/macros/token_tree.rs36
2 files changed, 39 insertions, 0 deletions
diff --git a/crates/ra_hir/src/macros.rs b/crates/ra_hir/src/macros.rs
index 7ca34d434..9aa706836 100644
--- a/crates/ra_hir/src/macros.rs
+++ b/crates/ra_hir/src/macros.rs
@@ -1,3 +1,6 @@
1#[allow(unused)]
2mod token_tree;
3
1/// Machinery for macro expansion. 4/// Machinery for macro expansion.
2/// 5///
3/// One of the more complicated things about macros is managing the source code 6/// One of the more complicated things about macros is managing the source code
diff --git a/crates/ra_hir/src/macros/token_tree.rs b/crates/ra_hir/src/macros/token_tree.rs
new file mode 100644
index 000000000..7026ce3b3
--- /dev/null
+++ b/crates/ra_hir/src/macros/token_tree.rs
@@ -0,0 +1,36 @@
1use ra_syntax::SmolStr;
2
3enum TokenTree {
4 Leaf(Leaf),
5 Subtree(Subtree),
6}
7
8enum Leaf {
9 Literal(Literal),
10 Punct(Punct),
11 Ident(Ident),
12}
13
14struct Subtree {
15 delimiter: Delimiter,
16 token_trees: Vec<TokenTree>,
17}
18
19enum Delimiter {
20 Parenthesis,
21 Brace,
22 Bracket,
23 None,
24}
25
26struct Literal {
27 text: SmolStr,
28}
29
30struct Punct {
31 char: char,
32}
33
34struct Ident {
35 text: SmolStr,
36}