https://github.com/earnol updated https://github.com/llvm/llvm-project/pull/134398
>From b3558deb637c186f43f807f3c5c329ee6d7118c0 Mon Sep 17 00:00:00 2001 From: Vladislav Aranov <vladislav.ara...@ericsson.com> Date: Fri, 4 Apr 2025 17:18:34 +0200 Subject: [PATCH] [clang][test] Improve unit tests for Fixed point AST matchers. We have AST matchers for fixed point float numbers since commits 789215dc0db174c9fdd273436fdd60d8289a9fc0 and ff9120636e9c890b4db735d252d16b92091dde55. However in those commits the unit tests were not added. Amending the test suit. --- .../ASTMatchers/ASTMatchersNodeTest.cpp | 43 +++++++++++++++++++ clang/unittests/ASTMatchers/ASTMatchersTest.h | 13 ++++++ 2 files changed, 56 insertions(+) diff --git a/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp index 680e21840b7d3..60d0bbf42cf23 100644 --- a/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp +++ b/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp @@ -1017,6 +1017,49 @@ TEST_P(ASTMatchersTest, FloatLiteral) { notMatches("double i = 5.0;", floatLiteral(equals(llvm::APFloat(6.0))))); } +TEST_P(ASTMatchersTest, FixedPointLiterals) { + StatementMatcher HasFixedPointLiteral = fixedPointLiteral(); + EXPECT_TRUE(matchesWithFixedpoint("_Fract i = 0.25r;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Fract i = 0.25hr;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Fract i = 0.25uhr;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Fract i = 0.25ur;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Fract i = 0.25lr;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Fract i = 0.25ulr;", HasFixedPointLiteral)); + EXPECT_TRUE(matchesWithFixedpoint("_Accum i = 1.25k;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Accum i = 1.25hk;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Accum i = 1.25uhk;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Accum i = 1.25uk;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Accum i = 1.25lk;", HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Accum i = 1.25ulk;", HasFixedPointLiteral)); + EXPECT_TRUE(matchesWithFixedpoint("_Accum decexp1 = 1.575e1k;", + HasFixedPointLiteral)); + EXPECT_TRUE( + matchesWithFixedpoint("_Accum hex = 0x1.25fp2k;", HasFixedPointLiteral)); + EXPECT_TRUE(matchesWithFixedpoint("_Sat long _Fract i = 0.25r;", + HasFixedPointLiteral)); + EXPECT_TRUE(matchesWithFixedpoint("_Sat short _Accum i = 256.0k;", + HasFixedPointLiteral)); + + EXPECT_TRUE( + notMatchesWithFixedpoint("short _Accum i = 2u;", HasFixedPointLiteral)); + EXPECT_TRUE( + notMatchesWithFixedpoint("short _Accum i = 2;", HasFixedPointLiteral)); + EXPECT_TRUE( + notMatchesWithFixedpoint("_Accum i = 1.25;", HasFixedPointLiteral)); + EXPECT_TRUE(notMatchesWithFixedpoint("_Accum i = 1.25 * 4.5i;", + HasFixedPointLiteral)); +} + TEST_P(ASTMatchersTest, CXXNullPtrLiteralExpr) { if (!GetParam().isCXX11OrLater()) { return; diff --git a/clang/unittests/ASTMatchers/ASTMatchersTest.h b/clang/unittests/ASTMatchers/ASTMatchersTest.h index ad2f5f355621c..d74019485c492 100644 --- a/clang/unittests/ASTMatchers/ASTMatchersTest.h +++ b/clang/unittests/ASTMatchers/ASTMatchersTest.h @@ -289,6 +289,19 @@ testing::AssertionResult notMatchesWithOpenMP51(const Twine &Code, {"-fopenmp=libomp", "-fopenmp-version=51"}); } +template <typename T> +testing::AssertionResult matchesWithFixedpoint(const std::string &Code, + const T &AMatcher) { + return matchesConditionally(Code, AMatcher, true, "-ffixed-point", + FileContentMappings(), "input.c"); +} +template <typename T> +testing::AssertionResult notMatchesWithFixedpoint(const std::string &Code, + const T &AMatcher) { + return matchesConditionally(Code, AMatcher, false, "-ffixed-point", + FileContentMappings(), "input.c"); +} + template <typename T> testing::AssertionResult matchAndVerifyResultConditionally( const Twine &Code, const T &AMatcher, _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits