aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/src/reparsing.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/src/reparsing.rs')
-rw-r--r--crates/ra_syntax/src/reparsing.rs10
1 files changed, 2 insertions, 8 deletions
diff --git a/crates/ra_syntax/src/reparsing.rs b/crates/ra_syntax/src/reparsing.rs
index 2f1de6b02..c5c609ad5 100644
--- a/crates/ra_syntax/src/reparsing.rs
+++ b/crates/ra_syntax/src/reparsing.rs
@@ -75,10 +75,7 @@ fn is_contextual_kw(text: &str) -> bool {
75type ParseFn = fn(&mut Parser); 75type ParseFn = fn(&mut Parser);
76fn find_reparsable_node(node: &SyntaxNode, range: TextRange) -> Option<(&SyntaxNode, ParseFn)> { 76fn find_reparsable_node(node: &SyntaxNode, range: TextRange) -> Option<(&SyntaxNode, ParseFn)> {
77 let node = algo::find_covering_node(node, range); 77 let node = algo::find_covering_node(node, range);
78 return node 78 return node.ancestors().filter_map(|node| reparser(node).map(|r| (node, r))).next();
79 .ancestors()
80 .filter_map(|node| reparser(node).map(|r| (node, r)))
81 .next();
82 79
83 fn reparser(node: &SyntaxNode) -> Option<ParseFn> { 80 fn reparser(node: &SyntaxNode) -> Option<ParseFn> {
84 let res = match node.kind() { 81 let res = match node.kind() {
@@ -169,10 +166,7 @@ mod tests {
169 let fully_reparsed = SourceFile::parse(&after); 166 let fully_reparsed = SourceFile::parse(&after);
170 let incrementally_reparsed = { 167 let incrementally_reparsed = {
171 let f = SourceFile::parse(&before); 168 let f = SourceFile::parse(&before);
172 let edit = AtomTextEdit { 169 let edit = AtomTextEdit { delete: range, insert: replace_with.to_string() };
173 delete: range,
174 insert: replace_with.to_string(),
175 };
176 let (node, green, new_errors) = 170 let (node, green, new_errors) =
177 reparser(f.syntax(), &edit).expect("cannot incrementally reparse"); 171 reparser(f.syntax(), &edit).expect("cannot incrementally reparse");
178 let green_root = node.replace_with(green); 172 let green_root = node.replace_with(green);