From 6bf9a9c7f6dde1d158f5153b4cd8a91cfbb6b114 Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Wed, 7 May 2014 09:48:30 +0000 Subject: [PATCH] clang-format: Be slightly more aggressive on single-line functions. So that JS functions can also be merged into a single line. Before: var func = function() { return 1; }; After: var func = function() { return 1; }; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@208176 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/Format.cpp | 8 ++++++-- unittests/Format/FormatTestJS.cpp | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/Format/Format.cpp b/lib/Format/Format.cpp index 21334ad9c8..008b4159fa 100644 --- a/lib/Format/Format.cpp +++ b/lib/Format/Format.cpp @@ -654,6 +654,10 @@ private: Tok->CanBreakBefore = true; return 1; } else if (Limit != 0 && Line.First->isNot(tok::kw_namespace)) { + // We don't merge short records. + if (Line.First->isOneOf(tok::kw_class, tok::kw_union, tok::kw_struct)) + return 0; + // Check that we still have three lines and they fit into the limit. if (I + 2 == E || I[2]->Type == LT_Invalid) return 0; @@ -672,9 +676,9 @@ private: Tok = Tok->Next; } while (Tok != NULL); - // Last, check that the third line contains a single closing brace. + // Last, check that the third line starts with a closing brace. Tok = I[2]->First; - if (Tok->getNextNonComment() != NULL || Tok->isNot(tok::r_brace)) + if (Tok->isNot(tok::r_brace)) return 0; return 2; diff --git a/unittests/Format/FormatTestJS.cpp b/unittests/Format/FormatTestJS.cpp index ee49912522..a94ed4707d 100644 --- a/unittests/Format/FormatTestJS.cpp +++ b/unittests/Format/FormatTestJS.cpp @@ -98,6 +98,11 @@ TEST_F(FormatTestJS, GoogScopes) { "}); // goog.scope"); } +TEST_F(FormatTestJS, Closures) { + verifyFormat("doFoo(function() { return 1; });"); + verifyFormat("var func = function() { return 1; };"); +} + TEST_F(FormatTestJS, ReturnStatements) { verifyFormat("function() { return [hello, world]; }"); } -- 2.40.0