[clang] [clang-format][NFC] Refactor UnwrappedLineParser::parseLabel (PR #207674)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 6 00:39:44 PDT 2026
https://github.com/owenca created https://github.com/llvm/llvm-project/pull/207674
See https://github.com/llvm/llvm-project/pull/196815#issuecomment-4470006692
>From 183586940251a89cf568126883a1cdf89f444c7e Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Mon, 6 Jul 2026 00:33:07 -0700
Subject: [PATCH] [clang-format][NFC] Refactor UnwrappedLineParser::parseLabel
See https://github.com/llvm/llvm-project/pull/196815#issuecomment-4470006692
---
clang/lib/Format/UnwrappedLineParser.cpp | 36 +++++++++++-------------
clang/lib/Format/UnwrappedLineParser.h | 3 +-
2 files changed, 18 insertions(+), 21 deletions(-)
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp
index 0a211f5325e6f..c9913e0627a21 100644
--- a/clang/lib/Format/UnwrappedLineParser.cpp
+++ b/clang/lib/Format/UnwrappedLineParser.cpp
@@ -1773,7 +1773,7 @@ void UnwrappedLineParser::parseStructuralElement(
if (!Line->InMacroBody || CurrentLines->size() > 1)
Line->Tokens.begin()->Tok->MustBreakBefore = true;
FormatTok->setFinalizedType(TT_GotoLabelColon);
- parseLabel(Style.IndentGotoLabels);
+ parseLabel(/*IsGotoLabel=*/true);
if (HasLabel)
*HasLabel = true;
return;
@@ -3431,28 +3431,24 @@ void UnwrappedLineParser::parseDoWhile() {
parseStructuralElement();
}
-void UnwrappedLineParser::parseLabel(
- FormatStyle::IndentGotoLabelStyle IndentGotoLabels) {
- const bool IsGotoLabel = FormatTok->is(TT_GotoLabelColon);
+void UnwrappedLineParser::parseLabel(bool IsGotoLabel) {
nextToken();
- unsigned OldLineLevel = Line->Level;
- switch (IndentGotoLabels) {
- case FormatStyle::IGLS_NoIndent:
- Line->Level = 0;
- break;
- case FormatStyle::IGLS_OuterIndent:
- if (Line->Level > 1 || (!Line->InPPDirective && Line->Level > 0))
- --Line->Level;
- break;
- case FormatStyle::IGLS_HalfIndent:
- case FormatStyle::IGLS_InnerIndent:
- break;
+ const auto IndentGotoLabel = Style.IndentGotoLabels;
+ const auto OldLineLevel = Line->Level;
+ auto &Level = Line->Level;
+
+ if (IsGotoLabel && IndentGotoLabel == FormatStyle::IGLS_NoIndent)
+ Level = 0;
+
+ if (!IsGotoLabel || IndentGotoLabel == FormatStyle::IGLS_OuterIndent) {
+ if (OldLineLevel > 1 || (!Line->InPPDirective && OldLineLevel > 0))
+ --Level;
}
if (!IsGotoLabel && !Style.IndentCaseBlocks &&
CommentsBeforeNextToken.empty() && FormatTok->is(tok::l_brace)) {
- CompoundStatementIndenter Indenter(this, Line->Level,
+ CompoundStatementIndenter Indenter(this, Level,
Style.BraceWrapping.AfterCaseLabel,
Style.BraceWrapping.IndentBraces);
parseBlock();
@@ -3462,7 +3458,7 @@ void UnwrappedLineParser::parseLabel(
addUnwrappedLine();
if (!Style.IndentCaseBlocks &&
Style.BreakBeforeBraces == FormatStyle::BS_Whitesmiths) {
- ++Line->Level;
+ ++Level;
}
}
parseStructuralElement();
@@ -3473,7 +3469,9 @@ void UnwrappedLineParser::parseLabel(
nextToken();
addUnwrappedLine();
}
- Line->Level = OldLineLevel;
+
+ Level = OldLineLevel;
+
if (FormatTok->isNot(tok::l_brace)) {
parseStructuralElement();
addUnwrappedLine();
diff --git a/clang/lib/Format/UnwrappedLineParser.h b/clang/lib/Format/UnwrappedLineParser.h
index 22803a837cc63..8fa4e9f7540d5 100644
--- a/clang/lib/Format/UnwrappedLineParser.h
+++ b/clang/lib/Format/UnwrappedLineParser.h
@@ -162,8 +162,7 @@ class UnwrappedLineParser {
void parseLoopBody(bool KeepBraces, bool WrapRightBrace);
void parseForOrWhileLoop(bool HasParens = true);
void parseDoWhile();
- void parseLabel(FormatStyle::IndentGotoLabelStyle IndentGotoLabels =
- FormatStyle::IGLS_OuterIndent);
+ void parseLabel(bool IsGotoLabel = false);
void parseCaseLabel();
void parseSwitch(bool IsExpr);
void parseNamespace();
More information about the cfe-commits
mailing list