<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>