summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2015-06-11 13:31:45 +0000
committerDaniel Jasper <djasper@google.com>2015-06-11 13:31:45 +0000
commit20580fd5d378e952dff9d1f0331b27aee43b2ccd (patch)
tree548baecd8f3384ad1304575882d7fc9b53a347d2
parent56691b8cb93c2d05c2679a8bf412a9913b3198dd (diff)
downloadbcm5719-llvm-20580fd5d378e952dff9d1f0331b27aee43b2ccd.tar.gz
bcm5719-llvm-20580fd5d378e952dff9d1f0331b27aee43b2ccd.zip
clang-format: Make SFS_Inline imply SFS_Empty.
In the long run, these two might be independent or we might to only allow specific combinations. Until we have a corresponding request, however, it is hard to do the right thing and choose the right configuration options. Thus, just don't touch the options yet and just modify the behavior slightly. llvm-svn: 239531
-rw-r--r--clang/docs/ClangFormatStyleOptions.rst33
-rw-r--r--clang/include/clang/Format/Format.h4
-rw-r--r--clang/lib/Format/UnwrappedLineFormatter.cpp2
-rw-r--r--clang/unittests/Format/FormatTestJS.cpp19
4 files changed, 26 insertions, 32 deletions
diff --git a/clang/docs/ClangFormatStyleOptions.rst b/clang/docs/ClangFormatStyleOptions.rst
index c06a8c76ecd..edec058b400 100644
--- a/clang/docs/ClangFormatStyleOptions.rst
+++ b/clang/docs/ClangFormatStyleOptions.rst
@@ -155,23 +155,21 @@ the configuration (without a prefix: ``Auto``).
This applies to round brackets (parentheses), angle brackets and square
brackets. This will result in formattings like
-
- .. code-block:: c++
-
- someLongFunction(argument1,
- argument2);
+ \code
+ someLongFunction(argument1,
+ argument2);
+ \endcode
**AlignConsecutiveAssignments** (``bool``)
If ``true``, aligns consecutive assignments.
This will align the assignment operators of consecutive lines. This
will result in formattings like
-
- .. code-block:: c++
-
- int aaaa = 12;
- int b = 23;
- int ccc = 23;
+ \code
+ int aaaa = 12;
+ int b = 23;
+ int ccc = 23;
+ \endcode
**AlignEscapedNewlinesLeft** (``bool``)
If ``true``, aligns escaped newlines as far left as possible.
@@ -204,10 +202,10 @@ the configuration (without a prefix: ``Auto``).
* ``SFS_None`` (in configuration: ``None``)
Never merge functions into a single line.
- * ``SFS_Inline`` (in configuration: ``Inline``)
- Only merge functions defined inside a class.
* ``SFS_Empty`` (in configuration: ``Empty``)
Only merge empty functions.
+ * ``SFS_Inline`` (in configuration: ``Inline``)
+ Only merge functions defined inside a class. Implies "empty".
* ``SFS_All`` (in configuration: ``All``)
Merge all functions fitting on a single line.
@@ -343,11 +341,10 @@ the configuration (without a prefix: ``Auto``).
instead of as function calls.
These are expected to be macros of the form:
-
- .. code-block:: c++
-
- FOREACH(<variable-declaration>, ...)
- <loop-body>
+ \code
+ FOREACH(<variable-declaration>, ...)
+ <loop-body>
+ \endcode
For example: BOOST_FOREACH.
diff --git a/clang/include/clang/Format/Format.h b/clang/include/clang/Format/Format.h
index 3fdee99f3e5..c4c28ec3d26 100644
--- a/clang/include/clang/Format/Format.h
+++ b/clang/include/clang/Format/Format.h
@@ -210,10 +210,10 @@ struct FormatStyle {
enum ShortFunctionStyle {
/// \brief Never merge functions into a single line.
SFS_None,
- /// \brief Only merge functions defined inside a class.
- SFS_Inline,
/// \brief Only merge empty functions.
SFS_Empty,
+ /// \brief Only merge functions defined inside a class. Implies "empty".
+ SFS_Inline,
/// \brief Merge all functions fitting on a single line.
SFS_All,
};
diff --git a/clang/lib/Format/UnwrappedLineFormatter.cpp b/clang/lib/Format/UnwrappedLineFormatter.cpp
index ee81b509d34..191b78d061a 100644
--- a/clang/lib/Format/UnwrappedLineFormatter.cpp
+++ b/clang/lib/Format/UnwrappedLineFormatter.cpp
@@ -189,7 +189,7 @@ private:
// If necessary, change to something smarter.
bool MergeShortFunctions =
Style.AllowShortFunctionsOnASingleLine == FormatStyle::SFS_All ||
- (Style.AllowShortFunctionsOnASingleLine == FormatStyle::SFS_Empty &&
+ (Style.AllowShortFunctionsOnASingleLine >= FormatStyle::SFS_Empty &&
I[1]->First->is(tok::r_brace)) ||
(Style.AllowShortFunctionsOnASingleLine == FormatStyle::SFS_Inline &&
TheLine->Level != 0);
diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp
index d817b6c93e0..8f7202eeb20 100644
--- a/clang/unittests/Format/FormatTestJS.cpp
+++ b/clang/unittests/Format/FormatTestJS.cpp
@@ -252,6 +252,7 @@ TEST_F(FormatTestJS, FormatsFreestandingFunctions) {
" function inner2(a, b) { return a; }\n"
" inner2(a, b);\n"
"}");
+ verifyFormat("function f() {}");
}
TEST_F(FormatTestJS, ArrayLiterals) {
@@ -707,12 +708,9 @@ TEST_F(FormatTestJS, Modules) {
verifyFormat("export function fn() {\n"
" return 'fn';\n"
"}");
- verifyFormat("export function A() {\n"
- "}\n"
- "export default function B() {\n"
- "}\n"
- "export function C() {\n"
- "}");
+ verifyFormat("export function A() {}\n"
+ "export default function B() {}\n"
+ "export function C() {}");
verifyFormat("export const x = 12;");
verifyFormat("export default class X {}");
verifyFormat("export {X, Y} from 'some/module.js';");
@@ -819,12 +817,12 @@ TEST_F(FormatTestJS, TypeArguments) {
verifyFormat("foo<Y>(a);");
verifyFormat("var x: X<Y>[];");
verifyFormat("class C extends D<E> implements F<G>, H<I> {}");
- verifyFormat("function f(a: List<any> = null) {\n}");
- verifyFormat("function f(): List<any> {\n}");
+ verifyFormat("function f(a: List<any> = null) {}");
+ verifyFormat("function f(): List<any> {}");
}
TEST_F(FormatTestJS, OptionalTypes) {
- verifyFormat("function x(a?: b, c?, d?) {\n}");
+ verifyFormat("function x(a?: b, c?, d?) {}");
verifyFormat("class X {\n"
" y?: z;\n"
" z?;\n"
@@ -838,8 +836,7 @@ TEST_F(FormatTestJS, OptionalTypes) {
" aaaaaaaa?: string,\n"
" aaaaaaaaaaaaaaa?: boolean,\n"
" aaaaaa?: List<string>\n"
- "}) {\n"
- "}");
+ "}) {}");
}
TEST_F(FormatTestJS, IndexSignature) {
OpenPOWER on IntegriCloud