[clang] [clang-format] Handle C# `goto case` constructs (PR #113257)
Owen Pan via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 21 20:20:36 PDT 2024
https://github.com/owenca created https://github.com/llvm/llvm-project/pull/113257
Fixes #113256.
>From ae702403b55b23074dd881ef7735bfbe0a3c8eab Mon Sep 17 00:00:00 2001
From: Owen Pan <owenpiano at gmail.com>
Date: Mon, 21 Oct 2024 20:18:43 -0700
Subject: [PATCH] [clang-format] Handle C# `goto case` constructs
Fixes #113256.
---
clang/lib/Format/UnwrappedLineParser.cpp | 5 ++++
clang/unittests/Format/FormatTestCSharp.cpp | 28 ++++++++++++++-------
2 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp
index 4a5109983dfcc5..ebb9f4c7da8313 100644
--- a/clang/lib/Format/UnwrappedLineParser.cpp
+++ b/clang/lib/Format/UnwrappedLineParser.cpp
@@ -1568,6 +1568,11 @@ void UnwrappedLineParser::parseStructuralElement(
}
parseCaseLabel();
return;
+ case tok::kw_goto:
+ nextToken();
+ if (FormatTok->is(tok::kw_case))
+ nextToken();
+ break;
case tok::kw_try:
case tok::kw___try:
if (Style.isJavaScript() && Line->MustBeDeclaration) {
diff --git a/clang/unittests/Format/FormatTestCSharp.cpp b/clang/unittests/Format/FormatTestCSharp.cpp
index 0c5afa1524374d..151f7072e0c657 100644
--- a/clang/unittests/Format/FormatTestCSharp.cpp
+++ b/clang/unittests/Format/FormatTestCSharp.cpp
@@ -1689,15 +1689,25 @@ TEST_F(FormatTestCSharp, BrokenBrackets) {
}
TEST_F(FormatTestCSharp, GotoCaseLabel) {
- verifyNoCrash("switch (i) {\n"
- "case 0:\n"
- " goto case 1;\n"
- "case 1:\n"
- " j = 0;\n"
- " {\n"
- " break;\n"
- " }\n"
- "}");
+ verifyFormat("switch (i)\n"
+ "{\n"
+ "case 0:\n"
+ " goto case 1;\n"
+ "case 1:\n"
+ " j = 0;\n"
+ " {\n"
+ " break;\n"
+ " }\n"
+ "}",
+ "switch (i) {\n"
+ "case 0:\n"
+ " goto case 1;\n"
+ "case 1:\n"
+ " j = 0;\n"
+ " {\n"
+ " break;\n"
+ " }\n"
+ "}");
}
} // namespace
More information about the cfe-commits
mailing list