mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-26 20:09:19 +00:00
switch to new rowan
This commit is contained in:
parent
dec9bde108
commit
9e213385c9
50 changed files with 1026 additions and 1227 deletions
|
@ -1,6 +1,6 @@
|
|||
use std::{fmt, ops};
|
||||
|
||||
use crate::{SyntaxNode, TextRange, TextUnit};
|
||||
use crate::{SyntaxNode, TextRange, TextUnit, SyntaxElement};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct SyntaxText<'a> {
|
||||
|
@ -15,11 +15,14 @@ impl<'a> SyntaxText<'a> {
|
|||
|
||||
pub fn chunks(&self) -> impl Iterator<Item = &'a str> {
|
||||
let range = self.range;
|
||||
self.node.descendants().filter_map(move |node| {
|
||||
let text = node.leaf_text()?;
|
||||
let range = range.intersection(&node.range())?;
|
||||
let range = range - node.range().start();
|
||||
Some(&text[range])
|
||||
self.node.descendants_with_tokens().filter_map(move |el| match el {
|
||||
SyntaxElement::Token(t) => {
|
||||
let text = t.text();
|
||||
let range = range.intersection(&t.range())?;
|
||||
let range = range - t.range().start();
|
||||
Some(&text[range])
|
||||
}
|
||||
SyntaxElement::Node(_) => None,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue