diff options
author | Daniel Jasper <djasper@google.com> | 2014-11-14 10:15:56 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2014-11-14 10:15:56 +0000 |
commit | 734d52b58bf3056a91e16c866da00f5b49e40098 (patch) | |
tree | df4251073573bc5a6b3599a9386a1c49cc946e4d | |
parent | 5109a7938de1ed135f0c1a64ee81a341cf612efe (diff) | |
download | bcm5719-llvm-734d52b58bf3056a91e16c866da00f5b49e40098.tar.gz bcm5719-llvm-734d52b58bf3056a91e16c866da00f5b49e40098.zip |
clang-format: [Java] Fix line break behavior of class declarations.
Change breaking preferences:
1. Break before "extends"
2. Break before "implements"
3. Break within the implements list.
llvm-svn: 221981
-rw-r--r-- | clang/lib/Format/TokenAnnotator.cpp | 19 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTestJava.cpp | 16 |
2 files changed, 24 insertions, 11 deletions
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index bce1d64166f..48ce19e1323 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -1439,6 +1439,18 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line, if (Left.is(tok::semi)) return 0; + + if (Style.Language == FormatStyle::LK_Java) { + if (Left.Type == TT_LeadingJavaAnnotation) + return 1; + if (Right.is(Keywords.kw_extends)) + return 1; + if (Right.is(Keywords.kw_implements)) + return 2; + if (Left.is(tok::comma) && Left.NestingLevel == 0) + return 3; + } + if (Left.is(tok::comma) || (Right.is(tok::identifier) && Right.Next && Right.Next->Type == TT_DictLiteral)) return 1; @@ -1448,6 +1460,7 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line, if (Right.Type != TT_ObjCMethodExpr && Right.Type != TT_LambdaLSquare) return 500; } + if (Right.Type == TT_StartOfName || Right.Type == TT_FunctionDeclarationName || Right.is(tok::kw_operator)) { if (Line.First->is(tok::kw_for) && Right.PartOfMultiVariableDeclStmt) @@ -1472,12 +1485,6 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line, Left.Type == TT_InheritanceColon) return 2; - if (Left.Type == TT_LeadingJavaAnnotation) - return 1; - if (Style.Language == FormatStyle::LK_Java && - Right.is(Keywords.kw_implements)) - return 2; - if (Right.isMemberAccess()) { if (Left.is(tok::r_paren) && Left.MatchingParen && Left.MatchingParen->ParameterCount > 0) diff --git a/clang/unittests/Format/FormatTestJava.cpp b/clang/unittests/Format/FormatTestJava.cpp index 3799003b776..6523c86f526 100644 --- a/clang/unittests/Format/FormatTestJava.cpp +++ b/clang/unittests/Format/FormatTestJava.cpp @@ -69,8 +69,11 @@ TEST_F(FormatTestJava, ClassDeclarations) { "}"); verifyFormat("public class A extends B.C {}"); + verifyFormat("abstract class SomeClass\n" + " extends SomeOtherClass implements SomeInterface {}", + getStyleWithColumns(60)); verifyFormat("abstract class SomeClass extends SomeOtherClass\n" - " implements SomeInterface {}", + " implements SomeInterfaceeeeeeeeeeeee {}", getStyleWithColumns(60)); verifyFormat("abstract class SomeClass\n" " extends SomeOtherClass\n" @@ -81,14 +84,17 @@ TEST_F(FormatTestJava, ClassDeclarations) { " implements SomeInterface,\n" " AnotherInterface {}", getStyleWithColumns(40)); + verifyFormat("abstract class SomeClass\n" + " implements SomeInterface, AnotherInterface {}", + getStyleWithColumns(60)); verifyFormat("@SomeAnnotation()\n" - "abstract class aaaaaaaaaaaa extends bbbbbbbbbbbbbbb\n" - " implements cccccccccccc {\n" + "abstract class aaaaaaaaaaaa\n" + " extends bbbbbbbbbbbbbbb implements cccccccccccc {\n" "}", getStyleWithColumns(76)); verifyFormat("@SomeAnnotation()\n" - "abstract class aaaaaaaaa<a> extends bbbbbbbbbbbb<b>\n" - " implements cccccccccccc {\n" + "abstract class aaaaaaaaa<a>\n" + " extends bbbbbbbbbbbb<b> implements cccccccccccc {\n" "}", getStyleWithColumns(76)); verifyFormat("interface SomeInterface<A> extends Foo, Bar {\n" |