forked from OSchip/llvm-project
clang-format: [JS] Correctly Indent Nested JavaScript Literals.
Nested literals are sometimes only indented by 2 spaces, instead of respecting the IndentWidth option. There are existing unit tests (FormatTestJS.ArrayLiterals) that only pass because the style used to test them uses an IndentWidth of 2. This change removes the magic 2 and always uses the IndentWidth. I've added 6 tests. The first 4 of these tests fail before this change, while the last 2 already pass, but were added just to make sure it the change works with all types of braces. Patch originally by Jared Neil, thanks! Differential Revision: https://reviews.llvm.org/D33857 llvm-svn: 304791
This commit is contained in:
parent
83c2b13b66
commit
384232766b
|
@ -1036,8 +1036,8 @@ void ContinuationIndenter::moveStatePastScopeOpener(LineState &State,
|
|||
State.Stack.back().NestedBlockIndent);
|
||||
if (Current.isOneOf(tok::l_brace, TT_ArrayInitializerLSquare)) {
|
||||
if (Current.opensBlockOrBlockTypeList(Style)) {
|
||||
NewIndent = State.Stack.back().NestedBlockIndent + Style.IndentWidth;
|
||||
NewIndent = std::min(State.Column + 2, NewIndent);
|
||||
NewIndent = Style.IndentWidth +
|
||||
std::min(State.Column, State.Stack.back().NestedBlockIndent);
|
||||
} else {
|
||||
NewIndent = State.Stack.back().LastSpace + Style.ContinuationIndentWidth;
|
||||
}
|
||||
|
|
|
@ -1869,5 +1869,44 @@ TEST_F(FormatTestJS, Exponentiation) {
|
|||
verifyFormat("squared **= 2;");
|
||||
}
|
||||
|
||||
TEST_F(FormatTestJS, NestedLiterals) {
|
||||
FormatStyle FourSpaces = getGoogleJSStyleWithColumns(15);
|
||||
FourSpaces.IndentWidth = 4;
|
||||
verifyFormat("var l = [\n"
|
||||
" [\n"
|
||||
" 1,\n"
|
||||
" ],\n"
|
||||
"];", FourSpaces);
|
||||
verifyFormat("var l = [\n"
|
||||
" {\n"
|
||||
" 1: 1,\n"
|
||||
" },\n"
|
||||
"];", FourSpaces);
|
||||
verifyFormat("someFunction(\n"
|
||||
" p1,\n"
|
||||
" [\n"
|
||||
" 1,\n"
|
||||
" ],\n"
|
||||
");", FourSpaces);
|
||||
verifyFormat("someFunction(\n"
|
||||
" p1,\n"
|
||||
" {\n"
|
||||
" 1: 1,\n"
|
||||
" },\n"
|
||||
");", FourSpaces);
|
||||
verifyFormat("var o = {\n"
|
||||
" 1: 1,\n"
|
||||
" 2: {\n"
|
||||
" 3: 3,\n"
|
||||
" },\n"
|
||||
"};", FourSpaces);
|
||||
verifyFormat("var o = {\n"
|
||||
" 1: 1,\n"
|
||||
" 2: [\n"
|
||||
" 3,\n"
|
||||
" ],\n"
|
||||
"};", FourSpaces);
|
||||
}
|
||||
|
||||
} // end namespace tooling
|
||||
} // end namespace clang
|
||||
|
|
Loading…
Reference in New Issue