diff options
| author | Hans Wennborg <hans@hanshq.net> | 2018-10-19 16:19:52 +0000 |
|---|---|---|
| committer | Hans Wennborg <hans@hanshq.net> | 2018-10-19 16:19:52 +0000 |
| commit | 749c1b597a8f2f544d285e9cf5fe18552a3a0137 (patch) | |
| tree | 55713c850278c3818867d75e09cbb7a8e2445786 /clang | |
| parent | f6ec77b447987da116bfc84134c557e5f9714203 (diff) | |
| download | bcm5719-llvm-749c1b597a8f2f544d285e9cf5fe18552a3a0137.tar.gz bcm5719-llvm-749c1b597a8f2f544d285e9cf5fe18552a3a0137.zip | |
Java annotation declaration being handled correctly
Previously, Java annotation declarations (@interface AnnotationName) were being
handled as ObjC interfaces. This caused the brace formatting to mess up, so
that when you had a class with an interface defined in it, it would indent the
final brace of the class.
It used to format this class like so:
class A {
@interface B {}
}
But will now just skip the @interface and format it like so:
class A {
@interface B {}
}
Patch by Sam Maier!
Differential Revision: https://reviews.llvm.org/D53434
llvm-svn: 344789
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Format/UnwrappedLineParser.cpp | 4 | ||||
| -rw-r--r-- | clang/unittests/Format/FormatTestJava.cpp | 9 |
2 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 4debdd15ba7..3cd3c8f9cdf 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -1130,6 +1130,10 @@ void UnwrappedLineParser::parseStructuralElement() { nextToken(); parseBracedList(); break; + } else if (Style.Language == FormatStyle::LK_Java && + FormatTok->is(Keywords.kw_interface)) { + nextToken(); + break; } switch (FormatTok->Tok.getObjCKeywordID()) { case tok::objc_public: diff --git a/clang/unittests/Format/FormatTestJava.cpp b/clang/unittests/Format/FormatTestJava.cpp index aee8a993fe6..f12d7fba505 100644 --- a/clang/unittests/Format/FormatTestJava.cpp +++ b/clang/unittests/Format/FormatTestJava.cpp @@ -155,6 +155,15 @@ TEST_F(FormatTestJava, ClassDeclarations) { " void doStuff(int theStuff);\n" " void doMoreStuff(int moreStuff);\n" "}"); + verifyFormat("class A {\n" + " public @interface SomeInterface {\n" + " int stuff;\n" + " void doMoreStuff(int moreStuff);\n" + " }\n" + "}"); + verifyFormat("class A {\n" + " public @interface SomeInterface {}\n" + "}"); } TEST_F(FormatTestJava, AnonymousClasses) { |

