[PATCH] D137052: [clang-format] Don't skip #else/#elif of #if 0
Owen Pan via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Oct 30 17:37:27 PDT 2022
owenpan created this revision.
owenpan added reviewers: sstwcw, sammccall, HazardyKnusperkeks, MyDeveloperDay, rymiel.
owenpan added a project: clang-format.
Herald added a project: All.
owenpan requested review of this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Fixes https://github.com/llvm/llvm-project/issues/58188.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D137052
Files:
clang/lib/Format/UnwrappedLineParser.cpp
clang/unittests/Format/FormatTest.cpp
Index: clang/unittests/Format/FormatTest.cpp
===================================================================
--- clang/unittests/Format/FormatTest.cpp
+++ clang/unittests/Format/FormatTest.cpp
@@ -6119,7 +6119,7 @@
"#endif");
// Verify that indentation is correct when there is an `#if 0` with an
- // `#else`.
+ // `#else`/`#elif`.
verifyFormat("#if 0\n"
"{\n"
"#else\n"
@@ -6127,6 +6127,26 @@
"#endif\n"
" x;\n"
"}");
+ verifyFormat("#if 0\n"
+ "{\n"
+ "#elif FOO\n"
+ "{\n"
+ "#endif\n"
+ " x;\n"
+ "}");
+
+ verifyFormat("#if 0\n"
+ "#endif\n"
+ "#if X\n"
+ "int something_fairly_long; // Align here please\n"
+ "#endif // Should be aligned");
+
+ verifyFormat("#if 0\n"
+ "#endif\n"
+ "#if X\n"
+ "#else // Align\n"
+ ";\n"
+ "#endif // Align");
}
TEST_F(FormatTest, GraciouslyHandleIncorrectPreprocessorConditions) {
Index: clang/lib/Format/UnwrappedLineParser.cpp
===================================================================
--- clang/lib/Format/UnwrappedLineParser.cpp
+++ clang/lib/Format/UnwrappedLineParser.cpp
@@ -1144,12 +1144,11 @@
++PPBranchLevel;
assert(PPBranchLevel >= 0 && PPBranchLevel <= (int)PPLevelBranchIndex.size());
if (PPBranchLevel == (int)PPLevelBranchIndex.size()) {
- // If the first branch is unreachable, set the BranchIndex to 1. This way
- // the next branch will be parsed if there is one.
- PPLevelBranchIndex.push_back(Unreachable ? 1 : 0);
+ PPLevelBranchIndex.push_back(0);
PPLevelBranchCount.push_back(0);
}
- PPChainBranchIndex.push(0);
+ if (!Unreachable)
+ PPChainBranchIndex.push(0);
bool Skip = PPLevelBranchIndex[PPBranchLevel] > 0;
conditionalCompilationCondition(Unreachable || Skip);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D137052.471884.patch
Type: text/x-patch
Size: 2045 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20221031/573603d5/attachment.bin>
More information about the cfe-commits
mailing list