llvm-project
62e55b41 - [clang-format] Add per-operator granularity for BreakBinaryOperations (#181051)

Commit
63 days ago
[clang-format] Add per-operator granularity for BreakBinaryOperations (#181051) ## Summary Extend `BreakBinaryOperations` to accept a structured YAML configuration with per-operator break rules and minimum chain length gating via `PerOperator`. - **Per-operator rules**: specify break style (`Never`, `OnePerLine`, `RespectPrecedence`) for specific operator groups - **Minimum chain length**: only trigger breaking when a chain has N or more operators - **Fully backward-compatible**: the simple scalar form (`BreakBinaryOperations: OnePerLine`) behaves identically to the current enum value RFC discussion: https://discourse.llvm.org/t/rfc-per-operator-granularity-for-breakbinaryoperations/89800 ### New YAML syntax ```yaml BreakBinaryOperations: Default: Never PerOperator: - Operators: ['&&', '||'] Style: OnePerLine MinChainLength: 3 - Operators: ['|'] Style: OnePerLine ``` ### Motivation `BreakBinaryOperations` operates at the level of all binary operators simultaneously. Enabling `OnePerLine` for `&&`/`||` condition chains also forces it on `+`, `|`, and other operators, which may not be desired. The only workaround today is `// clang-format off`. ## Test plan - [x] All existing `BreakBinaryOperations` unit tests updated and passing - [x] New tests for per-operator rules (`&&`/`||` OnePerLine + default Never) - [x] New tests for multiple operator groups (`&&`/`||` + `|`) - [x] New tests for `MinChainLength` gating (chain of 2 vs 3+) - [x] Config parse tests for structured YAML form - [x] RST documentation auto-generated via `dump_format_style.py` - [x] Release notes updated
Author
Parents
Loading