diff options
author | Owen Pan <owenpiano@gmail.com> | 2023-01-23 15:30:38 -0800 |
---|---|---|
committer | Owen Pan <owenpiano@gmail.com> | 2023-01-24 18:40:14 -0800 |
commit | 56313f65cce71366fdc659d1d08e0eeaa5d40b63 (patch) | |
tree | 00d4c59696150b5e81c22a5af8c91e1771ebcd38 | |
parent | 17c05a44d9f0ab08342c7310bd0e22114e932882 (diff) | |
download | llvm-56313f65cce71366fdc659d1d08e0eeaa5d40b63.tar.gz |
[clang-format] Put peekNextToken(/*SkipComment=*/true) to good use
To prevent potential bugs in situations where we want to peek the next
non-comment token.
Differential Revision: https://reviews.llvm.org/D142412
-rw-r--r-- | clang/lib/Format/UnwrappedLineParser.cpp | 6 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTest.cpp | 20 |
2 files changed, 24 insertions, 2 deletions
diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index 6d5b92c61c78..3e58b6f90559 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -1906,7 +1906,9 @@ void UnwrappedLineParser::parseStructuralElement( // declaration. if (!IsTopLevel || !Style.isCpp() || !Previous || eof()) break; - if (isC78ParameterDecl(FormatTok, Tokens->peekNextToken(), Previous)) { + if (isC78ParameterDecl(FormatTok, + Tokens->peekNextToken(/*SkipComment=*/true), + Previous)) { addUnwrappedLine(); return; } @@ -2376,7 +2378,7 @@ bool UnwrappedLineParser::tryToParseLambdaIntroducer() { if (FormatTok->is(tok::l_square)) return false; if (FormatTok->is(tok::r_square)) { - const FormatToken *Next = Tokens->peekNextToken(); + const FormatToken *Next = Tokens->peekNextToken(/*SkipComment=*/true); if (Next->is(tok::greater)) return false; } diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index b7d0a398dd43..6530e2005e4c 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -3444,6 +3444,13 @@ TEST_F(FormatTest, UnderstandsAccessSpecifiers) { "\n" "private:\n" " int c;\n" + "};\n" + "class B {\n" + "public:\n" + " std::unique_ptr<int *[] /* okay */> b() { return nullptr; }\n" + "\n" + "private:\n" + " int c;\n" "};"); } @@ -9637,6 +9644,19 @@ TEST_F(FormatTest, ReturnTypeBreakingStyle) { " return a;\n" "}", Style); + verifyFormat("byte *\n" + "f(a)\n" + "byte /* K&R C */ a[];\n" + "{\n" + " return a;\n" + "}\n" + "byte *\n" + "g(p)\n" + "byte /* K&R C */ *p;\n" + "{\n" + " return p;\n" + "}", + Style); verifyFormat("bool f(int a, int) override;\n" "Bar g(int a, Bar) final;\n" "Bar h(a, Bar) final;", |