Try to solve issue3456. (#3556)

This commit is contained in:
Rui 2019-10-19 17:19:47 +08:00 committed by Seiichi Uchida
parent 3a073f177c
commit 69c7dbcd50
4 changed files with 33 additions and 22 deletions

View File

@ -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);
}

View File

@ -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 {

View File

@ -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()
);
}};
}

View File

@ -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
);