Skip to content

Commit 25026c9

Browse files
authored
Rollup merge of #83793 - notriddle:single-span-macro-highlight, r=GuillaumeGomez
rustdoc: highlight macros more efficiently Instead of producing `<span class=macro>assert_eq</span><span class=macro>!</span>`, just produce `<span class=macro>assert_eq!</span>`.
2 parents 3cbed89 + f64038f commit 25026c9

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

src/librustdoc/html/highlight.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,9 @@ impl<'a> Classifier<'a> {
189189
// leading identifier.
190190
TokenKind::Bang if self.in_macro => {
191191
self.in_macro = false;
192-
Class::Macro
192+
sink(Highlight::Token { text, class: None });
193+
sink(Highlight::ExitSpan);
194+
return;
193195
}
194196

195197
// Assume that '&' or '*' is the reference or dereference operator
@@ -298,7 +300,9 @@ impl<'a> Classifier<'a> {
298300
},
299301
TokenKind::Ident | TokenKind::RawIdent if lookahead == Some(TokenKind::Bang) => {
300302
self.in_macro = true;
301-
Class::Macro
303+
sink(Highlight::EnterSpan { class: Class::Macro });
304+
sink(Highlight::Token { text, class: None });
305+
return;
302306
}
303307
TokenKind::Ident => match text {
304308
"ref" | "mut" => Class::RefKeyWord,
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">foo</span>() {
2-
<span class="macro">println</span><span class="macro">!</span>(<span class="string">&quot;foo&quot;</span>);
2+
<span class="macro">println!</span>(<span class="string">&quot;foo&quot;</span>);
33
}

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="kw-2">&amp;</span><span class="ident">foo</span>;
1818
<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="op">&amp;&amp;</span><span class="ident">foo</span>;
1919
<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="kw-2">*</span><span class="ident">foo</span>;
20-
<span class="macro">mac</span><span class="macro">!</span>(<span class="ident">foo</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">bar</span>);
21-
<span class="macro">assert</span><span class="macro">!</span>(<span class="self">self</span>.<span class="ident">length</span> <span class="op">&lt;</span> <span class="ident">N</span> <span class="op">&amp;&amp;</span> <span class="ident">index</span> <span class="op">&lt;</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">length</span>);
20+
<span class="macro">mac!</span>(<span class="ident">foo</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">bar</span>);
21+
<span class="macro">assert!</span>(<span class="self">self</span>.<span class="ident">length</span> <span class="op">&lt;</span> <span class="ident">N</span> <span class="op">&amp;&amp;</span> <span class="ident">index</span> <span class="op">&lt;</span><span class="op">=</span> <span class="self">self</span>.<span class="ident">length</span>);
2222
}
2323

24-
<span class="macro">macro_rules</span><span class="macro">!</span> <span class="ident">bar</span> {
24+
<span class="macro">macro_rules!</span> <span class="ident">bar</span> {
2525
(<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> {};
2626
}
2727
</code></pre>

0 commit comments

Comments
 (0)