From 0baf33b73e2bd6657ee202e2016daf010b8b58b9 Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Fri, 18 Oct 2013 17:20:57 +0000 Subject: [PATCH] clang-format: Be more aggressive on incorrect code. Before, clang-format would not adjust leading indents if it found a structural error (e.g. unmatched {}). It seems, however, that clang-format has gotten good enough at parsing the code structure that this hurts in almost all cases. Commonly, while writing code, it is very useful to be able to correclty indent incomplete if statements or for loops. In case this leads to errors that we don't anticipate, we need to find out and fix those. This fixed llvm.org/PR17594. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192988 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/Format.cpp | 5 +---- unittests/Format/FormatTest.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 3496712e3c..90c3e9e96d 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -915,10 +915,7 @@ public: } else if (TheLine.Type != LT_Invalid && (WasMoved || FormatPPDirective || touchesLine(TheLine))) { unsigned LevelIndent = getIndent(IndentForLevel, TheLine.Level); - if (FirstTok->WhitespaceRange.isValid() && - // Insert a break even if there is a structural error in case where - // we break apart a line consisting of multiple unwrapped lines. - (FirstTok->NewlinesBefore == 0 || !StructuralError)) { + if (FirstTok->WhitespaceRange.isValid()) { formatFirstToken(*TheLine.First, PreviousLine, TheLine.Level, Indent, TheLine.InPPDirective); } else { diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 6bcf44c4e8..23a2203b01 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -4373,16 +4373,16 @@ TEST_F(FormatTest, DoesNotTouchUnwrappedLinesWithErrors) { } TEST_F(FormatTest, IncorrectCodeErrorDetection) { - EXPECT_EQ("{\n{}\n", format("{\n{\n}\n")); + EXPECT_EQ("{\n {}\n", format("{\n{\n}\n")); EXPECT_EQ("{\n {}\n", format("{\n {\n}\n")); EXPECT_EQ("{\n {}\n", format("{\n {\n }\n")); - EXPECT_EQ("{\n {}\n }\n}\n", format("{\n {\n }\n }\n}\n")); + EXPECT_EQ("{\n {}\n}\n}\n", format("{\n {\n }\n }\n}\n")); EXPECT_EQ("{\n" - " {\n" - " breakme(\n" - " qwe);\n" - "}\n", + " {\n" + " breakme(\n" + " qwe);\n" + " }\n", format("{\n" " {\n" " breakme(qwe);\n" -- 2.40.0