diff options
author | Aleksey Kladov <[email protected]> | 2021-01-20 11:04:53 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2021-01-20 11:04:53 +0000 |
commit | 3429b32ad119756985e1a7bfa5e9e53042671f8b (patch) | |
tree | c73e213a5a1a2b7a344d7f5860edfd9531dfb65d /crates/syntax/src | |
parent | 46b4f89c920c314caf1a8af2abdb09732d100d67 (diff) |
:arrow_up: rowan
It now stores text inline with tokens
Diffstat (limited to 'crates/syntax/src')
-rw-r--r-- | crates/syntax/src/lib.rs | 4 | ||||
-rw-r--r-- | crates/syntax/src/parsing/reparsing.rs | 3 | ||||
-rw-r--r-- | crates/syntax/src/parsing/text_tree_sink.rs | 4 | ||||
-rw-r--r-- | crates/syntax/src/syntax_node.rs | 4 |
4 files changed, 7 insertions, 8 deletions
diff --git a/crates/syntax/src/lib.rs b/crates/syntax/src/lib.rs index ea7482bb1..11294c5b2 100644 --- a/crates/syntax/src/lib.rs +++ b/crates/syntax/src/lib.rs | |||
@@ -56,9 +56,9 @@ pub use crate::{ | |||
56 | }; | 56 | }; |
57 | pub use parser::{SyntaxKind, T}; | 57 | pub use parser::{SyntaxKind, T}; |
58 | pub use rowan::{ | 58 | pub use rowan::{ |
59 | Direction, GreenNode, NodeOrToken, SmolStr, SyntaxText, TextRange, TextSize, TokenAtOffset, | 59 | Direction, GreenNode, NodeOrToken, SyntaxText, TextRange, TextSize, TokenAtOffset, WalkEvent, |
60 | WalkEvent, | ||
61 | }; | 60 | }; |
61 | pub use smol_str::SmolStr; | ||
62 | 62 | ||
63 | /// `Parse` is the result of the parsing: a syntax tree and a collection of | 63 | /// `Parse` is the result of the parsing: a syntax tree and a collection of |
64 | /// errors. | 64 | /// errors. |
diff --git a/crates/syntax/src/parsing/reparsing.rs b/crates/syntax/src/parsing/reparsing.rs index 76f01084c..3d637bf91 100644 --- a/crates/syntax/src/parsing/reparsing.rs +++ b/crates/syntax/src/parsing/reparsing.rs | |||
@@ -73,8 +73,7 @@ fn reparse_token<'node>( | |||
73 | new_text.pop(); | 73 | new_text.pop(); |
74 | } | 74 | } |
75 | 75 | ||
76 | let new_token = | 76 | let new_token = GreenToken::new(rowan::SyntaxKind(prev_token_kind.into()), &new_text); |
77 | GreenToken::new(rowan::SyntaxKind(prev_token_kind.into()), new_text.into()); | ||
78 | Some(( | 77 | Some(( |
79 | prev_token.replace_with(new_token), | 78 | prev_token.replace_with(new_token), |
80 | new_err.into_iter().collect(), | 79 | new_err.into_iter().collect(), |
diff --git a/crates/syntax/src/parsing/text_tree_sink.rs b/crates/syntax/src/parsing/text_tree_sink.rs index ce27c3dd9..d5ddc076f 100644 --- a/crates/syntax/src/parsing/text_tree_sink.rs +++ b/crates/syntax/src/parsing/text_tree_sink.rs | |||
@@ -8,7 +8,7 @@ use crate::{ | |||
8 | ast, | 8 | ast, |
9 | parsing::Token, | 9 | parsing::Token, |
10 | syntax_node::GreenNode, | 10 | syntax_node::GreenNode, |
11 | SmolStr, SyntaxError, | 11 | SyntaxError, |
12 | SyntaxKind::{self, *}, | 12 | SyntaxKind::{self, *}, |
13 | SyntaxTreeBuilder, TextRange, TextSize, | 13 | SyntaxTreeBuilder, TextRange, TextSize, |
14 | }; | 14 | }; |
@@ -135,7 +135,7 @@ impl<'a> TextTreeSink<'a> { | |||
135 | 135 | ||
136 | fn do_token(&mut self, kind: SyntaxKind, len: TextSize, n_tokens: usize) { | 136 | fn do_token(&mut self, kind: SyntaxKind, len: TextSize, n_tokens: usize) { |
137 | let range = TextRange::at(self.text_pos, len); | 137 | let range = TextRange::at(self.text_pos, len); |
138 | let text: SmolStr = self.text[range].into(); | 138 | let text = &self.text[range]; |
139 | self.text_pos += len; | 139 | self.text_pos += len; |
140 | self.token_pos += n_tokens; | 140 | self.token_pos += n_tokens; |
141 | self.inner.token(kind, text); | 141 | self.inner.token(kind, text); |
diff --git a/crates/syntax/src/syntax_node.rs b/crates/syntax/src/syntax_node.rs index cc30138fa..8f643b228 100644 --- a/crates/syntax/src/syntax_node.rs +++ b/crates/syntax/src/syntax_node.rs | |||
@@ -8,7 +8,7 @@ | |||
8 | 8 | ||
9 | use rowan::{GreenNodeBuilder, Language}; | 9 | use rowan::{GreenNodeBuilder, Language}; |
10 | 10 | ||
11 | use crate::{Parse, SmolStr, SyntaxError, SyntaxKind, TextSize}; | 11 | use crate::{Parse, SyntaxError, SyntaxKind, TextSize}; |
12 | 12 | ||
13 | pub(crate) use rowan::{GreenNode, GreenToken, NodeOrToken}; | 13 | pub(crate) use rowan::{GreenNode, GreenToken, NodeOrToken}; |
14 | 14 | ||
@@ -53,7 +53,7 @@ impl SyntaxTreeBuilder { | |||
53 | Parse::new(green, errors) | 53 | Parse::new(green, errors) |
54 | } | 54 | } |
55 | 55 | ||
56 | pub fn token(&mut self, kind: SyntaxKind, text: SmolStr) { | 56 | pub fn token(&mut self, kind: SyntaxKind, text: &str) { |
57 | let kind = RustLanguage::kind_to_raw(kind); | 57 | let kind = RustLanguage::kind_to_raw(kind); |
58 | self.inner.token(kind, text) | 58 | self.inner.token(kind, text) |
59 | } | 59 | } |