Skip to content

Conversation

HazardyKnusperkeks
Copy link
Contributor

Just return early based on the SpacedRequiredBefore.

Just return early based on the SpacedRequiredBefore.
@llvmbot
Copy link
Member

llvmbot commented Oct 18, 2025

@llvm/pr-subscribers-clang-format

Author: Björn Schäpers (HazardyKnusperkeks)

Changes

Just return early based on the SpacedRequiredBefore.


Full diff: https://github.com/llvm/llvm-project/pull/164122.diff

1 Files Affected:

  • (modified) clang/lib/Format/WhitespaceManager.cpp (+13-15)
diff --git a/clang/lib/Format/WhitespaceManager.cpp b/clang/lib/Format/WhitespaceManager.cpp index 7348a3af8cf95..03a1e9a6bd80b 100644 --- a/clang/lib/Format/WhitespaceManager.cpp +++ b/clang/lib/Format/WhitespaceManager.cpp @@ -656,7 +656,6 @@ void WhitespaceManager::alignConsecutiveMacros() { auto AlignMacrosMatches = [](const Change &C) { const FormatToken *Current = C.Tok; - unsigned SpacesRequiredBefore = 1; if (Current->SpacesRequiredBefore == 0 || !Current->Previous) return false; @@ -665,22 +664,21 @@ void WhitespaceManager::alignConsecutiveMacros() { // If token is a ")", skip over the parameter list, to the // token that precedes the "(" - if (Current->is(tok::r_paren) && Current->MatchingParen) { - Current = Current->MatchingParen->Previous; - SpacesRequiredBefore = 0; - } - - if (!Current || Current->isNot(tok::identifier)) - return false; - - if (!Current->Previous || Current->Previous->isNot(tok::pp_define)) + if (const auto *MatchingParen = Current->MatchingParen; + Current->is(tok::r_paren) && MatchingParen) { + // For a macro function, 0 spaces are required between the + // identifier and the lparen that opens the parameter list. + if (MatchingParen->SpacesRequiredBefore > 0) + return false; + Current = MatchingParen->Previous; + } else if (Current->Next->SpacesRequiredBefore != 1) { + // For a simple macro, 1 space is required between the + // identifier and the first token of the defined value. return false; + } - // For a macro function, 0 spaces are required between the - // identifier and the lparen that opens the parameter list. - // For a simple macro, 1 space is required between the - // identifier and the first token of the defined value. - return Current->Next->SpacesRequiredBefore == SpacesRequiredBefore; + return Current && Current->is(tok::identifier) && Current->Previous && + Current->Previous->is(tok::pp_define); }; unsigned MinColumn = 0; 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

2 participants