aboutsummaryrefslogtreecommitdiff
path: root/unittests/ASTMatchers
AgeCommit message (Collapse)Author
2013-04-30When deducing an 'auto' type, don't modify the type-as-written.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@180808 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-09Adding new AST Matchers isVirtual and isOverrideEdwin Vane
isVirtual - matches CXXMethodDecl nodes for virtual methods isOverride - matches CXXMethodDecl nodes for methods that override virtual methods from a base class. Author: Philip Dunstan <phil@philipdunstan.com> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179126 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-08Add matcher for NamespaceDecls.Daniel Jasper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179027 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-02Adding a hasLocalQualifiers() AST Matcher.Edwin Vane
Updated tests and docs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178556 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-01Adding parenType() and innerType() AST MatchersEdwin Vane
Updated docs and tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178487 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-14Implements memoization for ancestor matching.Manuel Klimek
This yields a log(#ast_nodes) worst-case improvement with matchers like stmt(unless(hasAncestor(...))). Also made the order of visitation for ancestor matches BFS, as the most common use cases (for example finding the closest enclosing function definition) rely on that. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177081 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-07Adding lvalue and rvalue reference type matchersEdwin Vane
Updated docs and tests. Reviewers: klimek, gribozavr git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176630 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-06New ASTMatchers and enhancement to hasOverloadedOperatorNameEdwin Vane
Added two new narrowing matchers: * hasMethod: aplies a matcher to a CXXRecordDecl's methods until a match is made or there are no more methods. * hasCanonicalType: applies a matcher to a QualType's canonicalType. Enhanced hasOverloadedOperatorName to work on CXXMethodDecl as well as CXXOperatorCallExpr. Updated tests and docs. Reviewers: klimek, gribozavr git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176556 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-04hasQualifer() matcher should return false if there's no qualifierEdwin Vane
Instead of passing NULL on to sub-matcher, just return false. Updated tests and regenerated docs. Author: Tareq A Siraj <tareq.a.siraj@intel.com> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176441 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-27Make the negative test of recordType depend on a specific record.Manuel Klimek
Otherwise it'll break if there's a record type in the AST by default. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176181 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-25Various additions to ASTMatcher library:Edwin Vane
New type matchers: * recordType * elaboratedType New narrowing matchers: * hasQualifier * namesType * hasDeclContext Added tests and updated LibASTMatchersReference. Reviewers: klimek git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176047 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-25Adding hasDeclaration overload for TemplateSpecializationTypeEdwin Vane
TemplateSpecializationType doesn't quite have getDecl(). Need to go through TemplateName to get a TemplateDecl. Added test cases for the hasDeclaration() overload for TemplateSpecializationType. Also introduced the type matcher templateSpecializationType() used by the new hasDeclaration() test case. Updated LibASTMatchersReference. Reviewers: klimek git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176025 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-25Support in hasDeclaration for types with getDecl()Edwin Vane
Re-introducing r175532. The has_getDecl metafunction didn't compile with Visual Studio. This revision uses approaches has_getDecl from a different angle that isn't a problem for Visual Studio. Added dedicated tests for the metafunction. Reviewers: klimek git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176024 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-25Reverting r176019. Corrupt patch.Edwin Vane
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176021 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-25Support in hasDeclaration for types with getDecl()Edwin Vane
Re-introducing r175532. The has_getDecl metafunction didn't compile with Visual Studio. This revision approaches has_getDecl from a different angle that isn't a problem for Visual Studio. Added dedicated tests for the metafunction. Reviewers: klimek git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176019 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-25Add matcher for AccessSpecDecls.Daniel Jasper
Also, add matchers isPrivate(), isProtected() and isPublic(), that restrict the matching of such AccessSpecDecls and all other Decls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176017 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-19Support in hasDeclaration for types with getDecl()Edwin Vane
Using a new metafunction for detecting the presence of the member 'getDecl' in a type T, added support to hasDeclaration for any such type T. This allows hasDecl() to be replaced and enables several other subclasses of clang::Type to use hasDeclaration. Updated unittests and LibASTMatchersReference.html. Reviewers: klimek git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175532 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-18Clean up last use of dyn_cast on TypeLoc in ASTMatchersDavid Blaikie
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175454 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12Adding more overloads for allOf matcherEdwin Vane
Adding overloads of allOf accepting 4 and 5 arguments. Reviewer: klimek git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174967 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07Implements equalsNode for Decl and Stmt.Manuel Klimek
This is a powerful tool when doing iterative refined matches, where another match is started inside the match callback of the first one; this allows for example to find out whether the node was in the condition or body of its parent if-statement. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174605 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06Adds a convenience function selectFirst to simplify matching.Manuel Klimek
A very common use case is to search for the first occurrence of a certain node that is a descendant of another node. In that case, selectFirst significantly simplifies the code at the client side. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174499 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Implements the convenience matcher findAll.Manuel Klimek
We found that findAll has been implemented incorrectly multiple times by various people using the matchers. To prevent further wasted development effort, it makes sense to add it as convenience matcher implemented as eachOf(m, forEachDescendant(m)). This patch also updates the docs with the new matchers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174320 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-04Add an eachOf matcher.Manuel Klimek
eachOf gives closure on the forEach and forEachDescendant matchers. Before, it was impossible to implement a findAll matcher, as matching the node or any of its descendants was not expressible (since anyOf only triggers the first match). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174315 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-01Re-design the convenience interfaces on MatchFinder.Manuel Klimek
First, this implements a match() method on MatchFinder; this allows us to get rid of the findAll implementation, as findAll is really a special case of recursive matchers on match. Instead of findAll, provide a convenience function match() that lets users iterate easily over the results instead of needing to implement callbacks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174172 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-19fix the unit tests too.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172907 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-12Remove useless 'llvm::' qualifier from names like StringRef and others that areDmitri Gribenko
brought into 'clang' namespace by clang/Basic/LLVM.h git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172323 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-10Adding tests since when I was asked whether this works I wasn'tManuel Klimek
100% sure. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169725 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-06Implements multiple parents in the parent map.Manuel Klimek
Previously we would match the last visited parent, which in the case of template instantiations was the last instantiated template. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169508 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04Fix spelling I ran over while proof-reading tests.Manuel Klimek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169271 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04Fixes crash in isDerivedFrom for recursive templates.Manuel Klimek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169262 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04Add parameterCountIs() matcher.Daniel Jasper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169257 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04Sort the #include lines for unittests/...Chandler Carruth
I've tried to place sensible headers at the top as main-module headers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169243 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04ASTTests, ASTMatchersTests: Move clangEdit before clangAst in USEDLIB.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169236 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04Untabify (in USEDLIBS, Makefile(s)).NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169235 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-03Make hasDeclaration work for enums.Daniel Jasper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169129 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-01Update unit tests not to rely on transitive includes.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169096 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-16Fix partial-match-bind-behavior with forEachDescendant() matchers.Daniel Jasper
The problem is that a partial match of an (explicit or implicit) allOf matcher binds results, i.e. recordDecl(decl().bind("x"), hasName("A")) can very well bind a record that is not named "A". With this fix, the common cases of stumbling over this bug are fixed by the BoundNodesMap overwriting the results of a partial match. An error can still be created with a weird combination of anyOf and allOf (see inactive test). We need to decide whether this is worth fixing, as the fix will have performance impact. Review: http://llvm-reviews.chandlerc.com/D124 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168177 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-15Do not use data recursion in ASTMatchFinder.Daniel Jasper
The matchers rely on the complete AST being traversed as shown by the new test cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168022 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-11Fix binding of nodes in case of forEach..() matchers.Daniel Jasper
When recursively visiting the generated matches, the aggregated bindings need to be copied during the recursion. Otherwise, we they might not be properly overwritten (which is shown by the test), or there might be bound nodes present that were bound on a different matching branch. Review: http://llvm-reviews.chandlerc.com/D112 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167695 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-02Insert interception point onStartOfTranslationUnit.Manuel Klimek
Often users of the ASTMatchers want to add tasks that are done once per translation unit, for example, cleaning up caches. Combined with the interception point for the end of source file one can add to the factory creation, this covers the cases we've seen users need. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167271 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-30Implement descendant matchers for NestedNamespecifiersDaniel Jasper
This implements has(), hasDescendant(), forEach() and forEachDescendant() for NestedNameSpecifier and NestedNameSpecifierLoc matchers. Review: http://llvm-reviews.chandlerc.com/D86 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167017 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-29Fix ASTMatchersTests to not create an overloaded-virtual warning.Daniel Jasper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166921 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-29Implement has(), hasDescendant(), forEach() and forEachDescendant() forDaniel Jasper
Types, QualTypes and TypeLocs. Review: http://llvm-reviews.chandlerc.com/D83 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166917 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-24Adds the possibility to run ASTMatchFinder over arbitrary AST nodes.Manuel Klimek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166567 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-23Make hasDeclaration() matcher work inside the memberExpr() matcher.Daniel Jasper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166479 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-23Implements the thisExpr matcher.Manuel Klimek
Patch by Gabor Horvath. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166477 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-22Implement hasParent()-matcher.Daniel Jasper
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166421 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-17Fix tests, which accidentally matched implicit code on specificDaniel Jasper
platforms to make buildbots happy. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166100 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-17First version of matchers for Types and TypeLocs.Daniel Jasper
Review: http://llvm-reviews.chandlerc.com/D47 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166094 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-01Fix ASTMatchersTests in configurations whereDaniel Jasper
"#include <initializer_list>" is unavailable for whatever reason. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164944 91177308-0d34-0410-b5e6-96231b3b80d8