clang-format: [Java] Support extending inner classes.
authorDaniel Jasper <djasper@google.com>
Tue, 21 Oct 2014 09:31:29 +0000 (09:31 +0000)
committerDaniel Jasper <djasper@google.com>
Tue, 21 Oct 2014 09:31:29 +0000 (09:31 +0000)
Before:
  class A extends B
  .C {}

After:
  class A extends B.C {}

llvm-svn: 220280

clang/lib/Format/UnwrappedLineParser.cpp
clang/unittests/Format/FormatTestJava.cpp

index 2b215fd..6d2b67c 100644 (file)
@@ -1375,9 +1375,10 @@ void UnwrappedLineParser::parseRecord() {
     }
     // The actual identifier can be a nested name specifier, and in macros
     // it is often token-pasted.
-    while (FormatTok->Tok.is(tok::identifier) ||
-           FormatTok->Tok.is(tok::coloncolon) ||
-           FormatTok->Tok.is(tok::hashhash))
+    while (
+        FormatTok->is(tok::identifier) || FormatTok->is(tok::coloncolon) ||
+        FormatTok->is(tok::hashhash) ||
+        (Style.Language == FormatStyle::LK_Java && FormatTok->is(tok::period)))
       nextToken();
 
     // Note that parsing away template declarations here leads to incorrectly
index cf48a7a..a4e9396 100644 (file)
@@ -57,6 +57,7 @@ TEST_F(FormatTestJava, ClassDeclarations) {
                "    int j;\n"
                "  }\n"
                "}");
+  verifyFormat("public class A extends B.C {}");
 }
 
 TEST_F(FormatTestJava, ThrowsDeclarations) {