Skip to content

Commit 9ee696e

Browse files
committed
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.
1 parent 175b8db commit 9ee696e

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

src/librustdoc/html/highlight.rs

Lines changed: 21 additions & 2 deletions
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

Lines changed: 3 additions & 3 deletions
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

Lines changed: 1 addition & 1 deletion
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;

0 commit comments

Comments
 (0)