Skip to content

Commit 63b75a4

Browse files
committed
Color for as a regular keyword when it's part of impl _ for _
1 parent 3f1c736 commit 63b75a4

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

crates/ra_ide/src/snapshots/highlighting.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@
3333
<span class="keyword">pub</span> <span class="field declaration">y</span>: <span class="builtin_type">i32</span>,
3434
}
3535

36+
<span class="keyword">trait</span> <span class="trait declaration">Bar</span> {
37+
<span class="keyword">fn</span> <span class="function declaration">bar</span>(&<span class="keyword">self</span>) -&gt; <span class="builtin_type">i32</span>;
38+
}
39+
40+
<span class="keyword">impl</span> <span class="trait">Bar</span> <span class="keyword">for</span> <span class="struct">Foo</span> {
41+
<span class="keyword">fn</span> <span class="function declaration">bar</span>(&<span class="keyword">self</span>) -&gt; <span class="builtin_type">i32</span> {
42+
<span class="keyword">self</span>.<span class="field">x</span>
43+
}
44+
}
45+
3646
<span class="keyword">static</span> <span class="keyword">mut</span> <span class="static declaration mutable">STATIC_MUT</span>: <span class="builtin_type">i32</span> = <span class="numeric_literal">0</span>;
3747

3848
<span class="keyword">fn</span> <span class="function declaration">foo</span>&lt;<span class="lifetime declaration">'a</span>, <span class="type_param declaration">T</span>&gt;() -&gt; <span class="type_param">T</span> {

crates/ra_ide/src/syntax_highlighting.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,13 +403,13 @@ fn highlight_element(
403403
T![break]
404404
| T![continue]
405405
| T![else]
406-
| T![for]
407406
| T![if]
408407
| T![loop]
409408
| T![match]
410409
| T![return]
411410
| T![while]
412411
| T![in] => h | HighlightModifier::ControlFlow,
412+
T![for] if !is_child_of_impl(element) => h | HighlightModifier::ControlFlow,
413413
T![unsafe] => h | HighlightModifier::Unsafe,
414414
_ => h,
415415
}
@@ -433,6 +433,13 @@ fn highlight_element(
433433
}
434434
}
435435

436+
fn is_child_of_impl(element: SyntaxElement) -> bool {
437+
match element.parent() {
438+
Some(e) => e.kind() == IMPL_DEF,
439+
_ => false,
440+
}
441+
}
442+
436443
fn highlight_name(db: &RootDatabase, def: Definition) -> Highlight {
437444
match def {
438445
Definition::Macro(_) => HighlightTag::Macro,

crates/ra_ide/src/syntax_highlighting/tests.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ struct Foo {
1717
pub y: i32,
1818
}
1919
20+
trait Bar {
21+
fn bar(&self) -> i32;
22+
}
23+
24+
impl Bar for Foo {
25+
fn bar(&self) -> i32 {
26+
self.x
27+
}
28+
}
29+
2030
static mut STATIC_MUT: i32 = 0;
2131
2232
fn foo<'a, T>() -> T {

0 commit comments

Comments
 (0)