diff options
Diffstat (limited to 'crates/ide/src')
-rw-r--r-- | crates/ide/src/syntax_highlighting.rs | 3 | ||||
-rw-r--r-- | crates/ide/src/syntax_highlighting/test_data/highlighting.html | 12 | ||||
-rw-r--r-- | crates/ide/src/syntax_highlighting/tests.rs | 12 |
3 files changed, 27 insertions, 0 deletions
diff --git a/crates/ide/src/syntax_highlighting.rs b/crates/ide/src/syntax_highlighting.rs index 9f864179e..624a63075 100644 --- a/crates/ide/src/syntax_highlighting.rs +++ b/crates/ide/src/syntax_highlighting.rs | |||
@@ -562,6 +562,9 @@ fn highlight_element( | |||
562 | T![!] if element.parent().and_then(ast::MacroCall::cast).is_some() => { | 562 | T![!] if element.parent().and_then(ast::MacroCall::cast).is_some() => { |
563 | HighlightTag::Macro.into() | 563 | HighlightTag::Macro.into() |
564 | } | 564 | } |
565 | T![!] if element.parent().and_then(ast::NeverType::cast).is_some() => { | ||
566 | HighlightTag::BuiltinType.into() | ||
567 | } | ||
565 | T![*] if element.parent().and_then(ast::PtrType::cast).is_some() => { | 568 | T![*] if element.parent().and_then(ast::PtrType::cast).is_some() => { |
566 | HighlightTag::Keyword.into() | 569 | HighlightTag::Keyword.into() |
567 | } | 570 | } |
diff --git a/crates/ide/src/syntax_highlighting/test_data/highlighting.html b/crates/ide/src/syntax_highlighting/test_data/highlighting.html index c6b4f5a00..5eb222ee2 100644 --- a/crates/ide/src/syntax_highlighting/test_data/highlighting.html +++ b/crates/ide/src/syntax_highlighting/test_data/highlighting.html | |||
@@ -110,11 +110,21 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd | |||
110 | <span class="function">foo</span><span class="operator">::</span><span class="punctuation"><</span><span class="lifetime">'a</span><span class="punctuation">,</span> <span class="builtin_type">i32</span><span class="punctuation">></span><span class="punctuation">(</span><span class="punctuation">)</span> | 110 | <span class="function">foo</span><span class="operator">::</span><span class="punctuation"><</span><span class="lifetime">'a</span><span class="punctuation">,</span> <span class="builtin_type">i32</span><span class="punctuation">></span><span class="punctuation">(</span><span class="punctuation">)</span> |
111 | <span class="punctuation">}</span> | 111 | <span class="punctuation">}</span> |
112 | 112 | ||
113 | <span class="keyword">fn</span> <span class="function declaration">never</span><span class="punctuation">(</span><span class="punctuation">)</span> <span class="operator">-></span> <span class="builtin_type">!</span> <span class="punctuation">{</span> | ||
114 | <span class="keyword control">loop</span> <span class="punctuation">{</span><span class="punctuation">}</span> | ||
115 | <span class="punctuation">}</span> | ||
116 | |||
113 | <span class="keyword">use</span> <span class="module">ops</span><span class="operator">::</span><span class="trait">Fn</span><span class="punctuation">;</span> | 117 | <span class="keyword">use</span> <span class="module">ops</span><span class="operator">::</span><span class="trait">Fn</span><span class="punctuation">;</span> |
114 | <span class="keyword">fn</span> <span class="function declaration">baz</span><span class="punctuation"><</span><span class="type_param declaration">F</span><span class="punctuation">:</span> <span class="trait">Fn</span><span class="punctuation">(</span><span class="punctuation">)</span> <span class="operator">-></span> <span class="punctuation">(</span><span class="punctuation">)</span><span class="punctuation">></span><span class="punctuation">(</span><span class="value_param declaration callable">f</span><span class="punctuation">:</span> <span class="type_param">F</span><span class="punctuation">)</span> <span class="punctuation">{</span> | 118 | <span class="keyword">fn</span> <span class="function declaration">baz</span><span class="punctuation"><</span><span class="type_param declaration">F</span><span class="punctuation">:</span> <span class="trait">Fn</span><span class="punctuation">(</span><span class="punctuation">)</span> <span class="operator">-></span> <span class="punctuation">(</span><span class="punctuation">)</span><span class="punctuation">></span><span class="punctuation">(</span><span class="value_param declaration callable">f</span><span class="punctuation">:</span> <span class="type_param">F</span><span class="punctuation">)</span> <span class="punctuation">{</span> |
115 | <span class="value_param callable">f</span><span class="punctuation">(</span><span class="punctuation">)</span> | 119 | <span class="value_param callable">f</span><span class="punctuation">(</span><span class="punctuation">)</span> |
116 | <span class="punctuation">}</span> | 120 | <span class="punctuation">}</span> |
117 | 121 | ||
122 | <span class="keyword">fn</span> <span class="function declaration">foobar</span><span class="punctuation">(</span><span class="punctuation">)</span> <span class="operator">-></span> <span class="keyword">impl</span> <span class="unresolved_reference">Copy</span> <span class="punctuation">{</span><span class="punctuation">}</span> | ||
123 | |||
124 | <span class="keyword">fn</span> <span class="function declaration">foo</span><span class="punctuation">(</span><span class="punctuation">)</span> <span class="punctuation">{</span> | ||
125 | <span class="keyword">let</span> <span class="variable declaration">bar</span> <span class="operator">=</span> <span class="function">foobar</span><span class="punctuation">(</span><span class="punctuation">)</span><span class="punctuation">;</span> | ||
126 | <span class="punctuation">}</span> | ||
127 | |||
118 | <span class="macro">macro_rules!</span> <span class="macro declaration">def_fn</span> <span class="punctuation">{</span> | 128 | <span class="macro">macro_rules!</span> <span class="macro declaration">def_fn</span> <span class="punctuation">{</span> |
119 | <span class="punctuation">(</span><span class="punctuation">$</span><span class="punctuation">(</span><span class="punctuation">$</span>tt<span class="punctuation">:</span>tt<span class="punctuation">)</span><span class="punctuation">*</span><span class="punctuation">)</span> <span class="operator">=</span><span class="punctuation">></span> <span class="punctuation">{</span><span class="punctuation">$</span><span class="punctuation">(</span><span class="punctuation">$</span>tt<span class="punctuation">)</span><span class="punctuation">*</span><span class="punctuation">}</span> | 129 | <span class="punctuation">(</span><span class="punctuation">$</span><span class="punctuation">(</span><span class="punctuation">$</span>tt<span class="punctuation">:</span>tt<span class="punctuation">)</span><span class="punctuation">*</span><span class="punctuation">)</span> <span class="operator">=</span><span class="punctuation">></span> <span class="punctuation">{</span><span class="punctuation">$</span><span class="punctuation">(</span><span class="punctuation">$</span>tt<span class="punctuation">)</span><span class="punctuation">*</span><span class="punctuation">}</span> |
120 | <span class="punctuation">}</span> | 130 | <span class="punctuation">}</span> |
@@ -179,6 +189,8 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd | |||
179 | 189 | ||
180 | <span class="keyword">let</span> <span class="variable declaration">baz</span> <span class="operator">=</span> <span class="numeric_literal">-</span><span class="numeric_literal">42</span><span class="punctuation">;</span> | 190 | <span class="keyword">let</span> <span class="variable declaration">baz</span> <span class="operator">=</span> <span class="numeric_literal">-</span><span class="numeric_literal">42</span><span class="punctuation">;</span> |
181 | <span class="keyword">let</span> <span class="variable declaration">baz</span> <span class="operator">=</span> <span class="operator">-</span><span class="variable">baz</span><span class="punctuation">;</span> | 191 | <span class="keyword">let</span> <span class="variable declaration">baz</span> <span class="operator">=</span> <span class="operator">-</span><span class="variable">baz</span><span class="punctuation">;</span> |
192 | |||
193 | <span class="keyword">let</span> <span class="punctuation">_</span> <span class="operator">=</span> <span class="operator">!</span><span class="bool_literal">true</span><span class="punctuation">;</span> | ||
182 | <span class="punctuation">}</span> | 194 | <span class="punctuation">}</span> |
183 | 195 | ||
184 | <span class="keyword">enum</span> <span class="enum declaration">Option</span><span class="punctuation"><</span><span class="type_param declaration">T</span><span class="punctuation">></span> <span class="punctuation">{</span> | 196 | <span class="keyword">enum</span> <span class="enum declaration">Option</span><span class="punctuation"><</span><span class="type_param declaration">T</span><span class="punctuation">></span> <span class="punctuation">{</span> |
diff --git a/crates/ide/src/syntax_highlighting/tests.rs b/crates/ide/src/syntax_highlighting/tests.rs index dd43f9dd9..2b667b0d4 100644 --- a/crates/ide/src/syntax_highlighting/tests.rs +++ b/crates/ide/src/syntax_highlighting/tests.rs | |||
@@ -84,11 +84,21 @@ fn foo<'a, T>() -> T { | |||
84 | foo::<'a, i32>() | 84 | foo::<'a, i32>() |
85 | } | 85 | } |
86 | 86 | ||
87 | fn never() -> ! { | ||
88 | loop {} | ||
89 | } | ||
90 | |||
87 | use ops::Fn; | 91 | use ops::Fn; |
88 | fn baz<F: Fn() -> ()>(f: F) { | 92 | fn baz<F: Fn() -> ()>(f: F) { |
89 | f() | 93 | f() |
90 | } | 94 | } |
91 | 95 | ||
96 | fn foobar() -> impl Copy {} | ||
97 | |||
98 | fn foo() { | ||
99 | let bar = foobar(); | ||
100 | } | ||
101 | |||
92 | macro_rules! def_fn { | 102 | macro_rules! def_fn { |
93 | ($($tt:tt)*) => {$($tt)*} | 103 | ($($tt:tt)*) => {$($tt)*} |
94 | } | 104 | } |
@@ -153,6 +163,8 @@ fn main() { | |||
153 | 163 | ||
154 | let baz = -42; | 164 | let baz = -42; |
155 | let baz = -baz; | 165 | let baz = -baz; |
166 | |||
167 | let _ = !true; | ||
156 | } | 168 | } |
157 | 169 | ||
158 | enum Option<T> { | 170 | enum Option<T> { |