]> granicus.if.org Git - clang/commitdiff
clang-format: Early cut-off for inlining nested blocks.
authorDaniel Jasper <djasper@google.com>
Tue, 15 Apr 2014 08:28:06 +0000 (08:28 +0000)
committerDaniel Jasper <djasper@google.com>
Tue, 15 Apr 2014 08:28:06 +0000 (08:28 +0000)
Specifically, for a nested block or lambda, don't try to put the single
statement body inline, if it exceeds the column limit.

This should not change any observable behavior (as those would never
have led to the 'best' solution), but significantly speeds up formatting
time.

This fixes llvm.org/PR18761. Formatting time goes down from ~100s to a
few ms.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206260 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/Format.cpp

index 2be21407f0c454964f765cf77197e2891e86df91..528e1356108ebf7d8c3a5398f61365d38b9ee15b 100644 (file)
@@ -1139,6 +1139,13 @@ private:
     if (Previous.Children[0]->Last->isTrailingComment())
       return false;
 
+    // If the child line exceeds the column limit, we wouldn't want to merge it.
+    // We add +2 for the trailing " }".
+    if (Style.ColumnLimit > 0 &&
+        Previous.Children[0]->Last->TotalLength + State.Column + 2 >
+            Style.ColumnLimit)
+      return false;
+
     if (!DryRun) {
       Whitespaces->replaceWhitespace(
           *Previous.Children[0]->First,