diff --git a/src/librustdoc/html/highlight.rs b/src/librustdoc/html/highlight.rs
index 43d1b8f794c30..8ed69962875a6 100644
--- a/src/librustdoc/html/highlight.rs
+++ b/src/librustdoc/html/highlight.rs
@@ -435,7 +435,27 @@ impl<'a> Classifier<'a> {
_ => Class::RefKeyWord,
},
- // Operators.
+ // These can either be operators, or arrows.
+ TokenKind::Eq => match lookahead {
+ Some(TokenKind::Eq) => {
+ self.next();
+ sink(Highlight::Token { text: "==", class: Some(Class::Op) });
+ return;
+ }
+ Some(TokenKind::Gt) => {
+ self.next();
+ sink(Highlight::Token { text: "=>", class: None });
+ return;
+ }
+ _ => Class::Op,
+ },
+ TokenKind::Minus if lookahead == Some(TokenKind::Gt) => {
+ self.next();
+ sink(Highlight::Token { text: "->", class: None });
+ return;
+ }
+
+ // Other operators.
TokenKind::Minus
| TokenKind::Plus
| TokenKind::Or
@@ -443,7 +463,6 @@ impl<'a> Classifier<'a> {
| TokenKind::Caret
| TokenKind::Percent
| TokenKind::Bang
- | TokenKind::Eq
| TokenKind::Lt
| TokenKind::Gt => Class::Op,
diff --git a/src/librustdoc/html/highlight/fixtures/sample.html b/src/librustdoc/html/highlight/fixtures/sample.html
index 866caea925609..22e650af7e22b 100644
--- a/src/librustdoc/html/highlight/fixtures/sample.html
+++ b/src/librustdoc/html/highlight/fixtures/sample.html
@@ -13,7 +13,7 @@
use std::path::{Path, PathBuf};
#[cfg(target_os = "linux")]
-fn main() {
+fn main() -> () {
let foo = true && false || true;
let _: *const () = 0;
let _ = &foo;
@@ -27,11 +27,11 @@
let mut s = String::new();
match &s {
- ref mut x => {}
+ ref mut x => {}
}
}
macro_rules! bar {
- ($foo:tt) => {};
+ ($foo:tt) => {};
}
diff --git a/src/librustdoc/html/highlight/fixtures/sample.rs b/src/librustdoc/html/highlight/fixtures/sample.rs
index b027203655d92..fbfdc6767337c 100644
--- a/src/librustdoc/html/highlight/fixtures/sample.rs
+++ b/src/librustdoc/html/highlight/fixtures/sample.rs
@@ -3,7 +3,7 @@
use std::path::{Path, PathBuf};
#[cfg(target_os = "linux")]
-fn main() {
+fn main() -> () {
let foo = true && false || true;
let _: *const () = 0;
let _ = &foo;
diff --git a/src/test/rustdoc/macro_rules-matchers.rs b/src/test/rustdoc/macro_rules-matchers.rs
index 5f8340e7312a0..efc3b21e6da99 100644
--- a/src/test/rustdoc/macro_rules-matchers.rs
+++ b/src/test/rustdoc/macro_rules-matchers.rs
@@ -6,37 +6,31 @@
// @has 'foo/macro.todo.html'
// @has - '//span[@class="macro"]' 'macro_rules!'
// @has - '//span[@class="ident"]' 'todo'
-// Note: count = 2 * ('=' + '>') + '+' = 2 * (1 + 1) + 1 = 5
-// @count - '//pre[@class="rust macro"]//span[@class="op"]' 5
+// Note: the only op is the `+`
+// @count - '//pre[@class="rust macro"]//span[@class="op"]' 1
-// @has - '{ ()'
-// @has - '//span[@class="op"]' '='
-// @has - '//span[@class="op"]' '>'
-// @has - '{ ... };'
-
-// @has - '($('
+// @has - '{ () => { ... }; ($('
// @has - '//span[@class="macro-nonterminal"]' '$'
// @has - '//span[@class="macro-nonterminal"]' 'arg'
// @has - ':'
// @has - '//span[@class="ident"]' 'tt'
// @has - '),'
// @has - '//span[@class="op"]' '+'
-// @has - ')'
+// @has - ') => { ... }; }'
pub use std::todo;
mod mod1 {
// @has 'foo/macro.macro1.html'
// @has - 'macro_rules!'
// @has - 'macro1'
- // @has - '{ ()'
- // @has - '($('
+ // @has - '{ () => { ... }; ($('
// @has - '//span[@class="macro-nonterminal"]' '$'
// @has - '//span[@class="macro-nonterminal"]' 'arg'
// @has - ':'
// @has - 'expr'
// @has - '),'
// @has - '+'
- // @has - ')'
+ // @has - ') => { ... }; }'
#[macro_export]
macro_rules! macro1 {
() => {};