diff options
-rw-r--r-- | clang/docs/ClangFormatStyleOptions.rst | 33 | ||||
-rw-r--r-- | clang/include/clang/Format/Format.h | 4 | ||||
-rw-r--r-- | clang/lib/Format/UnwrappedLineFormatter.cpp | 2 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTestJS.cpp | 19 |
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) { |