<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55931>55931</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-format] Doesn't align properly when using Java-style declaration.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
StrangeRanger
</td>
</tr>
</table>
<pre>
I have clang-format set up to align the declaration of variables, such that the type, variable name, etc., all align with one another. Though when using the Java-style array declaration, instead of the C-style array declaration, clang-format aligns the type `String[]` with the variables, instead of with the other types.
Java-style declaration and clang-format output:
```java
private final String[] args; // java-style declaration
private final A_ParserHelper parserHelper;
private final int numOfCmdArgs;
```
C-style declaration and clang-format output:
```java
private final String args[]; // c-style declaration
private final A_ParserHelper parserHelper;
private final int numOfCmdArgs;
```
Below is my clang-format configurations. My clang-format version is `14.0.4`.
```yaml
---
Language: Java
# BasedOnStyle: Chromium
AccessModifierOffset: -1
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveMacros: Consecutive
AlignConsecutiveAssignments: Consecutive
AlignConsecutiveBitFields: Consecutive
AlignConsecutiveDeclarations: Consecutive
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: false # Maybe: Do some testing
AllowAllParametersOfDeclarationOnNextLine: false # Maybe: Do some testing
AllowShortEnumsOnASingleLine: true # Maybe
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false # Maybe
AllowShortFunctionsOnASingleLine: All
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never # Maybe
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: MultiLine
AttributeMacros:
- __capability
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: NonAssignment # OR None
BreakBeforeConceptDeclarations: true
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon # OR AfterComma
BreakBeforeTernaryOperators: true # Maybe
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeColon # OR AfterColon
BreakAfterJavaFieldAnnotations: true
BreakStringLiterals: true
ColumnLimit: 88
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave # Maybe (WARNING: Warning provided on website)
CompactNamespaces: false # Maybe
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 8
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Leave
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: NextLine # OR BinPack
FixNamespaceComments: false
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Merge
IncludeCategories:
- Regex: '^<ext/.*\.h>'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '^<.*\.h>'
Priority: 1
SortPriority: 0
CaseSensitive: false
- Regex: '^<.*'
Priority: 2
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 3
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '([-_](test|unittest))?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: true
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: AfterHash
IndentExternBlock: Indent
IndentRequires: false # Maybe
IndentWidth: 4
IndentWrappedFunctionNames: true
InsertTrailingCommas: None
JavaScriptQuotes: Double
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: OuterScope
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
ObjCBreakBeforeNestedBlockParam: true # TODO
ObjCSpaceAfterProperty: false # TODO
ObjCSpaceBeforeProtocolList: true # TODO
PenaltyBreakAssignment: 2 # TODO
PenaltyBreakBeforeFirstCallParameter: 1 # TODO
PenaltyBreakComment: 300 # TODO
PenaltyBreakFirstLessLess: 120 # TODO
PenaltyBreakOpenParenthesis: 120 # TODO
PenaltyBreakString: 1000 # TODO
PenaltyBreakTemplateDeclaration: 10 # TODO
PenaltyExcessCharacter: 1000000 # TODO
PenaltyReturnTypeOnItsOwnLine: 200 # TODO
PenaltyIndentedWhitespace: 0 # TODO
PointerAlignment: Right
PPIndentWidth: -1
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: false # Maybe (WARNING: Warning provided on website)
SeparateDefinitionBlocks: Leave # Maybe
ShortNamespaceLines: 1
SortIncludes: CaseSensitive
SortJavaStaticImport: Before
SortUsingDeclarations: true
SpaceAfterCStyleCast: true
SpaceAfterLogicalNot: true
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: Custom
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both # Maybe
Standard: Auto
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
...
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWVlz2zgS_jXyC8sqWbKT-MEPOidKdFmSxzXzooJISEJCAhwAlK399dsASBC8FM_WXqkcDvrrRqPRJ7hnweVp6p3QGXt-iOjx9sB4hKQnsPSS2JPMQyE5Uk-esBdggHAkCaMeO3hnxAnah1i0ukNPJP4JQMCpkPISY7WaQTyKIr2Apd9W_6IwTAW_EXnyGMUeogxYedvbnlhyPHlvJ0y9RBB61CK_oTO6FfICwhDn6OJqoyQSKiRGgVJMwYfXsIWTajWEVdtrfepsJIdtWw-D1sMI_mt0VIDCkZ0dLUAfQcsR7VZn1Or0zd-O9q4VEQ2KyrBExols9VI22Nz8_gH8Zinm5Iwk9g6EotAr_XIVh6MfRas38LxWdwK_vR-1OtRJ7e9WiAvMv-IwhuPEzn9AYB0HodLVgybR8jCMgr5RoXQY1zDD_4RVjBmsNtoQ5jIdc_j_d7YY4JC9eUR40aV4fp_RAzkmRknR9uYl-hlzoQwHrCDy7r7dad_DD-3SXhcUhWbp9vbW_DADKQk6YrBtpu83a9RWt-cNkMDBkm6UqTRoeOIsIklkIH3fx0LMWUAOBPPl4QB5Q8Fu71K6Cq7-QQItxnTAkf_TADTBxag4XR7g5hJfJhwiDEALyAsOZgiHx34iyRnPkc-ZxjiL9dC-ELAQYSo_hh8QOSE4DD6GHuXec4VhLHwU42CB30JCzdlm-CAdBJiHg98LcxFl62w5IsB5HLLIHgQsZbcAv4G_wMMSTV7SBX6XM9hKAQ8oFFi5fc-bo8ter42YJ1gEGQ8LqTJGQQ44PKRruDOxPDjnq5P6QaGbE-NyDJEAqvU3QAtxJkcdw1WuxDQImf-zyjWOYnkpY4fgqzO0x2EVX9a2xDlJqK-vsMIImDJ4hqJ9gD4EnYJDQ2JIL6WEX2CI22adZozFDQfJoG_oIgYco586wtYYAoduVektxY7FDTBkDDxPQqncCZs8KZrlbnEUh3CAspdrCVolwyFB0D6ReViadc-79XY7cH20h_2yCxsQuoI8YL216MwpNffBEhlSCH7lKI6Vh-UbaQtYB9BR5Bwpo4dICJvqauiMSs5Ce2f2lgoo5cd5vqxKyZzJYKr0BRxMxHCMBi2X-x9Dx-Cl20lBJlFmalTpL9RqUEsfv8NfVEdXZQPjJUMk_VPtBoY-Viu1Gxi6CZMBNJgNG7yeSIhrN5jSAKyvrzq7rgJ9E4M36RTg2jp3Ehexxj7jQTO9cBuun9lwAY9E_KITtGQ8K0x5WTHZa7l2Qs7hBp_ycSzLEVS_kz0xRBQC65cBUwrtJZEIRKpSgEqW1UgHMyNCu0imSQg9QqZs6vBKSHmXLXhG-cS1aVrzqIqnnZHxKSWSQD_9DwjbbM8GLRu4fqFtmPVoedZT7Yqu130KA0SjgU2qmxHgAE2KAJCbRHRGImID6suXjKQL7oqjY4SML7a6n1sPY2_6-seLF-t1lYZgUTM8J3AS1Qvpup0lkRlWA1ZuPvjpy2t_vZguflPkV8Spalhjzs4kwDBSwFyE9wK0bXUfrSbgpdK6a561K9dSb1sTVK8kkDqq7y0WanWi7VZCZCaI47s77ZmB8ifbCeb2G4G_nXWFGtPApOUKdcWgLS5ZxfGJERFqrprofraSOHWgKvn6xos9pzVvCWq8qAbLjsRHocl8huUdHJ0opVDYTyQbQdnxZVqH0uM4yqjVK96b9UjWdVNBhnlC3u0Nus2cIx9sMIbYryml6kA2K6iF591kuR73h1_zpcFyudkWl6eHGlnfv-2mk928_8dgnKKoHyYBNv2WuYE55kdcoEJNwEfGCS4KW-MjfndGCC-LklZvCOaAaQuG_n7rYdgGxxrbWFG4FScgT14c7m5O3UAfVEJ0cqoq9xtMIUxUt12tttcV-zsq3f0XVfpfW-cjSvT-PUqkXjUVc0So1UZt3v0CA_vtTo3s3S9qnmh9HiYQafpHSInwuwdT_L1VtCBqwxLu46JAi1M5rpgWyhFoMPk0UcxnOTWPlQrzb0yyZubVakQ45Biwian2Kq19ReLkgkodmll0AWv8V0LSSbmhEpQyuvp1X6CoRhoHWRelU1NZYYG5dOdPVBrNVQHe-JzE8jlh0vCPWALZvExXu02jGBymtMl3jGObuEVfbk8wmiAul4daE-edpTmFbZOXieqMfRanQJ33tIgBPhJa9oWcDHXL2KdIfs-V2jKlpAKlucCm8ZIOdgpUbXw2zHBwB5-FWT-mqowDUhrUV2dNzhuzBXg_DjRez0fFxmy7HC1zto3STTsW7A4FTuZteCPc7FLWtm6HFaYolBfThtlOWKG716BmgwnhAgLIeWjQdr3GmNZKhet1OteQWvgMolv90XK7V_HqXQr0AOEnLMhHONJHVgXsXNelZnw2bA1M43eVloYnwPqZVTr6VwNDPvIv6VSK5RvN3gm6jTzG03AA45fMJ58quqZhW5PjKU1Bq1Ult2Rvfmt8wGBP8D6XN5VnISF7cxsgJxusccTO6Sw0m_0-r2t0_4UGeoNjdQdwGQeiejZG8-RS7s9TDvUMY-N8lr3cpcdUhS-tOtmQWqx2FqUzoMoQvsl--ZCTY17Uh47mITGP5qFuwGEn2YRIO9wFa0RkfvkdX94qw7GTCfLIrsyCFaw6uxnQisnahRQniSvAYl9txdZuXJiJrwF1lJtH2kRIFjUAlnFm_6tvQyVLZG8_pkXPn6eriLTW5m6oPKz-kSfHWr9oBjttvudV912eMQ8ZguDI7rLhWQYquy57Ninicv01jsRZQoM0qu3Ua6o_PqAklBX7rhE9Yv1BAcyknjeb7mtqNLC9Tz35FwqmLxB1T-ddFzalffXAauzmvPZlVLj4QN8TKj4MVvbTUAntJ4Sg885Qh7Mx_KszTHVCt68Q4DPvjmPOwYMi9zHSmVSgeynTsgSdif715pu_EmSepX7iyqDq3OxVXPZBRd-2Ykqr54DJUzXnQiAHiAeO3nm3ZO1vH5xn5Gfdo_PzbjyfbktMtbiXxctmPHJWtrv1-Plluh7vfh-vN9PlwtC2aF9oo_NO-gXy3no2cQ3tHB6owFoYshwfy2uwLRs1Wm62a6hz0z_H-dJqtatZNcN_PW2x2W1ep5PtbtGfO8vDSWW53S58urafD2-Cp17w2HtEN5LIED_BhOZ-hVSfnEcMCwoNdPpVXdVjSDbhxf2YX_8pvH2T8PDpJGWsz64_0R6JPCX7tg-pujsJw3P2zy2I_QHjE_yXCJGor_GTh4fH3t3N6enhHkO79Njrod7Dp8P-8PkOf74P9p27R7_Tu-vgm1BPZU_me_ANeep2ut3Op87nbrf76eGx_enQewSG4O6xF_QCjFv3HRxBBmmrjduMH2_4k9ZhnxwFEEMoZCInIl0xMc7ko0RCE_EELaPKfToB8hut9JPW-J9a67nl">