diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2022-03-05 23:34:37 +0100 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2022-03-05 23:34:37 +0100 |
| commit | 5c0aee013e93e40ab54d1928e2e15aac81d1aaea (patch) | |
| tree | 0b8033b77a7fdca1c845de6832407a6722e2fde2 | |
| parent | c0d64711434644e7da02a3be718cd36270d37d0a (diff) | |
| download | rust-5c0aee013e93e40ab54d1928e2e15aac81d1aaea.tar.gz rust-5c0aee013e93e40ab54d1928e2e15aac81d1aaea.zip | |
Fix highlighting of `Self`
| -rw-r--r-- | crates/ide/src/syntax_highlighting.rs | 1 | ||||
| -rw-r--r-- | crates/ide/src/syntax_highlighting/highlight.rs | 1 | ||||
| -rw-r--r-- | crates/ide/src/syntax_highlighting/tags.rs | 1 | ||||
| -rw-r--r-- | crates/ide/src/syntax_highlighting/test_data/highlight_general.html | 6 | ||||
| -rw-r--r-- | crates/ide_completion/src/item.rs | 1 | ||||
| -rw-r--r-- | crates/ide_db/src/lib.rs | 1 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/semantic_tokens.rs | 1 | ||||
| -rw-r--r-- | crates/rust-analyzer/src/to_proto.rs | 6 | ||||
| -rw-r--r-- | editors/code/package.json | 5 |
9 files changed, 19 insertions, 4 deletions
diff --git a/crates/ide/src/syntax_highlighting.rs b/crates/ide/src/syntax_highlighting.rs index bd6431da815..968aa331164 100644 --- a/crates/ide/src/syntax_highlighting.rs +++ b/crates/ide/src/syntax_highlighting.rs @@ -118,6 +118,7 @@ pub struct HlRange { // parameter:: Emitted for non-self function parameters. // property:: Emitted for struct and union fields. // selfKeyword:: Emitted for the self function parameter and self path-specifier. +// selfTypeKeyword:: Emitted for the Self type parameter. // toolModule:: Emitted for tool modules. // typeParameter:: Emitted for type parameters. // unresolvedReference:: Emitted for unresolved references, names that rust-analyzer can't find the definition of. diff --git a/crates/ide/src/syntax_highlighting/highlight.rs b/crates/ide/src/syntax_highlighting/highlight.rs index 8ad27b1fdcd..bf532b5bb2a 100644 --- a/crates/ide/src/syntax_highlighting/highlight.rs +++ b/crates/ide/src/syntax_highlighting/highlight.rs @@ -190,6 +190,7 @@ fn keyword( T![for] if parent_matches::<ast::ForExpr>(&token) => h | HlMod::ControlFlow, T![unsafe] => h | HlMod::Unsafe, T![true] | T![false] => HlTag::BoolLiteral.into(), + T![Self] => return Some(HlTag::Symbol(SymbolKind::SelfType).into()), // crate is handled just as a token if it's in an `extern crate` T![crate] if parent_matches::<ast::ExternCrate>(&token) => h, // self, crate and super are handled as either a Name or NameRef already, unless they diff --git a/crates/ide/src/syntax_highlighting/tags.rs b/crates/ide/src/syntax_highlighting/tags.rs index bdf484e01f7..cb9d36f8304 100644 --- a/crates/ide/src/syntax_highlighting/tags.rs +++ b/crates/ide/src/syntax_highlighting/tags.rs @@ -141,6 +141,7 @@ impl HlTag { SymbolKind::Macro => "macro", SymbolKind::Module => "module", SymbolKind::SelfParam => "self_keyword", + SymbolKind::SelfType => "self_type_keyword", SymbolKind::Static => "static", SymbolKind::Struct => "struct", SymbolKind::ToolModule => "tool_module", diff --git a/crates/ide/src/syntax_highlighting/test_data/highlight_general.html b/crates/ide/src/syntax_highlighting/test_data/highlight_general.html index 8501e0ffe58..27e3e57065c 100644 --- a/crates/ide/src/syntax_highlighting/test_data/highlight_general.html +++ b/crates/ide/src/syntax_highlighting/test_data/highlight_general.html @@ -59,11 +59,11 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd <span class="field declaration">x</span><span class="colon">:</span> <span class="builtin_type">u32</span><span class="comma">,</span> <span class="brace">}</span> -<span class="keyword">trait</span> <span class="trait declaration">Bar</span> <span class="keyword">where</span> <span class="keyword">Self</span><span class="colon">:</span> <span class="brace">{</span> +<span class="keyword">trait</span> <span class="trait declaration">Bar</span> <span class="keyword">where</span> <span class="self_type_keyword">Self</span><span class="colon">:</span> <span class="brace">{</span> <span class="keyword">fn</span> <span class="function associated declaration reference trait">bar</span><span class="parenthesis">(</span><span class="operator">&</span><span class="self_keyword declaration reference">self</span><span class="parenthesis">)</span> <span class="operator">-></span> <span class="builtin_type">i32</span><span class="semicolon">;</span> <span class="brace">}</span> -<span class="keyword">impl</span> <span class="trait">Bar</span> <span class="keyword">for</span> <span class="struct">Foo</span> <span class="keyword">where</span> <span class="keyword">Self</span><span class="colon">:</span> <span class="brace">{</span> +<span class="keyword">impl</span> <span class="trait">Bar</span> <span class="keyword">for</span> <span class="struct">Foo</span> <span class="keyword">where</span> <span class="self_type_keyword">Self</span><span class="colon">:</span> <span class="brace">{</span> <span class="keyword">fn</span> <span class="function associated declaration reference trait">bar</span><span class="parenthesis">(</span><span class="operator">&</span><span class="self_keyword declaration reference">self</span><span class="parenthesis">)</span> <span class="operator">-></span> <span class="builtin_type">i32</span> <span class="brace">{</span> <span class="self_keyword reference">self</span><span class="operator">.</span><span class="field">x</span> <span class="brace">}</span> @@ -210,7 +210,7 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd <span class="keyword">impl</span> <span class="enum public">Bool</span> <span class="brace">{</span> <span class="keyword">pub</span> <span class="keyword">const</span> <span class="keyword">fn</span> <span class="function associated consuming declaration public">to_primitive</span><span class="parenthesis">(</span><span class="self_keyword declaration">self</span><span class="parenthesis">)</span> <span class="operator">-></span> <span class="builtin_type">bool</span> <span class="brace">{</span> - <span class="unresolved_reference">matches</span><span class="macro_bang">!</span><span class="parenthesis">(</span><span class="keyword">self</span><span class="comma">,</span> <span class="keyword">Self</span><span class="colon">:</span><span class="colon">:</span>True<span class="parenthesis">)</span> + <span class="unresolved_reference">matches</span><span class="macro_bang">!</span><span class="parenthesis">(</span><span class="keyword">self</span><span class="comma">,</span> <span class="self_type_keyword">Self</span><span class="colon">:</span><span class="colon">:</span>True<span class="parenthesis">)</span> <span class="brace">}</span> <span class="brace">}</span> <span class="keyword">const</span> <span class="constant declaration">USAGE_OF_BOOL</span><span class="colon">:</span><span class="builtin_type">bool</span> <span class="operator">=</span> <span class="enum public">Bool</span><span class="operator">::</span><span class="enum_variant public">True</span><span class="operator">.</span><span class="function associated consuming public">to_primitive</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span> diff --git a/crates/ide_completion/src/item.rs b/crates/ide_completion/src/item.rs index acaf17c2551..32b14764a10 100644 --- a/crates/ide_completion/src/item.rs +++ b/crates/ide_completion/src/item.rs @@ -260,6 +260,7 @@ impl CompletionItemKind { SymbolKind::Macro => "ma", SymbolKind::Module => "md", SymbolKind::SelfParam => "sp", + SymbolKind::SelfType => "sy", SymbolKind::Static => "sc", SymbolKind::Struct => "st", SymbolKind::ToolModule => "tm", diff --git a/crates/ide_db/src/lib.rs b/crates/ide_db/src/lib.rs index 602eaf0de53..3f64c0a1243 100644 --- a/crates/ide_db/src/lib.rs +++ b/crates/ide_db/src/lib.rs @@ -163,6 +163,7 @@ pub enum SymbolKind { Macro, Module, SelfParam, + SelfType, Static, Struct, ToolModule, diff --git a/crates/rust-analyzer/src/semantic_tokens.rs b/crates/rust-analyzer/src/semantic_tokens.rs index c6322327a5e..5fb945ea987 100644 --- a/crates/rust-analyzer/src/semantic_tokens.rs +++ b/crates/rust-analyzer/src/semantic_tokens.rs @@ -66,6 +66,7 @@ define_semantic_token_types