[clang-format] Fix aligning of java-style declarations

- Modify TokenAnnotator to work fine with java-style array declarations.
- Add test for aligning of java declarations.

Fixes #55931.

Differential Revision: https://reviews.llvm.org/D129628
This commit is contained in:
Danil Sidoruk 2022-08-15 20:26:56 -07:00 committed by owenca
parent fbc4c26e9a
commit d8d331bc97
2 changed files with 16 additions and 0 deletions

View File

@ -2065,6 +2065,11 @@ private:
if (PreviousNotConst->isSimpleTypeSpecifier())
return true;
// type[] a in Java
if (Style.Language == FormatStyle::LK_Java &&
PreviousNotConst->is(tok::r_square))
return true;
// const a = in JavaScript.
return Style.isJavaScript() && PreviousNotConst->is(tok::kw_const);
}

View File

@ -584,6 +584,17 @@ TEST_F(FormatTestJava, AlignsBlockComments) {
" void f() {}"));
}
TEST_F(FormatTestJava, AlignDeclarations) {
FormatStyle Style = getLLVMStyle(FormatStyle::LK_Java);
Style.AlignConsecutiveDeclarations.Enabled = true;
verifyFormat("private final String[] args;\n"
"private final A_ParserHelper parserHelper;\n"
"private final int numOfCmdArgs;\n"
"private int numOfCmdArgs;\n"
"private String[] args;",
Style);
}
TEST_F(FormatTestJava, KeepsDelimitersOnOwnLineInJavaDocComments) {
EXPECT_EQ("/**\n"
" * javadoc line 1\n"