<div dir="ltr"><div>Index: include/clang/ASTMatchers/ASTMatchers.h</div><div>===================================================================</div><div>--- include/clang/ASTMatchers/ASTMatchers.h<span class="" style="white-space:pre"> </span>(revision 187216)</div>
<div>+++ include/clang/ASTMatchers/ASTMatchers.h<span class="" style="white-space:pre"> </span>(working copy)</div><div>@@ -1078,6 +1078,18 @@</div><div> Stmt,</div><div> IntegerLiteral> integerLiteral;</div><div> </div>
<div>+/// \brief Matches float literals of all sizes / encodings.</div><div>+///</div><div>+/// Not matching implicit conversions such as</div><div>+/// \code</div><div>+/// float a = 10;</div><div>+/// \endcode</div><div>
+///</div><div>+/// Example matches 1.0, 1.0f, 1.0L, 1e10</div><div>+const internal::VariadicDynCastAllOfMatcher<</div><div>+ Stmt,</div><div>+ FloatingLiteral> floatLiteral;</div><div>+</div><div> /// \brief Matches user defined literal operator call.</div>
<div> ///</div><div> /// Example match: "foo"_suffix</div><div>Index: unittests/ASTMatchers/ASTMatchersTest.cpp</div><div>===================================================================</div><div>--- unittests/ASTMatchers/ASTMatchersTest.cpp<span class="" style="white-space:pre"> </span>(revision 187216)</div>
<div>+++ unittests/ASTMatchers/ASTMatchersTest.cpp<span class="" style="white-space:pre"> </span>(working copy)</div><div>@@ -1853,6 +1853,17 @@</div><div> EXPECT_TRUE(notMatches("int i = 10.0;", HasIntLiteral));</div>
<div> }</div><div> </div><div>+TEST(Matcher, FloatLiterals) {</div><div>+ StatementMatcher HasFloatLiteral = floatLiteral();</div><div>+ EXPECT_TRUE(matches("float i = 10.0;", HasFloatLiteral));</div><div>+ EXPECT_TRUE(matches("float i = 10.0f;", HasFloatLiteral));</div>
<div>+ EXPECT_TRUE(matches("double i = 10.0;", HasFloatLiteral));</div><div>+ EXPECT_TRUE(matches("double i = 10.0L;", HasFloatLiteral));</div><div>+ EXPECT_TRUE(matches("double i = 1e10;", HasFloatLiteral));</div>
<div>+</div><div>+ EXPECT_TRUE(notMatches("float i = 10;", HasFloatLiteral));</div><div>+}</div><div>+</div><div> TEST(Matcher, NullPtrLiteral) {</div><div> EXPECT_TRUE(matches("int* i = nullptr;", nullPtrLiteralExpr()));</div>
<div> }</div><div>Index: lib/ASTMatchers/Dynamic/Registry.cpp</div><div>===================================================================</div><div>--- lib/ASTMatchers/Dynamic/Registry.cpp<span class="" style="white-space:pre"> </span>(revision 187216)</div>
<div>+++ lib/ASTMatchers/Dynamic/Registry.cpp<span class="" style="white-space:pre"> </span>(working copy)</div><div>@@ -252,6 +252,7 @@</div><div> REGISTER_MATCHER(explicitCastExpr);</div><div> REGISTER_MATCHER(expr);</div>
<div> REGISTER_MATCHER(fieldDecl);</div><div>+ REGISTER_MATCHER(floatLiteral);</div><div> REGISTER_MATCHER(forField);</div><div> REGISTER_MATCHER(forRangeStmt);</div><div> REGISTER_MATCHER(forStmt);</div></div>