Re-applied in r222765. /me goes watching the bots...<br><br><div class="gmail_quote">On Mon Nov 24 2014 at 6:48:07 PM Aaron Ballman <<a href="mailto:aaron@aaronballman.com">aaron@aaronballman.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: aaronballman<br>
Date: Mon Nov 24 11:39:44 2014<br>
New Revision: 222667<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=222667&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=222667&view=rev</a><br>
Log:<br>
Reverting r222646; the tests do not pass on Windows. Also reverts r222664, which was required for r222646 to compile with Visual Studio 2012.<br>
<br>
Modified:<br>
    cfe/trunk/docs/<u></u>LibASTMatchersReference.html<br>
    cfe/trunk/include/clang/<u></u>ASTMatchers/ASTMatchers.h<br>
    cfe/trunk/include/clang/<u></u>Tooling/Tooling.h<br>
    cfe/trunk/lib/ASTMatchers/<u></u>Dynamic/Registry.cpp<br>
    cfe/trunk/lib/Tooling/Tooling.<u></u>cpp<br>
    cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.<u></u>cpp<br>
    cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.h<br>
<br>
Modified: cfe/trunk/docs/<u></u>LibASTMatchersReference.html<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LibASTMatchersReference.html?rev=222667&r1=222666&r2=222667&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/docs/<u></u>LibASTMatchersReference.html?<u></u>rev=222667&r1=222666&r2=<u></u>222667&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/docs/<u></u>LibASTMatchersReference.html (original)<br>
+++ cfe/trunk/docs/<u></u>LibASTMatchersReference.html Mon Nov 24 11:39:44 2014<br>
@@ -307,16 +307,6 @@ Example matches X, Z<br>
 </pre></td></tr><br>
<br>
<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;</td><td class="name" onclick="toggle('typedefDecl0'<u></u>)"><a name="typedefDecl0Anchor"><u></u>typedefDecl</a></td><td><u></u>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypedefDecl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_<u></u>1TypedefDecl.html</a>"><u></u>TypedefDecl</a>&gt;...</td></<u></u>tr><br>
-<tr><td colspan="4" class="doc" id="typedefDecl0"><pre>Matches typedef declarations.<br>
-<br>
-Given<br>
-  typedef int X;<br>
-typedefDecl()<br>
-  matches "typedef int X"<br>
-</pre></td></tr><br>
-<br>
-<br>
 <tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;</td><td class="name" onclick="toggle('<u></u>unresolvedUsingValueDecl0')"><<u></u>a name="<u></u>unresolvedUsingValueDecl0Ancho<u></u>r">unresolvedUsingValueDecl</<u></u>a></td><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1UnresolvedUsingValueDecl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_<u></u>1UnresolvedUsingValueDecl.html</a><u></u>">UnresolvedUsingValueDecl</a><u></u>&gt;...</td></tr><br>
 <tr><td colspan="4" class="doc" id="unresolvedUsingValueDecl0"<u></u>><pre>Matches unresolved using value declarations.<br>
<br>
@@ -349,15 +339,6 @@ usingDirectiveDecl()<br>
   matches using namespace X </pre></td></tr><br>
<br>
<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;</td><td class="name" onclick="toggle('valueDecl0')"<u></u>><a name="valueDecl0Anchor"><u></u>valueDecl</a></td><td>Matcher&<u></u>lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1ValueDecl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_<u></u>1ValueDecl.html</a>">ValueDecl</a><u></u>&gt;...</td></tr><br>
-<tr><td colspan="4" class="doc" id="valueDecl0"><pre>Matches any value declaration.<br>
-<br>
-Example matches A, B, C and F<br>
-  enum X { A, B, C };<br>
-  void F();<br>
-</pre></td></tr><br>
-<br>
-<br>
 <tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;</td><td class="name" onclick="toggle('varDecl0')"><<u></u>a name="varDecl0Anchor">varDecl<<u></u>/a></td><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1VarDecl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1VarDecl.<u></u>html</a>">VarDecl</a>&gt;...</td><<u></u>/tr><br>
 <tr><td colspan="4" class="doc" id="varDecl0"><pre>Matches variable declarations.<br>
<br>
@@ -1673,48 +1654,6 @@ f.<br>
 </pre></td></tr><br>
<br>
<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;</td><td class="name" onclick="toggle('<u></u>isExpansionInFileMatching0')"><u></u><a name="<u></u>isExpansionInFileMatching0Anch<u></u>or">isExpansionInFileMatching<<u></u>/a></td><td>std::string RegExp</td></tr><br>
-<tr><td colspan="4" class="doc" id="<u></u>isExpansionInFileMatching0"><<u></u>pre>Matches AST nodes that were expanded within files whose name is<br>
-partially matching a given regex.<br>
-<br>
-Example matches Y but not X<br>
-    (matcher = recordDecl(<u></u>isExpansionInFileMatching("<u></u>AST.*"))<br>
-  #include "ASTMatcher.h"<br>
-  class X {};<br>
-ASTMatcher.h:<br>
-  class Y {};<br>
-<br>
-Usable as: Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;<br>
-</pre></td></tr><br>
-<br>
-<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;</td><td class="name" onclick="toggle('<u></u>isExpansionInMainFile0')"><a name="<u></u>isExpansionInMainFile0Anchor"><u></u>isExpansionInMainFile</a></td><u></u><td></td></tr><br>
-<tr><td colspan="4" class="doc" id="isExpansionInMainFile0"><<u></u>pre>Matches AST nodes that were expanded within the main-file.<br>
-<br>
-Example matches X but not Y (matcher = recordDecl(<u></u>isExpansionInMainFile())<br>
-  #include &lt;Y.h&gt;<br>
-  class X {};<br>
-Y.h:<br>
-  class Y {};<br>
-<br>
-Usable as: Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;<br>
-</pre></td></tr><br>
-<br>
-<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;</td><td class="name" onclick="toggle('<u></u>isExpansionInSystemHeader0')"><u></u><a name="<u></u>isExpansionInSystemHeader0Anch<u></u>or">isExpansionInSystemHeader<<u></u>/a></td><td></td></tr><br>
-<tr><td colspan="4" class="doc" id="<u></u>isExpansionInSystemHeader0"><<u></u>pre>Matches AST nodes that were expanded within system-header-files.<br>
-<br>
-Example matches Y but not X<br>
-    (matcher = recordDecl(<u></u>isExpansionInSystemHeader())<br>
-  #include &lt;SystemHeader.h&gt;<br>
-  class X {};<br>
-SystemHeader.h:<br>
-  class Y {};<br>
-<br>
-Usable as: Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;<br>
-</pre></td></tr><br>
-<br>
-<br>
 <tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;</td><td class="name" onclick="toggle('isImplicit0')<u></u>"><a name="isImplicit0Anchor"><u></u>isImplicit</a></td><td></td></<u></u>tr><br>
 <tr><td colspan="4" class="doc" id="isImplicit0"><pre>Matches a declaration that has been implicitly added<br>
 by the compiler (eg. implicit defaultcopy constructors).<br>
@@ -1919,7 +1858,7 @@ memberExpr(isArrow())<br>
 </pre></td></tr><br>
<br>
<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1NamedDecl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_<u></u>1NamedDecl.html</a>">NamedDecl</a><u></u>&gt;</td><td class="name" onclick="toggle('hasName0')"><<u></u>a name="hasName0Anchor">hasName<<u></u>/a></td><td>std::string  Name</td></tr><br>
+<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1NamedDecl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_<u></u>1NamedDecl.html</a>">NamedDecl</a><u></u>&gt;</td><td class="name" onclick="toggle('hasName0')"><<u></u>a name="hasName0Anchor">hasName<<u></u>/a></td><td>std::string Name</td></tr><br>
 <tr><td colspan="4" class="doc" id="hasName0"><pre>Matches NamedDecl nodes that have the specified name.<br>
<br>
 Supports specifying enclosing namespaces or classes by prefixing the name<br>
@@ -2051,48 +1990,6 @@ and reference to that variable declarati<br>
 </pre></td></tr><br>
<br>
<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;</td><td class="name" onclick="toggle('<u></u>isExpansionInFileMatching1')"><u></u><a name="<u></u>isExpansionInFileMatching1Anch<u></u>or">isExpansionInFileMatching<<u></u>/a></td><td>std::string RegExp</td></tr><br>
-<tr><td colspan="4" class="doc" id="<u></u>isExpansionInFileMatching1"><<u></u>pre>Matches AST nodes that were expanded within files whose name is<br>
-partially matching a given regex.<br>
-<br>
-Example matches Y but not X<br>
-    (matcher = recordDecl(<u></u>isExpansionInFileMatching("<u></u>AST.*"))<br>
-  #include "ASTMatcher.h"<br>
-  class X {};<br>
-ASTMatcher.h:<br>
-  class Y {};<br>
-<br>
-Usable as: Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;<br>
-</pre></td></tr><br>
-<br>
-<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;</td><td class="name" onclick="toggle('<u></u>isExpansionInMainFile1')"><a name="<u></u>isExpansionInMainFile1Anchor"><u></u>isExpansionInMainFile</a></td><u></u><td></td></tr><br>
-<tr><td colspan="4" class="doc" id="isExpansionInMainFile1"><<u></u>pre>Matches AST nodes that were expanded within the main-file.<br>
-<br>
-Example matches X but not Y (matcher = recordDecl(<u></u>isExpansionInMainFile())<br>
-  #include &lt;Y.h&gt;<br>
-  class X {};<br>
-Y.h:<br>
-  class Y {};<br>
-<br>
-Usable as: Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;<br>
-</pre></td></tr><br>
-<br>
-<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;</td><td class="name" onclick="toggle('<u></u>isExpansionInSystemHeader1')"><u></u><a name="<u></u>isExpansionInSystemHeader1Anch<u></u>or">isExpansionInSystemHeader<<u></u>/a></td><td></td></tr><br>
-<tr><td colspan="4" class="doc" id="<u></u>isExpansionInSystemHeader1"><<u></u>pre>Matches AST nodes that were expanded within system-header-files.<br>
-<br>
-Example matches Y but not X<br>
-    (matcher = recordDecl(<u></u>isExpansionInSystemHeader())<br>
-  #include &lt;SystemHeader.h&gt;<br>
-  class X {};<br>
-SystemHeader.h:<br>
-  class Y {};<br>
-<br>
-Usable as: Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;<br>
-</pre></td></tr><br>
-<br>
-<br>
 <tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;</td><td class="name" onclick="toggle('<u></u>isInTemplateInstantiation0')"><u></u><a name="<u></u>isInTemplateInstantiation0Anch<u></u>or">isInTemplateInstantiation<<u></u>/a></td><td></td></tr><br>
 <tr><td colspan="4" class="doc" id="<u></u>isInTemplateInstantiation0"><<u></u>pre>Matches statements inside of a template instantiation.<br>
<br>
@@ -2164,48 +2061,6 @@ classTemplateSpecializationDec<u></u>l(template<br>
 </pre></td></tr><br>
<br>
<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;</td><td class="name" onclick="toggle('<u></u>isExpansionInFileMatching2')"><u></u><a name="<u></u>isExpansionInFileMatching2Anch<u></u>or">isExpansionInFileMatching<<u></u>/a></td><td>std::string RegExp</td></tr><br>
-<tr><td colspan="4" class="doc" id="<u></u>isExpansionInFileMatching2"><<u></u>pre>Matches AST nodes that were expanded within files whose name is<br>
-partially matching a given regex.<br>
-<br>
-Example matches Y but not X<br>
-    (matcher = recordDecl(<u></u>isExpansionInFileMatching("<u></u>AST.*"))<br>
-  #include "ASTMatcher.h"<br>
-  class X {};<br>
-ASTMatcher.h:<br>
-  class Y {};<br>
-<br>
-Usable as: Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;<br>
-</pre></td></tr><br>
-<br>
-<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;</td><td class="name" onclick="toggle('<u></u>isExpansionInMainFile2')"><a name="<u></u>isExpansionInMainFile2Anchor"><u></u>isExpansionInMainFile</a></td><u></u><td></td></tr><br>
-<tr><td colspan="4" class="doc" id="isExpansionInMainFile2"><<u></u>pre>Matches AST nodes that were expanded within the main-file.<br>
-<br>
-Example matches X but not Y (matcher = recordDecl(<u></u>isExpansionInMainFile())<br>
-  #include &lt;Y.h&gt;<br>
-  class X {};<br>
-Y.h:<br>
-  class Y {};<br>
-<br>
-Usable as: Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;<br>
-</pre></td></tr><br>
-<br>
-<br>
-<tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;</td><td class="name" onclick="toggle('<u></u>isExpansionInSystemHeader2')"><u></u><a name="<u></u>isExpansionInSystemHeader2Anch<u></u>or">isExpansionInSystemHeader<<u></u>/a></td><td></td></tr><br>
-<tr><td colspan="4" class="doc" id="<u></u>isExpansionInSystemHeader2"><<u></u>pre>Matches AST nodes that were expanded within system-header-files.<br>
-<br>
-Example matches Y but not X<br>
-    (matcher = recordDecl(<u></u>isExpansionInSystemHeader())<br>
-  #include &lt;SystemHeader.h&gt;<br>
-  class X {};<br>
-SystemHeader.h:<br>
-  class Y {};<br>
-<br>
-Usable as: Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Decl.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Decl.<u></u>html</a>">Decl</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Stmt.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Stmt.<u></u>html</a>">Stmt</a>&gt;, Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1TypeLoc.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1TypeLoc.<u></u>html</a>">TypeLoc</a>&gt;<br>
-</pre></td></tr><br>
-<br>
-<br>
 <tr><td>Matcher&lt<a href="<a href="http://clang.llvm.org/doxygen/classclang_1_1Type.html" target="_blank">http://clang.llvm.org/<u></u>doxygen/classclang_1_1Type.<u></u>html</a>">Type</a>&gt;</td><td class="name" onclick="toggle('<u></u>equalsBoundNode2')"><a name="equalsBoundNode2Anchor"><u></u>equalsBoundNode</a></td><td><u></u>std::string ID</td></tr><br>
 <tr><td colspan="4" class="doc" id="equalsBoundNode2"><pre><u></u>Matches if a node equals a previously bound node.<br>
<br>
<br>
Modified: cfe/trunk/include/clang/<u></u>ASTMatchers/ASTMatchers.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h?rev=222667&r1=222666&r2=222667&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/include/<u></u>clang/ASTMatchers/ASTMatchers.<u></u>h?rev=222667&r1=222666&r2=<u></u>222667&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/include/clang/<u></u>ASTMatchers/ASTMatchers.h (original)<br>
+++ cfe/trunk/include/clang/<u></u>ASTMatchers/ASTMatchers.h Mon Nov 24 11:39:44 2014<br>
@@ -47,7 +47,6 @@<br>
<br>
 #include "clang/AST/DeclFriend.h"<br>
 #include "clang/AST/DeclTemplate.h"<br>
-#include "clang/AST/ASTContext.h"<br>
 #include "clang/ASTMatchers/<u></u>ASTMatchersInternal.h"<br>
 #include "clang/ASTMatchers/<u></u>ASTMatchersMacros.h"<br>
 #include "llvm/ADT/Twine.h"<br>
@@ -143,97 +142,6 @@ typedef internal::Matcher<<u></u>NestedNameSpec<br>
 /// Usable as: Any Matcher<br>
 inline internal::TrueMatcher anything() { return internal::TrueMatcher(); }<br>
<br>
-/// \brief Matches typedef declarations.<br>
-///<br>
-/// Given<br>
-/// \code<br>
-///   typedef int X;<br>
-/// \endcode<br>
-/// typedefDecl()<br>
-///   matches "typedef int X"<br>
-const internal::<u></u>VariadicDynCastAllOfMatcher<<u></u>Decl, TypedefDecl> typedefDecl;<br>
-<br>
-/// \brief Matches AST nodes that were expanded within the main-file.<br>
-///<br>
-/// Example matches X but not Y (matcher = recordDecl(<u></u>isExpansionInMainFile())<br>
-/// \code<br>
-///   #include <Y.h><br>
-///   class X {};<br>
-/// \endcode<br>
-/// Y.h:<br>
-/// \code<br>
-///   class Y {};<br>
-/// \endcode<br>
-///<br>
-/// Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc><br>
-AST_POLYMORPHIC_MATCHER(<u></u>isExpansionInMainFile,<br>
-                        AST_POLYMORPHIC_SUPPORTED_<u></u>TYPES_3(Decl, Stmt,<br>
-                                                          TypeLoc)) {<br>
-  auto &SourceManager = Finder->getASTContext().<u></u>getSourceManager();<br>
-  return SourceManager.isInMainFile(<br>
-      SourceManager.getExpansionLoc(<u></u>Node.getLocStart()));<br>
-}<br>
-<br>
-/// \brief Matches AST nodes that were expanded within system-header-files.<br>
-///<br>
-/// Example matches Y but not X<br>
-///     (matcher = recordDecl(<u></u>isExpansionInSystemHeader())<br>
-/// \code<br>
-///   #include <SystemHeader.h><br>
-///   class X {};<br>
-/// \endcode<br>
-/// SystemHeader.h:<br>
-/// \code<br>
-///   class Y {};<br>
-/// \endcode<br>
-///<br>
-/// Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc><br>
-AST_POLYMORPHIC_MATCHER(<u></u>isExpansionInSystemHeader,<br>
-                        AST_POLYMORPHIC_SUPPORTED_<u></u>TYPES_3(Decl, Stmt,<br>
-                                                          TypeLoc)) {<br>
-  auto &SourceManager = Finder->getASTContext().<u></u>getSourceManager();<br>
-  auto ExpansionLoc = SourceManager.getExpansionLoc(<u></u>Node.getLocStart());<br>
-  if (ExpansionLoc.isInvalid()) {<br>
-    return false;<br>
-  }<br>
-  return SourceManager.<u></u>isInSystemHeader(ExpansionLoc)<u></u>;<br>
-}<br>
-<br>
-/// \brief Matches AST nodes that were expanded within files whose name is<br>
-/// partially matching a given regex.<br>
-///<br>
-/// Example matches Y but not X<br>
-///     (matcher = recordDecl(<u></u>isExpansionInFileMatching("<u></u>AST.*"))<br>
-/// \code<br>
-///   #include "ASTMatcher.h"<br>
-///   class X {};<br>
-/// \endcode<br>
-/// ASTMatcher.h:<br>
-/// \code<br>
-///   class Y {};<br>
-/// \endcode<br>
-///<br>
-/// Usable as: Matcher<Decl>, Matcher<Stmt>, Matcher<TypeLoc><br>
-AST_POLYMORPHIC_MATCHER_P(<u></u>isExpansionInFileMatching,<br>
-                          AST_POLYMORPHIC_SUPPORTED_<u></u>TYPES_3(Decl, Stmt,<br>
-                                                            TypeLoc),<br>
-                          std::string, RegExp) {<br>
-  auto &SourceManager = Finder->getASTContext().<u></u>getSourceManager();<br>
-  auto ExpansionLoc = SourceManager.getExpansionLoc(<u></u>Node.getLocStart());<br>
-  if (ExpansionLoc.isInvalid()) {<br>
-    return false;<br>
-  }<br>
-  auto FileEntry =<br>
-      SourceManager.<u></u>getFileEntryForID(<u></u>SourceManager.getFileID(<u></u>ExpansionLoc));<br>
-  if (!FileEntry) {<br>
-    return false;<br>
-  }<br>
-<br>
-  auto Filename = FileEntry->getName();<br>
-  llvm::Regex RE(RegExp);<br>
-  return RE.match(Filename);<br>
-}<br>
-<br>
 /// \brief Matches declarations.<br>
 ///<br>
 /// Examples matches \c X, \c C, and the friend declaration inside \c C;<br>
<br>
Modified: cfe/trunk/include/clang/<u></u>Tooling/Tooling.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/Tooling.h?rev=222667&r1=222666&r2=222667&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/include/<u></u>clang/Tooling/Tooling.h?rev=<u></u>222667&r1=222666&r2=222667&<u></u>view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/include/clang/<u></u>Tooling/Tooling.h (original)<br>
+++ cfe/trunk/include/clang/<u></u>Tooling/Tooling.h Mon Nov 24 11:39:44 2014<br>
@@ -143,10 +143,6 @@ inline std::unique_ptr<<u></u>FrontendActionFac<br>
 bool runToolOnCode(clang::<u></u>FrontendAction *ToolAction, const Twine &Code,<br>
                    const Twine &FileName = "input.cc");<br>
<br>
-/// The first part of the pair is the filename, the second part the<br>
-/// file-content.<br>
-typedef std::vector<std::pair<std::<u></u>string, std::string>> FileContentMappings;<br>
-<br>
 /// \brief Runs (and deletes) the tool on 'Code' with the -fsyntax-only flag and<br>
 ///        with additional other flags.<br>
 ///<br>
@@ -156,10 +152,9 @@ typedef std::vector<std::pair<std::<u></u>strin<br>
 /// \param FileName The file name which 'Code' will be mapped as.<br>
 ///<br>
 /// \return - True if 'ToolAction' was successfully executed.<br>
-bool runToolOnCodeWithArgs(<br>
-    clang::FrontendAction *ToolAction, const Twine &Code,<br>
-    const std::vector<std::string> &Args, const Twine &FileName = "input.cc",<br>
-    const FileContentMappings &VirtualMappedFiles = FileContentMappings());<br>
+bool runToolOnCodeWithArgs(clang::<u></u>FrontendAction *ToolAction, const Twine &Code,<br>
+                           const std::vector<std::string> &Args,<br>
+                           const Twine &FileName = "input.cc");<br>
<br>
 /// \brief Builds an AST for 'Code'.<br>
 ///<br>
<br>
Modified: cfe/trunk/lib/ASTMatchers/<u></u>Dynamic/Registry.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ASTMatchers/Dynamic/Registry.cpp?rev=222667&r1=222666&r2=222667&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/<u></u>ASTMatchers/Dynamic/Registry.<u></u>cpp?rev=222667&r1=222666&r2=<u></u>222667&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/lib/ASTMatchers/<u></u>Dynamic/Registry.cpp (original)<br>
+++ cfe/trunk/lib/ASTMatchers/<u></u>Dynamic/Registry.cpp Mon Nov 24 11:39:44 2014<br>
@@ -242,10 +242,7 @@ RegistryMaps::RegistryMaps() {<br>
   REGISTER_MATCHER(isExpr);<br>
   REGISTER_MATCHER(isExternC);<br>
   REGISTER_MATCHER(isImplicit);<br>
-  REGISTER_MATCHER(<u></u>isExpansionInFileMatching);<br>
-  REGISTER_MATCHER(<u></u>isExpansionInMainFile);<br>
   REGISTER_MATCHER(<u></u>isInstantiated);<br>
-  REGISTER_MATCHER(<u></u>isExpansionInSystemHeader);<br>
   REGISTER_MATCHER(isInteger);<br>
   REGISTER_MATCHER(isIntegral);<br>
   REGISTER_MATCHER(<u></u>isInTemplateInstantiation);<br>
@@ -317,7 +314,6 @@ RegistryMaps::RegistryMaps() {<br>
   REGISTER_MATCHER(to);<br>
   REGISTER_MATCHER(tryStmt);<br>
   REGISTER_MATCHER(type);<br>
-  REGISTER_MATCHER(typedefDecl);<br>
   REGISTER_MATCHER(typedefType);<br>
   REGISTER_MATCHER(typeLoc);<br>
   REGISTER_MATCHER(<u></u>unaryExprOrTypeTraitExpr);<br>
<br>
Modified: cfe/trunk/lib/Tooling/Tooling.<u></u>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Tooling.cpp?rev=222667&r1=222666&r2=222667&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/lib/Tooling/<u></u>Tooling.cpp?rev=222667&r1=<u></u>222666&r2=222667&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/lib/Tooling/Tooling.<u></u>cpp (original)<br>
+++ cfe/trunk/lib/Tooling/Tooling.<u></u>cpp Mon Nov 24 11:39:44 2014<br>
@@ -123,25 +123,17 @@ getSyntaxOnlyToolArgs(const std::vector<<br>
<br>
 bool runToolOnCodeWithArgs(clang::<u></u>FrontendAction *ToolAction, const Twine &Code,<br>
                            const std::vector<std::string> &Args,<br>
-                           const Twine &FileName,<br>
-                           const FileContentMappings &VirtualMappedFiles) {<br>
-<br>
+                           const Twine &FileName) {<br>
   SmallString<16> FileNameStorage;<br>
   StringRef FileNameRef = FileName.<u></u>toNullTerminatedStringRef(<u></u>FileNameStorage);<br>
   llvm::IntrusiveRefCntPtr<<u></u>FileManager> Files(<br>
       new FileManager(FileSystemOptions(<u></u>)));<br>
-  ToolInvocation Invocation(<u></u>getSyntaxOnlyToolArgs(Args, FileNameRef),<br>
-                            ToolAction, Files.get());<br>
+  ToolInvocation Invocation(<u></u>getSyntaxOnlyToolArgs(Args, FileNameRef), ToolAction,<br>
+                            Files.get());<br>
<br>
   SmallString<1024> CodeStorage;<br>
   Invocation.mapVirtualFile(<u></u>FileNameRef,<br>
                             Code.<u></u>toNullTerminatedStringRef(<u></u>CodeStorage));<br>
-<br>
-  for (auto &FilenameWithContent : VirtualMappedFiles) {<br>
-    Invocation.mapVirtualFile(<u></u>FilenameWithContent.first,<br>
-                              FilenameWithContent.second);<br>
-  }<br>
-<br>
   return Invocation.run();<br>
 }<br>
<br>
<br>
Modified: cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.<u></u>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp?rev=222667&r1=222666&r2=222667&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.<u></u>cpp?rev=222667&r1=222666&r2=<u></u>222667&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.<u></u>cpp (original)<br>
+++ cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.<u></u>cpp Mon Nov 24 11:39:44 2014<br>
@@ -4625,53 +4625,5 @@ TEST(EqualsBoundNodeMatcher, UnlessDesce<br>
           .bind("data")));<br>
 }<br>
<br>
-TEST(TypeDefDeclMatcher, Match) {<br>
-  EXPECT_TRUE(matches("typedef int typedefDeclTest;",<br>
-                      typedefDecl(hasName("<u></u>typedefDeclTest"))));<br>
-}<br>
-<br>
-TEST(Matcher, IsExpansionInMainFileMatcher) {<br>
-  EXPECT_TRUE(matches("class X {};",<br>
-                      recordDecl(hasName("X"), isExpansionInMainFile())));<br>
-  EXPECT_TRUE(notMatches("", recordDecl(<u></u>isExpansionInMainFile())));<br>
-  FileContentMappings M;<br>
-  M.push_back(std::make_pair("/<u></u>other", "class X {};"));<br>
-  EXPECT_TRUE(<u></u>matchesConditionally("#include <other>\n",<br>
-                                   recordDecl(<u></u>isExpansionInMainFile()), false,<br>
-                                   "-isystem/", M));<br>
-}<br>
-<br>
-TEST(Matcher, IsExpansionInSystemHeader) {<br>
-  FileContentMappings M;<br>
-  M.push_back(std::make_pair("/<u></u>other", "class X {};"));<br>
-  EXPECT_TRUE(<u></u>matchesConditionally(<br>
-      "#include \"other\"\n", recordDecl(<u></u>isExpansionInSystemHeader()), true,<br>
-      "-isystem/", M));<br>
-  EXPECT_TRUE(<u></u>matchesConditionally("#include \"other\"\n",<br>
-                                   recordDecl(<u></u>isExpansionInSystemHeader()),<br>
-                                   false, "-I/", M));<br>
-  EXPECT_TRUE(notMatches("class X {};",<br>
-                         recordDecl(<u></u>isExpansionInSystemHeader())))<u></u>;<br>
-  EXPECT_TRUE(notMatches("", recordDecl(<u></u>isExpansionInSystemHeader())))<u></u>;<br>
-}<br>
-<br>
-TEST(Matcher, IsExpansionInFileMatching) {<br>
-  FileContentMappings M;<br>
-  M.push_back(std::make_pair("/<u></u>foo", "class A {};"));<br>
-  M.push_back(std::make_pair("/<u></u>bar", "class B {};"));<br>
-  EXPECT_TRUE(<u></u>matchesConditionally(<br>
-      "#include <foo>\n"<br>
-      "#include <bar>\n"<br>
-      "class X {};",<br>
-      recordDecl(<u></u>isExpansionInFileMatching("b.*<u></u>"), hasName("B")), true,<br>
-      "-isystem/", M));<br>
-  EXPECT_TRUE(<u></u>matchesConditionally(<br>
-      "#include <foo>\n"<br>
-      "#include <bar>\n"<br>
-      "class X {};",<br>
-      recordDecl(<u></u>isExpansionInFileMatching("f.*<u></u>"), hasName("X")), false,<br>
-      "-isystem/", M));<br>
-}<br>
-<br>
 } // end namespace ast_matchers<br>
 } // end namespace clang<br>
<br>
Modified: cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.h?rev=222667&r1=222666&r2=222667&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.h?<u></u>rev=222667&r1=222666&r2=<u></u>222667&view=diff</a><br>
==============================<u></u>==============================<u></u>==================<br>
--- cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.h (original)<br>
+++ cfe/trunk/unittests/<u></u>ASTMatchers/ASTMatchersTest.h Mon Nov 24 11:39:44 2014<br>
@@ -22,7 +22,6 @@ using clang::tooling::<u></u>buildASTFromCodeWi<br>
 using clang::tooling::<u></u>newFrontendActionFactory;<br>
 using clang::tooling::<u></u>runToolOnCodeWithArgs;<br>
 using clang::tooling::<u></u>FrontendActionFactory;<br>
-using clang::tooling::<u></u>FileContentMappings;<br>
<br>
 class BoundNodesCallback {<br>
 public:<br>
@@ -59,10 +58,10 @@ private:<br>
 };<br>
<br>
 template <typename T><br>
-testing::AssertionResult matchesConditionally(<br>
-    const std::string &Code, const T &AMatcher, bool ExpectMatch,<br>
-    llvm::StringRef CompileArg,<br>
-    const FileContentMappings &VirtualMappedFiles = FileContentMappings()) {<br>
+testing::AssertionResult matchesConditionally(const std::string &Code,<br>
+                                              const T &AMatcher,<br>
+                                              bool ExpectMatch,<br>
+                                              llvm::StringRef CompileArg) {<br>
   bool Found = false, DynamicFound = false;<br>
   MatchFinder Finder;<br>
   VerifyMatch VerifyFound(nullptr, &Found);<br>
@@ -74,8 +73,7 @@ testing::AssertionResult matchesConditio<br>
       newFrontendActionFactory(&<u></u>Finder));<br>
   // Some tests use typeof, which is a gnu extension.<br>
   std::vector<std::string> Args(1, CompileArg);<br>
-  if (!runToolOnCodeWithArgs(<u></u>Factory->create(), Code, Args, "input.cc",<br>
-                             VirtualMappedFiles)) {<br>
+  if (!runToolOnCodeWithArgs(<u></u>Factory->create(), Code, Args)) {<br>
     return testing::AssertionFailure() << "Parsing error in \"" << Code << "\"";<br>
   }<br>
   if (Found != DynamicFound) {<br>
<br>
<br>
______________________________<u></u>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/cfe-commits</a><br>
</blockquote></div>