clang-format: [JS] Add a special case for indenting function literals.
Before: var func = function() { doSomething(); }; After: var func = function() { doSomething(); }; This is a very narrow special case which fixes most of the discrepency with what our users do. In the long run, we should try to come up with a more generic fix for indenting these. llvm-svn: 240014
This commit is contained in:
parent
1739421893
commit
ed3f395773
|
@ -418,7 +418,21 @@ unsigned ContinuationIndenter::addTokenOnNewLine(LineState &State,
|
|||
Penalty += Style.PenaltyBreakFirstLessLess;
|
||||
|
||||
State.Column = getNewLineColumn(State);
|
||||
|
||||
// Indent nested blocks relative to this column, unless in a very specific
|
||||
// JavaScript special case where:
|
||||
//
|
||||
// var loooooong_name =
|
||||
// function() {
|
||||
// // code
|
||||
// }
|
||||
//
|
||||
// is common and should be formatted like a free-standing function.
|
||||
if (Style.Language != FormatStyle::LK_JavaScript ||
|
||||
Current.NestingLevel != 0 || !PreviousNonComment->is(tok::equal) ||
|
||||
!Current.is(Keywords.kw_function))
|
||||
State.Stack.back().NestedBlockIndent = State.Column;
|
||||
|
||||
if (NextNonComment->isMemberAccess()) {
|
||||
if (State.Stack.back().CallContinuation == 0)
|
||||
State.Stack.back().CallContinuation = State.Column;
|
||||
|
|
|
@ -294,6 +294,10 @@ TEST_F(FormatTestJS, FunctionLiterals) {
|
|||
verifyFormat("var func = function() {\n"
|
||||
" return 1;\n"
|
||||
"};");
|
||||
verifyFormat("var func = //\n"
|
||||
" function() {\n"
|
||||
" return 1;\n"
|
||||
"};");
|
||||
verifyFormat("return {\n"
|
||||
" body: {\n"
|
||||
" setAttribute: function(key, val) { this[key] = val; },\n"
|
||||
|
|
Loading…
Reference in New Issue