From: Alexander Kornienko Date: Fri, 12 Dec 2014 13:03:22 +0000 (+0000) Subject: Don't break string literals in Java and JavaScript. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fd4ab844b790a49be9c7aad050b630469b5274da;p=clang Don't break string literals in Java and JavaScript. The proper way to break string literals in these languages is by inserting a "+" between parts which we don't support yet. So we disable string literal breaking until then. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224120 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp index e709cfbfc8..af4e1735db 100644 --- a/lib/Format/ContinuationIndenter.cpp +++ b/lib/Format/ContinuationIndenter.cpp @@ -923,6 +923,12 @@ static bool getRawStringLiteralPrefixPostfix(StringRef Text, StringRef &Prefix, unsigned ContinuationIndenter::breakProtrudingToken(const FormatToken &Current, LineState &State, bool DryRun) { + // FIXME: String literal breaking is currently disabled for Java and JS, as + // it requires strings to be merged using "+" which we don't support. + if (Style.Language == FormatStyle::LK_Java || + Style.Language == FormatStyle::LK_JavaScript) + return 0; + // Don't break multi-line tokens other than block comments. Instead, just // update the state. if (Current.isNot(TT_BlockComment) && Current.IsMultiline) diff --git a/unittests/Format/FormatTestJava.cpp b/unittests/Format/FormatTestJava.cpp index 6f7e43f325..d80cccdc46 100644 --- a/unittests/Format/FormatTestJava.cpp +++ b/unittests/Format/FormatTestJava.cpp @@ -418,5 +418,12 @@ TEST_F(FormatTestJava, FormatsLambdas) { getStyleWithColumns(40)); } +TEST_F(FormatTestJava, BreaksStringLiterals) { + // FIXME: String literal breaking is currently disabled for Java and JS, as it + // requires strings to be merged using "+" which we don't support. + EXPECT_EQ("\"some text other\";", + format("\"some text other\";", getStyleWithColumns(14))); +} + } // end namespace tooling } // end namespace clang