Skip to content

Commit

Permalink
Try to solve issue3456. (rust-lang#3556)
Browse files Browse the repository at this point in the history
  • Loading branch information
xiongmao86 authored and topecongiro committed Oct 19, 2019
1 parent 3a073f1 commit 69c7dbc
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 22 deletions.
22 changes: 2 additions & 20 deletions src/expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1187,27 +1187,9 @@ fn rewrite_string_lit(context: &RewriteContext<'_>, span: Span, shape: Shape) ->
.lines()
.dropping_back(1)
.all(|line| line.ends_with('\\'))
&& context.config.version() == Version::Two
{
let new_indent = shape.visual_indent(1).indent;
let indented_string_lit = String::from(
string_lit
.lines()
.map(|line| {
format!(
"{}{}",
new_indent.to_string(context.config),
line.trim_start()
)
})
.collect::<Vec<_>>()
.join("\n")
.trim_start(),
);
return if context.config.version() == Version::Two {
Some(indented_string_lit)
} else {
wrap_str(indented_string_lit, context.config.max_width(), shape)
};
return Some(string_lit.to_owned());
} else {
return wrap_str(string_lit.to_owned(), context.config.max_width(), shape);
}
Expand Down
3 changes: 1 addition & 2 deletions src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -618,9 +618,8 @@ pub(crate) fn trim_left_preserve_layout(

/// Based on the given line, determine if the next line can be indented or not.
/// This allows to preserve the indentation of multi-line literals.
pub(crate) fn indent_next_line(kind: FullCodeCharKind, line: &str, config: &Config) -> bool {
pub(crate) fn indent_next_line(kind: FullCodeCharKind, _line: &str, config: &Config) -> bool {
!(kind.is_string() || (config.version() == Version::Two && kind.is_commented_string()))
|| line.ends_with('\\')
}

pub(crate) fn is_empty_line(s: &str) -> bool {
Expand Down
14 changes: 14 additions & 0 deletions tests/target/multiline_string_in_macro_def.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
macro_rules! assert_approx_eq {
($a:expr, $b:expr, $eps:expr) => {{
let (a, b) = (&$a, &$b);
assert!(
(*a - *b).abs() < $eps,
"assertion failed: `(left !== right)` \
(left: `{:?}`, right: `{:?}`, expect diff: `{:?}`, real diff: `{:?}`)",
*a,
*b,
$eps,
(*a - *b).abs()
);
}};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// format_strings is false by default.

println!(
"DirEntry {{ \
binary_name: {:<64}, \
context_id: {:>2}, \
file_size: {:>6}, \
offset: 0x {:>08X}, \
actual_crc: 0x{:>08X} \
}}",
dir_entry.binary_name,
dir_entry.context_id,
dir_entry.file_size,
dir_entry.offset,
dir_entry.actual_crc
);

0 comments on commit 69c7dbc

Please sign in to comment.