]> git.lizzy.rs Git - rust.git/commitdiff
:arrow_up: rowan
authorAleksey Kladov <aleksey.kladov@gmail.com>
Wed, 20 Jan 2021 11:04:53 +0000 (14:04 +0300)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Wed, 20 Jan 2021 11:04:53 +0000 (14:04 +0300)
It now stores text inline with tokens

Cargo.lock
crates/mbe/src/syntax_bridge.rs
crates/syntax/Cargo.toml
crates/syntax/src/lib.rs
crates/syntax/src/parsing/reparsing.rs
crates/syntax/src/parsing/text_tree_sink.rs
crates/syntax/src/syntax_node.rs

index 130722decddc38ea1a7bcafb8be9103879f41b60..6b420eef9ff33745be3dec5241b8068dc5108262 100644 (file)
@@ -1375,12 +1375,13 @@ checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581"
 
 [[package]]
 name = "rowan"
-version = "0.11.0"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bea4527c692099becd37ec777cfd6949d0534348528d2fc84ee420d2d5fac83d"
 dependencies = [
  "hashbrown",
  "memoffset",
  "rustc-hash",
- "smol_str",
  "text-size",
 ]
 
index 1e112388997d6d27652ebd42266a1699cc3def70..0cdc175be7bd6aaec1a30d43b0f927e84566485b 100644 (file)
@@ -682,10 +682,8 @@ fn token(&mut self, kind: SyntaxKind, mut n_tokens: u8) {
             self.text_pos += TextSize::of(text);
         }
 
-        let text = SmolStr::new(self.buf.as_str());
+        self.inner.token(kind, self.buf.as_str());
         self.buf.clear();
-        self.inner.token(kind, text);
-
         // Add whitespace between adjoint puncts
         let next = last.bump();
         if let (
index 165533388dacbfe19d90be4acd8e2b5f0da5ec14..55b437a3a22942357510c646a15fa5c5855a2360 100644 (file)
@@ -12,15 +12,12 @@ doctest = false
 
 [dependencies]
 itertools = "0.10.0"
-rowan = { path="../../../rowan" }
+rowan = "0.12"
 rustc_lexer = { version = "697.0.0", package = "rustc-ap-rustc_lexer" }
 rustc-hash = "1.1.0"
 arrayvec = "0.5.1"
 once_cell = "1.3.1"
 indexmap = "1.4.0"
-# This crate transitively depends on `smol_str` via `rowan`.
-# ideally, `serde` should be enabled by `rust-analyzer`, but we enable it here
-# to reduce number of compilations
 smol_str = { version = "0.1.15", features = ["serde"] }
 serde = { version = "1.0.106", features = ["derive"] }
 
index ea7482bb12451d5b93816f45118bb6c0cf17a27b..11294c5b22b0204a9ad06707e53f7ce9456442f1 100644 (file)
@@ -56,9 +56,9 @@ macro_rules! eprintln {
 };
 pub use parser::{SyntaxKind, T};
 pub use rowan::{
-    Direction, GreenNode, NodeOrToken, SmolStr, SyntaxText, TextRange, TextSize, TokenAtOffset,
-    WalkEvent,
+    Direction, GreenNode, NodeOrToken, SyntaxText, TextRange, TextSize, TokenAtOffset, WalkEvent,
 };
+pub use smol_str::SmolStr;
 
 /// `Parse` is the result of the parsing: a syntax tree and a collection of
 /// errors.
index 76f01084cd99c7e6916cf4ecced94851c3dcb86c..3d637bf9174041635aaa962f251fbb0407f21a6d 100644 (file)
@@ -73,8 +73,7 @@ fn reparse_token<'node>(
                 new_text.pop();
             }
 
-            let new_token =
-                GreenToken::new(rowan::SyntaxKind(prev_token_kind.into()), new_text.into());
+            let new_token = GreenToken::new(rowan::SyntaxKind(prev_token_kind.into()), &new_text);
             Some((
                 prev_token.replace_with(new_token),
                 new_err.into_iter().collect(),
index ce27c3dd96a73df7f17d7e72b1bbe89a22d57546..d5ddc076f3cd74a49a3c9eadca3334cc018cfef6 100644 (file)
@@ -8,7 +8,7 @@
     ast,
     parsing::Token,
     syntax_node::GreenNode,
-    SmolStr, SyntaxError,
+    SyntaxError,
     SyntaxKind::{self, *},
     SyntaxTreeBuilder, TextRange, TextSize,
 };
@@ -135,7 +135,7 @@ fn eat_n_trivias(&mut self, n: usize) {
 
     fn do_token(&mut self, kind: SyntaxKind, len: TextSize, n_tokens: usize) {
         let range = TextRange::at(self.text_pos, len);
-        let text: SmolStr = self.text[range].into();
+        let text = &self.text[range];
         self.text_pos += len;
         self.token_pos += n_tokens;
         self.inner.token(kind, text);
index cc30138faa00e8603a864b35055c15c3e9b36d53..8f643b2284e14d3c2f35ab3c6f1993b9a452bad8 100644 (file)
@@ -8,7 +8,7 @@
 
 use rowan::{GreenNodeBuilder, Language};
 
-use crate::{Parse, SmolStr, SyntaxError, SyntaxKind, TextSize};
+use crate::{Parse, SyntaxError, SyntaxKind, TextSize};
 
 pub(crate) use rowan::{GreenNode, GreenToken, NodeOrToken};
 
@@ -53,7 +53,7 @@ pub fn finish(self) -> Parse<SyntaxNode> {
         Parse::new(green, errors)
     }
 
-    pub fn token(&mut self, kind: SyntaxKind, text: SmolStr) {
+    pub fn token(&mut self, kind: SyntaxKind, text: &str) {
         let kind = RustLanguage::kind_to_raw(kind);
         self.inner.token(kind, text)
     }