Skip to content

Commit fe6508b

Browse files
bors[bot]ruabmbua
andauthored
Merge #4658
4658: Fix problem with format string tokenization r=matklad a=ruabmbua Fixed by just not handling closing curlybrace escaping. Closes #4637 Co-authored-by: Roland Ruckerbauer <roland.rucky@gmail.com>
2 parents 131ccd9 + 780c899 commit fe6508b

File tree

3 files changed

+2
-5
lines changed

3 files changed

+2
-5
lines changed

crates/ra_ide/src/snapshots/highlight_strings.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
<span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">argument</span><span class="format_specifier">}</span><span class="string_literal">"</span>, argument = <span class="string_literal">"test"</span>); <span class="comment">// =&gt; "test"</span>
5353
<span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">name</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">"</span>, <span class="numeric_literal">1</span>, name = <span class="numeric_literal">2</span>); <span class="comment">// =&gt; "2 1"</span>
5454
<span class="macro">println!</span>(<span class="string_literal">"</span><span class="format_specifier">{</span><span class="variable">a</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="variable">c</span><span class="format_specifier">}</span><span class="string_literal"> </span><span class="format_specifier">{</span><span class="variable">b</span><span class="format_specifier">}</span><span class="string_literal">"</span>, a=<span class="string_literal">"a"</span>, b=<span class="char_literal">'b'</span>, c=<span class="numeric_literal">3</span>); <span class="comment">// =&gt; "a 3 b"</span>
55+
<span class="macro">println!</span>(<span class="string_literal">"{{</span><span class="format_specifier">{</span><span class="format_specifier">}</span><span class="string_literal">}}"</span>, <span class="numeric_literal">2</span>); <span class="comment">// =&gt; "{2}"</span>
5556
<span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">5</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>);
5657
<span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="format_specifier">:</span><span class="numeric_literal">1</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="string_literal">"x"</span>, <span class="numeric_literal">5</span>);
5758
<span class="macro">println!</span>(<span class="string_literal">"Hello </span><span class="format_specifier">{</span><span class="numeric_literal">1</span><span class="format_specifier">:</span><span class="numeric_literal">0</span><span class="format_specifier">$</span><span class="format_specifier">}</span><span class="string_literal">!"</span>, <span class="numeric_literal">5</span>, <span class="string_literal">"x"</span>);

crates/ra_ide/src/syntax_highlighting/tests.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ fn main() {
218218
println!("{argument}", argument = "test"); // => "test"
219219
println!("{name} {}", 1, name = 2); // => "2 1"
220220
println!("{a} {c} {b}", a="a", b='b', c=3); // => "a 3 b"
221+
println!("{{{}}}", 2); // => "{2}"
221222
println!("Hello {:5}!", "x");
222223
println!("Hello {:1$}!", "x", 5);
223224
println!("Hello {1:0$}!", 5, "x");

crates/ra_syntax/src/ast/tokens.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -418,14 +418,9 @@ pub trait HasFormatSpecifier: AstToken {
418418

419419
let mut cloned = chars.clone().take(2);
420420
let first = cloned.next().and_then(|next| next.1.as_ref().ok()).copied();
421-
let second = cloned.next().and_then(|next| next.1.as_ref().ok()).copied();
422421
if first != Some('}') {
423422
continue;
424423
}
425-
if second == Some('}') {
426-
// Escaped format end specifier, `}}`
427-
continue;
428-
}
429424
skip_char_and_emit(&mut chars, FormatSpecifier::Close, &mut callback);
430425
}
431426
_ => {

0 commit comments

Comments
 (0)