[[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",
]
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 (
[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"] }
};
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.
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(),
ast,
parsing::Token,
syntax_node::GreenNode,
- SmolStr, SyntaxError,
+ SyntaxError,
SyntaxKind::{self, *},
SyntaxTreeBuilder, TextRange, TextSize,
};
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);
use rowan::{GreenNodeBuilder, Language};
-use crate::{Parse, SmolStr, SyntaxError, SyntaxKind, TextSize};
+use crate::{Parse, SyntaxError, SyntaxKind, TextSize};
pub(crate) use rowan::{GreenNode, GreenToken, NodeOrToken};
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)
}