Issue 176200
Summary Non-Idempotency on 21.1.8 with `IndentAccessModifiers`
Labels new issue
Assignees
Reporter joh06937
    I can pare down my `.clang-format` to a single setting:
```
IndentAccessModifiers: true
```
and run `clang-format` on Windows, version 21.1.8 and have changes appear on the second run of a simple test file `test.cpp`:
```cpp
class Test {
    void One(); // Comment 1
// Comment 2
    void Two(); // Comment 3
// Comment 4
};
```
`$ clang-format --style=file:.clang-format -i test.cpp`
`test.cpp` now contains:
```cpp
class Test {
    void One(); // Comment 1
 // Comment 2
    void Two(); // Comment 3
    // Comment 4
};
```
If I run it again, it will then align `// Comment 4` with the comments above:
`$ clang-format --style=file:.clang-format -i test.cpp`
`test.cpp` now contains:
```cpp
class Test {
    void One(); // Comment 1
 // Comment 2
    void Two(); // Comment 3
                // Comment 4
};
```
Here is a dump of the config for this setup:
```
$ clang-format --style=file:.clang-format -i test.cpp --dump-config
---
Language: Cpp
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignArrayOfStructures: None
AlignConsecutiveAssignments:
  Enabled: false
  AcrossEmptyLines: false
  AcrossComments:  false
 AlignCompound:   false
  AlignFunctionDeclarations: false
 AlignFunctionPointers: false
  PadOperators: true
AlignConsecutiveBitFields:
  Enabled:         false
 AcrossEmptyLines: false
  AcrossComments:  false
  AlignCompound:   false
 AlignFunctionDeclarations: false
  AlignFunctionPointers: false
 PadOperators:    false
AlignConsecutiveDeclarations:
  Enabled: false
  AcrossEmptyLines: false
  AcrossComments:  false
  AlignCompound: false
  AlignFunctionDeclarations: true
  AlignFunctionPointers: false
 PadOperators:    false
AlignConsecutiveMacros:
  Enabled:         false
 AcrossEmptyLines: false
  AcrossComments:  false
  AlignCompound:   false
 AlignFunctionDeclarations: false
  AlignFunctionPointers: false
 PadOperators:    false
AlignConsecutiveShortCaseStatements:
  Enabled: false
  AcrossEmptyLines: false
  AcrossComments:  false
 AlignCaseArrows: false
  AlignCaseColons: false
AlignConsecutiveTableGenBreakingDAGArgColons:
  Enabled: false
  AcrossEmptyLines: false
  AcrossComments:  false
  AlignCompound: false
  AlignFunctionDeclarations: false
  AlignFunctionPointers: false
 PadOperators:    false
AlignConsecutiveTableGenCondOperatorColons:
 Enabled:         false
  AcrossEmptyLines: false
  AcrossComments:  false
 AlignCompound:   false
  AlignFunctionDeclarations: false
 AlignFunctionPointers: false
  PadOperators: false
AlignConsecutiveTableGenDefinitionColons:
  Enabled:         false
 AcrossEmptyLines: false
  AcrossComments:  false
  AlignCompound:   false
 AlignFunctionDeclarations: false
  AlignFunctionPointers: false
 PadOperators:    false
AlignEscapedNewlines: Right
AlignOperands: Align
AlignTrailingComments:
  Kind:            Always
  OverEmptyLines: 0
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowBreakBeforeNoexceptSpecifier: Never
AllowShortBlocksOnASingleLine: Never
AllowShortCaseExpressionOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: false
AllowShortCompoundRequirementOnASingleLine: true
AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
AllowShortNamespacesOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AttributeMacros:
  - __capability
BinPackArguments: true
BinPackLongBracedList: true
BinPackParameters: BinPack
BitFieldColonSpacing: Both
BracedInitializerIndentWidth: -1
BraceWrapping:
  AfterCaseLabel: false
  AfterClass:      false
  AfterControlStatement: Never
  AfterEnum: false
  AfterExternBlock: false
  AfterFunction:   false
 AfterNamespace:  false
  AfterObjCDeclaration: false
  AfterStruct: false
  AfterUnion:      false
  BeforeCatch:     false
  BeforeElse: false
  BeforeLambdaBody: false
  BeforeWhile:     false
  IndentBraces: false
  SplitEmptyFunction: true
  SplitEmptyRecord: true
 SplitEmptyNamespace: true
BreakAdjacentStringLiterals: true
BreakAfterAttributes: Leave
BreakAfterJavaFieldAnnotations: false
BreakAfterReturnType: None
BreakArrays: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: Always
BreakBeforeBraces: Attach
BreakBeforeInlineASMColon: OnlyMultiline
BreakBeforeTemplateCloser: false
BreakBeforeTernaryOperators: true
BreakBinaryOperations: Never
BreakConstructorInitializers: BeforeColon
BreakFunctionDefinitionParameters: false
BreakInheritanceList: BeforeColon
BreakStringLiterals: true
BreakTemplateDeclarations: MultiLine
ColumnLimit:     80
CommentPragmas:  '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
EnumTrailingComma: Leave
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
  - foreach
  - Q_FOREACH
  - BOOST_FOREACH
IfMacros:
  - KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
  - Regex: '^"(llvm|llvm-c|clang|clang-c)/'
    Priority:        2
    SortPriority: 0
    CaseSensitive:   false
  - Regex: '^(<|"(gtest|gmock|isl|json)/)'
    Priority:        3
    SortPriority: 0
    CaseSensitive:   false
  - Regex:           '.*'
    Priority: 1
    SortPriority:    0
    CaseSensitive:   false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: true
IndentCaseBlocks: false
IndentCaseLabels: false
IndentExportBlock: true
IndentExternBlock: AfterExternBlock
IndentGotoLabels: true
IndentPPDirectives: None
IndentRequiresClause: true
IndentWidth: 2
IndentWrappedFunctionNames: false
InsertBraces: false
InsertNewlineAtEOF: false
InsertTrailingCommas: None
IntegerLiteralSeparator:
  Binary:          0
  BinaryMinDigits: 0
 Decimal:         0
  DecimalMinDigits: 0
  Hex:             0
 HexMinDigits:    0
_javascript_Quotes: Leave
_javascript_WrapImports: true
KeepEmptyLines:
  AtEndOfFile:     false
  AtStartOfBlock:  true
 AtStartOfFile:   true
KeepFormFeed:    false
LambdaBodyIndentation: Signature
LineEnding:      DeriveLF
MacroBlockBegin: ''
MacroBlockEnd: ''
MainIncludeChar: Quote
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 2
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
OneLineFormatOffRegex: ''
PackConstructorInitializers: BinPack
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakBeforeMemberAccess: 150
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 0
PenaltyBreakScopeResolution: 500
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 1000000
PenaltyIndentedWhitespace: 0
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
PPIndentWidth: -1
QualifierAlignment: Leave
ReferenceAlignment: Pointer
ReflowComments: Always
RemoveBracesLLVM: false
RemoveEmptyLinesInUnwrappedLines: false
RemoveParentheses: Leave
RemoveSemicolon: false
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SkipMacroDefinitionBody: false
SortIncludes:
  Enabled:         true
 IgnoreCase:      false
SortJavaStaticImport: Before
SortUsingDeclarations: LexicographicNumeric
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterOperatorKeyword: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeJsonColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeParensOptions:
  AfterControlStatements: true
  AfterForeachMacros: true
  AfterFunctionDefinitionName: false
 AfterFunctionDeclarationName: false
  AfterIfMacros:   true
  AfterNot: false
  AfterOverloadedOperator: false
  AfterPlacementOperator: true
 AfterRequiresInClause: false
  AfterRequiresInExpression: false
 BeforeNonEmptyParentheses: false
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInContainerLiterals: true
SpacesInLineCommentPrefix:
 Minimum:         1
  Maximum:         -1
SpacesInParens: Never
SpacesInParensOptions:
  ExceptDoubleParentheses: false
 InCStyleCasts:   false
  InConditionalStatements: false
 InEmptyParentheses: false
  Other:           false
SpacesInSquareBrackets: false
Standard:        Latest
StatementAttributeLikeMacros:
  - Q_EMIT
StatementMacros:
  - Q_UNUSED
  - QT_REQUIRE_VERSION
TableGenBreakInsideDAGArg: DontBreak
TabWidth: 8
UseTab:          Never
VerilogBreakBetweenInstancePorts: true
WhitespaceSensitiveMacros:
  - BOOST_PP_STRINGIZE
  - CF_SWIFT_NAME
 - NS_SWIFT_NAME
  - PP_STRINGIZE
  - STRINGIZE
WrapNamespaceBodyWithEmptyLines: Leave
...
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to