diff --git a/src/expr.rs b/src/expr.rs index 3bbc3c1295b..b2ddd1c5731 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -64,7 +64,7 @@ fn format_expr(expr: &ast::Expr, ast::ExprKind::Lit(ref l) => { match l.node { ast::LitKind::Str(_, ast::StrStyle::Cooked) => { - rewrite_string_lit(context, l.span, width, offset) + Some(rewrite_string_lit(context, l.span, width, offset)) } _ => { wrap_str(context.snippet(expr.span), @@ -1457,16 +1457,16 @@ fn rewrite_string_lit(context: &RewriteContext, span: Span, width: usize, offset: Indent) - -> Option { + -> String { let string_lit = context.snippet(span); if !context.config.format_strings && !context.config.force_format_strings { - return Some(string_lit); + return string_lit; } if !context.config.force_format_strings && !string_requires_rewrite(context, span, &string_lit, width, offset) { - return Some(string_lit); + return string_lit; } let fmt = StringFormat { @@ -1483,7 +1483,7 @@ fn rewrite_string_lit(context: &RewriteContext, // Remove the quote characters. let str_lit = &string_lit[1..string_lit.len() - 1]; - rewrite_string(str_lit, &fmt) + rewrite_string(str_lit, &fmt).unwrap_or_else(|| string_lit.to_owned()) } fn string_requires_rewrite(context: &RewriteContext, diff --git a/src/string.rs b/src/string.rs index e90e24f7af2..71d8f8415f0 100644 --- a/src/string.rs +++ b/src/string.rs @@ -15,6 +15,7 @@ use regex::Regex; use Indent; use config::Config; +use utils::wrap_str; use MIN_STRING; @@ -117,7 +118,7 @@ pub fn rewrite_string<'a>(orig: &str, fmt: &StringFormat<'a>) -> Option } result.push_str(fmt.closer); - Some(result) + wrap_str(result, fmt.config.max_width, fmt.width, fmt.offset) } #[cfg(test)] diff --git a/tests/source/string-lit-2.rs b/tests/source/string-lit-2.rs index c19df093176..6b95e25a052 100644 --- a/tests/source/string-lit-2.rs +++ b/tests/source/string-lit-2.rs @@ -3,8 +3,23 @@ fn main() -> &'static str { let leave_me = "sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\ s jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"; - // Crappy formatting :-( - let change_me = "ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\ - s - jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"; +} + +fn issue_1237() { + let msg = "eedadn\n\ + drvtee\n\ + eandsr\n\ + raavrd\n\ + atevrs\n\ + tsrnev\n\ + sdttsa\n\ + rasrtv\n\ + nssdts\n\ + ntnada\n\ + svetve\n\ + tesnvt\n\ + vntsnd\n\ + vrdear\n\ + dvrsen\n\ + enarar"; } diff --git a/tests/target/enum.rs b/tests/target/enum.rs index aa51b90a79e..5b3960014b6 100644 --- a/tests/target/enum.rs +++ b/tests/target/enum.rs @@ -48,8 +48,7 @@ enum StructLikeVariants { enum X { CreateWebGLPaintTask(Size2D, GLContextAttributes, - IpcSender, usize), String>>), /* This is - * a post comment */ + IpcSender, usize), String>>), /* This is a post comment */ } pub enum EnumWithAttributes { @@ -71,8 +70,7 @@ pub enum EnumWithAttributes { pub enum SingleTuple { // Pre Comment AAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA // AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - Match(usize, usize, String), /* Post-comment - * AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA */ + Match(usize, usize, String), /* Post-comment AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA */ } pub enum SingleStruct { diff --git a/tests/target/string-lit-2.rs b/tests/target/string-lit-2.rs index 7deb4215d2e..6b95e25a052 100644 --- a/tests/target/string-lit-2.rs +++ b/tests/target/string-lit-2.rs @@ -3,8 +3,23 @@ fn main() -> &'static str { let leave_me = "sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\ s jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"; - // Crappy formatting :-( - let change_me = "sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss - \ - jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj"; +} + +fn issue_1237() { + let msg = "eedadn\n\ + drvtee\n\ + eandsr\n\ + raavrd\n\ + atevrs\n\ + tsrnev\n\ + sdttsa\n\ + rasrtv\n\ + nssdts\n\ + ntnada\n\ + svetve\n\ + tesnvt\n\ + vntsnd\n\ + vrdear\n\ + dvrsen\n\ + enarar"; }