LegalizeAdulthood updated this revision to Diff 45836.
LegalizeAdulthood added a comment.

Run clang-format


http://reviews.llvm.org/D16526

Files:
  docs/LibASTMatchersReference.html
  include/clang/ASTMatchers/ASTMatchers.h
  lib/ASTMatchers/Dynamic/Registry.cpp
  unittests/ASTMatchers/ASTMatchersTest.cpp

Index: unittests/ASTMatchers/ASTMatchersTest.cpp
===================================================================
--- unittests/ASTMatchers/ASTMatchersTest.cpp
+++ unittests/ASTMatchers/ASTMatchersTest.cpp
@@ -1807,6 +1807,11 @@
                           recordDecl(hasName("Y")))))));
 }
 
+TEST(HasRetValue, MatchesReturnExpressions) {
+  EXPECT_TRUE(
+      matches("bool f() { return true; }", returnStmt(hasRetValue(expr()))));
+}
+
 TEST(IsExternC, MatchesExternCFunctionDeclarations) {
   EXPECT_TRUE(matches("extern \"C\" void f() {}", functionDecl(isExternC())));
   EXPECT_TRUE(matches("extern \"C\" { void f() {} }",
Index: lib/ASTMatchers/Dynamic/Registry.cpp
===================================================================
--- lib/ASTMatchers/Dynamic/Registry.cpp
+++ lib/ASTMatchers/Dynamic/Registry.cpp
@@ -235,6 +235,7 @@
   REGISTER_MATCHER(hasQualifier);
   REGISTER_MATCHER(hasRangeInit);
   REGISTER_MATCHER(hasReceiverType);
+  REGISTER_MATCHER(hasRetValue);
   REGISTER_MATCHER(hasRHS);
   REGISTER_MATCHER(hasSelector);
   REGISTER_MATCHER(hasSingleDecl);
Index: include/clang/ASTMatchers/ASTMatchers.h
===================================================================
--- include/clang/ASTMatchers/ASTMatchers.h
+++ include/clang/ASTMatchers/ASTMatchers.h
@@ -2977,6 +2977,14 @@
   return InnerMatcher.matches(Node.getReturnType(), Finder, Builder);
 }
 
+/// \brief Matches the return expression of a return statement.
+///
+AST_MATCHER_P(ReturnStmt, hasRetValue, internal::Matcher<Expr>, InnerMatcher) {
+  const Expr *const RetValue = Node.getRetValue();
+  return RetValue != nullptr &&
+         InnerMatcher.matches(*RetValue, Finder, Builder);
+}
+
 /// \brief Matches extern "C" function declarations.
 ///
 /// Given:
Index: docs/LibASTMatchersReference.html
===================================================================
--- docs/LibASTMatchersReference.html
+++ docs/LibASTMatchersReference.html
@@ -4607,6 +4607,12 @@
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1ReturnStmt.html";>ReturnStmt</a>&gt;</td><td
 class="name" onclick="toggle('hasRetValue0')"><a 
name="hasRetValue0Anchor">hasRetValue</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html";>Expr</a>&gt; 
InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasRetValue0"><pre>Matches the return 
expression of a return statement.
+
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html";>Stmt</a>&gt;</td><td
 class="name" onclick="toggle('alignOfExpr0')"><a 
name="alignOfExpr0Anchor">alignOfExpr</a></td><td>Matcher&lt;<a 
href="http://clang.llvm.org/doxygen/classclang_1_1UnaryExprOrTypeTraitExpr.html";>UnaryExprOrTypeTraitExpr</a>&gt;
  InnerMatcher</td></tr>
 <tr><td colspan="4" class="doc" id="alignOfExpr0"><pre>Same as 
unaryExprOrTypeTraitExpr, but only matching
 alignof.


Index: unittests/ASTMatchers/ASTMatchersTest.cpp
===================================================================
--- unittests/ASTMatchers/ASTMatchersTest.cpp
+++ unittests/ASTMatchers/ASTMatchersTest.cpp
@@ -1807,6 +1807,11 @@
                           recordDecl(hasName("Y")))))));
 }
 
+TEST(HasRetValue, MatchesReturnExpressions) {
+  EXPECT_TRUE(
+      matches("bool f() { return true; }", returnStmt(hasRetValue(expr()))));
+}
+
 TEST(IsExternC, MatchesExternCFunctionDeclarations) {
   EXPECT_TRUE(matches("extern \"C\" void f() {}", functionDecl(isExternC())));
   EXPECT_TRUE(matches("extern \"C\" { void f() {} }",
Index: lib/ASTMatchers/Dynamic/Registry.cpp
===================================================================
--- lib/ASTMatchers/Dynamic/Registry.cpp
+++ lib/ASTMatchers/Dynamic/Registry.cpp
@@ -235,6 +235,7 @@
   REGISTER_MATCHER(hasQualifier);
   REGISTER_MATCHER(hasRangeInit);
   REGISTER_MATCHER(hasReceiverType);
+  REGISTER_MATCHER(hasRetValue);
   REGISTER_MATCHER(hasRHS);
   REGISTER_MATCHER(hasSelector);
   REGISTER_MATCHER(hasSingleDecl);
Index: include/clang/ASTMatchers/ASTMatchers.h
===================================================================
--- include/clang/ASTMatchers/ASTMatchers.h
+++ include/clang/ASTMatchers/ASTMatchers.h
@@ -2977,6 +2977,14 @@
   return InnerMatcher.matches(Node.getReturnType(), Finder, Builder);
 }
 
+/// \brief Matches the return expression of a return statement.
+///
+AST_MATCHER_P(ReturnStmt, hasRetValue, internal::Matcher<Expr>, InnerMatcher) {
+  const Expr *const RetValue = Node.getRetValue();
+  return RetValue != nullptr &&
+         InnerMatcher.matches(*RetValue, Finder, Builder);
+}
+
 /// \brief Matches extern "C" function declarations.
 ///
 /// Given:
Index: docs/LibASTMatchersReference.html
===================================================================
--- docs/LibASTMatchersReference.html
+++ docs/LibASTMatchersReference.html
@@ -4607,6 +4607,12 @@
 </pre></td></tr>
 
 
+<tr><td>Matcher&lt;<a href="http://clang.llvm.org/doxygen/classclang_1_1ReturnStmt.html";>ReturnStmt</a>&gt;</td><td class="name" onclick="toggle('hasRetValue0')"><a name="hasRetValue0Anchor">hasRetValue</a></td><td>Matcher&lt;<a href="http://clang.llvm.org/doxygen/classclang_1_1Expr.html";>Expr</a>&gt; InnerMatcher</td></tr>
+<tr><td colspan="4" class="doc" id="hasRetValue0"><pre>Matches the return expression of a return statement.
+
+</pre></td></tr>
+
+
 <tr><td>Matcher&lt;<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html";>Stmt</a>&gt;</td><td class="name" onclick="toggle('alignOfExpr0')"><a name="alignOfExpr0Anchor">alignOfExpr</a></td><td>Matcher&lt;<a href="http://clang.llvm.org/doxygen/classclang_1_1UnaryExprOrTypeTraitExpr.html";>UnaryExprOrTypeTraitExpr</a>&gt;  InnerMatcher</td></tr>
 <tr><td colspan="4" class="doc" id="alignOfExpr0"><pre>Same as unaryExprOrTypeTraitExpr, but only matching
 alignof.
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to