Skip to content

Commit

Permalink
Unrolled build for rust-lang#116811
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#116811 - narpfel:unpretty-unicode-escape-in-format-string-literal, r=Nilstrieb

Preserve unicode escapes in format string literals when pretty-printing AST

Fixes rust-lang#116799

Thanks to `@Nilstrieb` for the pointer to the correct location, that was really helpful for someone unfamiliar with the codebase.
  • Loading branch information
rust-timer authored Oct 17, 2023
2 parents 49691b1 + 587899e commit 321817a
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
4 changes: 2 additions & 2 deletions compiler/rustc_ast_pretty/src/pprust/state/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -684,8 +684,8 @@ pub fn reconstruct_format_args_template_string(pieces: &[FormatArgsPiece]) -> St
for piece in pieces {
match piece {
FormatArgsPiece::Literal(s) => {
for c in s.as_str().escape_debug() {
template.push(c);
for c in s.as_str().chars() {
template.extend(c.escape_debug());
if let '{' | '}' = c {
template.push(c);
}
Expand Down
21 changes: 21 additions & 0 deletions tests/pretty/format-args-str-escape.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#![feature(prelude_import)]
#![no_std]
#[prelude_import]
use ::std::prelude::rust_2015::*;
#[macro_use]
extern crate std;
// pretty-compare-only
// pretty-mode:expanded
// pp-exact:format-args-str-escape.pp

fn main() {
{ ::std::io::_print(format_args!("\u{1b}[1mHello, world!\u{1b}[0m\n")); };
{ ::std::io::_print(format_args!("\u{1b}[1mHello, world!\u{1b}[0m\n")); };
{
::std::io::_print(format_args!("Not an escape sequence: \\u{{1B}}[1mbold\\x1B[0m\n"));
};
{
::std::io::_print(format_args!("{0}\n",
"\x1B[1mHello, world!\x1B[0m"));
};
}
10 changes: 10 additions & 0 deletions tests/pretty/format-args-str-escape.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// pretty-compare-only
// pretty-mode:expanded
// pp-exact:format-args-str-escape.pp

fn main() {
println!("\x1B[1mHello, world!\x1B[0m");
println!("\u{1B}[1mHello, world!\u{1B}[0m");
println!("Not an escape sequence: \\u{{1B}}[1mbold\\x1B[0m");
println!("{}", "\x1B[1mHello, world!\x1B[0m");
}

0 comments on commit 321817a

Please sign in to comment.