diff options
Diffstat (limited to 'crates/ide/src/syntax_highlighting.rs')
-rw-r--r-- | crates/ide/src/syntax_highlighting.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/crates/ide/src/syntax_highlighting.rs b/crates/ide/src/syntax_highlighting.rs index ba3447b3a..e25b698e0 100644 --- a/crates/ide/src/syntax_highlighting.rs +++ b/crates/ide/src/syntax_highlighting.rs | |||
@@ -12,7 +12,7 @@ mod html; | |||
12 | #[cfg(test)] | 12 | #[cfg(test)] |
13 | mod tests; | 13 | mod tests; |
14 | 14 | ||
15 | use hir::{Name, Semantics}; | 15 | use hir::{InFile, Name, Semantics}; |
16 | use ide_db::{RootDatabase, SymbolKind}; | 16 | use ide_db::{RootDatabase, SymbolKind}; |
17 | use rustc_hash::FxHashMap; | 17 | use rustc_hash::FxHashMap; |
18 | use syntax::{ | 18 | use syntax::{ |
@@ -73,14 +73,20 @@ pub(crate) fn highlight( | |||
73 | }; | 73 | }; |
74 | 74 | ||
75 | let mut hl = highlights::Highlights::new(root.text_range()); | 75 | let mut hl = highlights::Highlights::new(root.text_range()); |
76 | traverse(&mut hl, &sema, &root, range_to_highlight, syntactic_name_ref_highlighting); | 76 | traverse( |
77 | &mut hl, | ||
78 | &sema, | ||
79 | InFile::new(file_id.into(), &root), | ||
80 | range_to_highlight, | ||
81 | syntactic_name_ref_highlighting, | ||
82 | ); | ||
77 | hl.to_vec() | 83 | hl.to_vec() |
78 | } | 84 | } |
79 | 85 | ||
80 | fn traverse( | 86 | fn traverse( |
81 | hl: &mut Highlights, | 87 | hl: &mut Highlights, |
82 | sema: &Semantics<RootDatabase>, | 88 | sema: &Semantics<RootDatabase>, |
83 | root: &SyntaxNode, | 89 | root: InFile<&SyntaxNode>, |
84 | range_to_highlight: TextRange, | 90 | range_to_highlight: TextRange, |
85 | syntactic_name_ref_highlighting: bool, | 91 | syntactic_name_ref_highlighting: bool, |
86 | ) { | 92 | ) { |
@@ -93,7 +99,7 @@ fn traverse( | |||
93 | 99 | ||
94 | // Walk all nodes, keeping track of whether we are inside a macro or not. | 100 | // Walk all nodes, keeping track of whether we are inside a macro or not. |
95 | // If in macro, expand it first and highlight the expanded code. | 101 | // If in macro, expand it first and highlight the expanded code. |
96 | for event in root.preorder_with_tokens() { | 102 | for event in root.value.preorder_with_tokens() { |
97 | let event_range = match &event { | 103 | let event_range = match &event { |
98 | WalkEvent::Enter(it) | WalkEvent::Leave(it) => it.text_range(), | 104 | WalkEvent::Enter(it) | WalkEvent::Leave(it) => it.text_range(), |
99 | }; | 105 | }; |
@@ -150,7 +156,7 @@ fn traverse( | |||
150 | WalkEvent::Enter(it) => it, | 156 | WalkEvent::Enter(it) => it, |
151 | WalkEvent::Leave(it) => { | 157 | WalkEvent::Leave(it) => { |
152 | if let Some(node) = it.as_node() { | 158 | if let Some(node) = it.as_node() { |
153 | inject::doc_comment(hl, sema, node); | 159 | inject::doc_comment(hl, sema, root.with_value(node)); |
154 | } | 160 | } |
155 | continue; | 161 | continue; |
156 | } | 162 | } |