From: Daniel Jasper Date: Wed, 26 Nov 2014 08:17:08 +0000 (+0000) Subject: clang-format: [Java] Support Foo.class; X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0f7e9eb3381a1a58840d892bf26e89f605bd2f65;p=clang clang-format: [Java] Support Foo.class; Before: SomeClass. class.getName(); After: SomeClass.class.getName(); This fixes llvm.org/PR21665. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@222813 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp index ba492aae02..21f0e7bad1 100644 --- a/lib/Format/UnwrappedLineParser.cpp +++ b/lib/Format/UnwrappedLineParser.cpp @@ -757,6 +757,13 @@ void UnwrappedLineParser::parseStructuralElement() { // A record declaration or definition is always the start of a structural // element. break; + case tok::period: + nextToken(); + // In Java, classes have an implicit static member "class". + if (Style.Language == FormatStyle::LK_Java && FormatTok && + FormatTok->is(tok::kw_class)) + nextToken(); + break; case tok::semi: nextToken(); addUnwrappedLine(); diff --git a/unittests/Format/FormatTestJava.cpp b/unittests/Format/FormatTestJava.cpp index 5a45b80f3b..47e219b4a1 100644 --- a/unittests/Format/FormatTestJava.cpp +++ b/unittests/Format/FormatTestJava.cpp @@ -65,6 +65,11 @@ TEST_F(FormatTestJava, FormatsInstanceOfLikeOperators) { Style); } +TEST_F(FormatTestJava, ClassKeyword) { + verifyFormat("SomeClass.class.getName();"); + verifyFormat("Class c = SomeClass.class;"); +} + TEST_F(FormatTestJava, ClassDeclarations) { verifyFormat("public class SomeClass {\n" " private int a;\n"