krasimir created this revision. krasimir requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
It appears that this regressed the formatting of initializer lists in some cases, see comments on https://reviews.llvm.org/D114583. I'll follow-up by adding regression tests for these. This reverts commit c41b3b0fa0f4f70aad8deaf48bcd42a04385066c <https://reviews.llvm.org/rGc41b3b0fa0f4f70aad8deaf48bcd42a04385066c>. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D116000 Files: clang/lib/Format/UnwrappedLineParser.cpp clang/unittests/Format/FormatTest.cpp Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -11867,27 +11867,6 @@ " f(v);\n" "}"); - verifyFormat("void foo() {\n" - " { // asdf\n" - " { int a; }\n" - " }\n" - " {\n" - " { int b; }\n" - " }\n" - "}"); - verifyFormat("namespace n {\n" - "void foo() {\n" - " {\n" - " {\n" - " statement();\n" - " if (false) {\n" - " }\n" - " }\n" - " }\n" - " {}\n" - "}\n" - "} // namespace n"); - // Long lists should be formatted in columns even if they are nested. verifyFormat( "vector<int> x = function({1, 22, 333, 4444, 55555, 666666, 7777777,\n" Index: clang/lib/Format/UnwrappedLineParser.cpp =================================================================== --- clang/lib/Format/UnwrappedLineParser.cpp +++ clang/lib/Format/UnwrappedLineParser.cpp @@ -578,14 +578,17 @@ // BlockKind later if we parse a braced list (where all blocks // inside are by default braced lists), or when we explicitly detect // blocks (for example while parsing lambdas). + // FIXME: Some of these do not apply to JS, e.g. "} {" can never be a + // braced list in JS. ProbablyBracedList = (Style.Language == FormatStyle::LK_JavaScript && NextTok->isOneOf(Keywords.kw_of, Keywords.kw_in, Keywords.kw_as)) || (Style.isCpp() && NextTok->is(tok::l_paren)) || NextTok->isOneOf(tok::comma, tok::period, tok::colon, - tok::r_paren, tok::r_square, tok::ellipsis) || - (NextTok->isOneOf(tok::l_brace, tok::identifier) && + tok::r_paren, tok::r_square, tok::l_brace, + tok::ellipsis) || + (NextTok->is(tok::identifier) && !PrevTok->isOneOf(tok::semi, tok::r_brace, tok::l_brace)) || (NextTok->is(tok::semi) && (!ExpectClassBody || LBraceStack.size() != 1)) || @@ -2861,7 +2864,7 @@ // class Foo implements {bar: number} { } nextToken(); if (FormatTok->is(tok::l_brace)) { - parseBracedList(); + tryToParseBracedList(); continue; } }
Index: clang/unittests/Format/FormatTest.cpp =================================================================== --- clang/unittests/Format/FormatTest.cpp +++ clang/unittests/Format/FormatTest.cpp @@ -11867,27 +11867,6 @@ " f(v);\n" "}"); - verifyFormat("void foo() {\n" - " { // asdf\n" - " { int a; }\n" - " }\n" - " {\n" - " { int b; }\n" - " }\n" - "}"); - verifyFormat("namespace n {\n" - "void foo() {\n" - " {\n" - " {\n" - " statement();\n" - " if (false) {\n" - " }\n" - " }\n" - " }\n" - " {}\n" - "}\n" - "} // namespace n"); - // Long lists should be formatted in columns even if they are nested. verifyFormat( "vector<int> x = function({1, 22, 333, 4444, 55555, 666666, 7777777,\n" Index: clang/lib/Format/UnwrappedLineParser.cpp =================================================================== --- clang/lib/Format/UnwrappedLineParser.cpp +++ clang/lib/Format/UnwrappedLineParser.cpp @@ -578,14 +578,17 @@ // BlockKind later if we parse a braced list (where all blocks // inside are by default braced lists), or when we explicitly detect // blocks (for example while parsing lambdas). + // FIXME: Some of these do not apply to JS, e.g. "} {" can never be a + // braced list in JS. ProbablyBracedList = (Style.Language == FormatStyle::LK_JavaScript && NextTok->isOneOf(Keywords.kw_of, Keywords.kw_in, Keywords.kw_as)) || (Style.isCpp() && NextTok->is(tok::l_paren)) || NextTok->isOneOf(tok::comma, tok::period, tok::colon, - tok::r_paren, tok::r_square, tok::ellipsis) || - (NextTok->isOneOf(tok::l_brace, tok::identifier) && + tok::r_paren, tok::r_square, tok::l_brace, + tok::ellipsis) || + (NextTok->is(tok::identifier) && !PrevTok->isOneOf(tok::semi, tok::r_brace, tok::l_brace)) || (NextTok->is(tok::semi) && (!ExpectClassBody || LBraceStack.size() != 1)) || @@ -2861,7 +2864,7 @@ // class Foo implements {bar: number} { } nextToken(); if (FormatTok->is(tok::l_brace)) { - parseBracedList(); + tryToParseBracedList(); continue; } }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits