Skip to content

Commit 0cc123c

Browse files
Rollup merge of #89538 - notriddle:notriddle/arrow-highlight, r=GuillaumeGomez
Make rustdoc not highlight `->` and `=>` as operators It was marking them up as `<span class="op">=</span><span class="op">&gt;</span>`, which is bloaty and wrong (at least, I think `<=` and `=>` should probably be different colors, since they're so different and yet made from the same symbols). Before: ![image](https://user-images.githubusercontent.com/1593513/135939748-f49b0f9e-6a7d-4d65-935a-e31cdf688a81.png) After: ![image](https://user-images.githubusercontent.com/1593513/135940063-5ef1f6b1-7e03-4227-b46b-572b063aba05.png)
2 parents 3250240 + 8eb3a95 commit 0cc123c

File tree

4 files changed

+31
-18
lines changed

4 files changed

+31
-18
lines changed

src/librustdoc/html/highlight.rs

+21-2
Original file line numberDiff line numberDiff line change
@@ -435,15 +435,34 @@ impl<'a> Classifier<'a> {
435435
_ => Class::RefKeyWord,
436436
},
437437

438-
// Operators.
438+
// These can either be operators, or arrows.
439+
TokenKind::Eq => match lookahead {
440+
Some(TokenKind::Eq) => {
441+
self.next();
442+
sink(Highlight::Token { text: "==", class: Some(Class::Op) });
443+
return;
444+
}
445+
Some(TokenKind::Gt) => {
446+
self.next();
447+
sink(Highlight::Token { text: "=>", class: None });
448+
return;
449+
}
450+
_ => Class::Op,
451+
},
452+
TokenKind::Minus if lookahead == Some(TokenKind::Gt) => {
453+
self.next();
454+
sink(Highlight::Token { text: "->", class: None });
455+
return;
456+
}
457+
458+
// Other operators.
439459
TokenKind::Minus
440460
| TokenKind::Plus
441461
| TokenKind::Or
442462
| TokenKind::Slash
443463
| TokenKind::Caret
444464
| TokenKind::Percent
445465
| TokenKind::Bang
446-
| TokenKind::Eq
447466
| TokenKind::Lt
448467
| TokenKind::Gt => Class::Op,
449468

src/librustdoc/html/highlight/fixtures/sample.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<span class="kw">use</span> <span class="ident">std::path</span>::{<span class="ident">Path</span>, <span class="ident">PathBuf</span>};
1414

1515
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">target_os</span> <span class="op">=</span> <span class="string">&quot;linux&quot;</span>)]</span>
16-
<span class="kw">fn</span> <span class="ident">main</span>() {
16+
<span class="kw">fn</span> <span class="ident">main</span>() -&gt; () {
1717
<span class="kw">let</span> <span class="ident">foo</span> <span class="op">=</span> <span class="bool-val">true</span> <span class="op">&amp;&amp;</span> <span class="bool-val">false</span> <span class="op">|</span><span class="op">|</span> <span class="bool-val">true</span>;
1818
<span class="kw">let</span> <span class="kw">_</span>: <span class="kw-2">*</span><span class="kw">const</span> () <span class="op">=</span> <span class="number">0</span>;
1919
<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="kw-2">&amp;</span><span class="ident">foo</span>;
@@ -27,11 +27,11 @@
2727
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">s</span> <span class="op">=</span> <span class="ident">String::new</span>();
2828

2929
<span class="kw">match</span> <span class="kw-2">&amp;</span><span class="ident">s</span> {
30-
<span class="kw-2">ref</span> <span class="kw-2">mut</span> <span class="ident">x</span> <span class="op">=</span><span class="op">&gt;</span> {}
30+
<span class="kw-2">ref</span> <span class="kw-2">mut</span> <span class="ident">x</span> =&gt; {}
3131
}
3232
}
3333

3434
<span class="macro">macro_rules!</span> <span class="ident">bar</span> {
35-
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">foo</span>:<span class="ident">tt</span>) <span class="op">=</span><span class="op">&gt;</span> {};
35+
(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">foo</span>:<span class="ident">tt</span>) =&gt; {};
3636
}
3737
</code></pre>

src/librustdoc/html/highlight/fixtures/sample.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
use std::path::{Path, PathBuf};
44

55
#[cfg(target_os = "linux")]
6-
fn main() {
6+
fn main() -> () {
77
let foo = true && false || true;
88
let _: *const () = 0;
99
let _ = &foo;

src/test/rustdoc/macro_rules-matchers.rs

+6-12
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,31 @@
66
// @has 'foo/macro.todo.html'
77
// @has - '//span[@class="macro"]' 'macro_rules!'
88
// @has - '//span[@class="ident"]' 'todo'
9-
// Note: count = 2 * ('=' + '>') + '+' = 2 * (1 + 1) + 1 = 5
10-
// @count - '//pre[@class="rust macro"]//span[@class="op"]' 5
9+
// Note: the only op is the `+`
10+
// @count - '//pre[@class="rust macro"]//span[@class="op"]' 1
1111

12-
// @has - '{ ()'
13-
// @has - '//span[@class="op"]' '='
14-
// @has - '//span[@class="op"]' '>'
15-
// @has - '{ ... };'
16-
17-
// @has - '($('
12+
// @has - '{ () =&gt; { ... }; ($('
1813
// @has - '//span[@class="macro-nonterminal"]' '$'
1914
// @has - '//span[@class="macro-nonterminal"]' 'arg'
2015
// @has - ':'
2116
// @has - '//span[@class="ident"]' 'tt'
2217
// @has - '),'
2318
// @has - '//span[@class="op"]' '+'
24-
// @has - ')'
19+
// @has - ') =&gt; { ... }; }'
2520
pub use std::todo;
2621

2722
mod mod1 {
2823
// @has 'foo/macro.macro1.html'
2924
// @has - 'macro_rules!'
3025
// @has - 'macro1'
31-
// @has - '{ ()'
32-
// @has - '($('
26+
// @has - '{ () =&gt; { ... }; ($('
3327
// @has - '//span[@class="macro-nonterminal"]' '$'
3428
// @has - '//span[@class="macro-nonterminal"]' 'arg'
3529
// @has - ':'
3630
// @has - 'expr'
3731
// @has - '),'
3832
// @has - '+'
39-
// @has - ')'
33+
// @has - ') =&gt; { ... }; }'
4034
#[macro_export]
4135
macro_rules! macro1 {
4236
() => {};

0 commit comments

Comments
 (0)