diff options
author | Owen Pan <owenpiano@gmail.com> | 2024-01-26 18:32:03 -0800 |
---|---|---|
committer | Tom Stellard <tstellar@redhat.com> | 2024-02-06 21:26:58 -0800 |
commit | d5e2f0e64809589071e9d14f5cbdd5716525272a (patch) | |
tree | f7079844482fbcb81a151b5da732e103723de46c /clang | |
parent | 9eda0ecd556cc332a08cf3d4c0a9bce5cd584e3a (diff) | |
download | llvm-d5e2f0e64809589071e9d14f5cbdd5716525272a.zip llvm-d5e2f0e64809589071e9d14f5cbdd5716525272a.tar.gz llvm-d5e2f0e64809589071e9d14f5cbdd5716525272a.tar.bz2 |
[clang-format] Fix a bug in AnnotatingParser::rParenEndsCast() (#79549)
Fixes #78965.
(cherry picked from commit f826f55b2ab68c2515fae751dc2d6ef77f37b172)
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Format/TokenAnnotator.cpp | 2 | ||||
-rw-r--r-- | clang/unittests/Format/TokenAnnotatorTest.cpp | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 3dbcb50..d0c4273 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -2488,6 +2488,8 @@ private: (Tok.Next->Next->is(tok::numeric_constant) || Line.InPPDirective)) { return false; } + if (Line.InPPDirective && Tok.Next->is(tok::minus)) + return false; // Search for unexpected tokens. for (FormatToken *Prev = Tok.Previous; Prev != Tok.MatchingParen; Prev = Prev->Previous) { diff --git a/clang/unittests/Format/TokenAnnotatorTest.cpp b/clang/unittests/Format/TokenAnnotatorTest.cpp index 3dbf504..67678c1 100644 --- a/clang/unittests/Format/TokenAnnotatorTest.cpp +++ b/clang/unittests/Format/TokenAnnotatorTest.cpp @@ -611,6 +611,11 @@ TEST_F(TokenAnnotatorTest, UnderstandsCasts) { EXPECT_TOKEN(Tokens[13], tok::r_paren, TT_Unknown); EXPECT_TOKEN(Tokens[14], tok::star, TT_BinaryOperator); + Tokens = annotate("#define foo(i) ((i) - bar)"); + ASSERT_EQ(Tokens.size(), 14u) << Tokens; + EXPECT_TOKEN(Tokens[9], tok::r_paren, TT_Unknown); + EXPECT_TOKEN(Tokens[10], tok::minus, TT_BinaryOperator); + Tokens = annotate("return (Foo) & 10;"); ASSERT_EQ(Tokens.size(), 8u) << Tokens; EXPECT_TOKEN(Tokens[3], tok::r_paren, TT_Unknown); |