Commit Graph

26 Commits

Author SHA1 Message Date
Mehdi Amini 2e23251d3e [NFC] Header cleanup
Summary: Removed unused headers, replaced some headers with forward class declarations

Patch by: Eugene <claprix@yandex.ru>

Differential Revision: https://reviews.llvm.org/D20100

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275882 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-18 19:02:11 +00:00
Angel Garcia Gomez d162035b9b Roll-back r250822.
Summary: It breaks the build for the ASTMatchers

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D13893

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250827 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-20 13:23:58 +00:00
Angel Garcia Gomez e83bf34da9 Apply modernize-use-default to clang.
Summary: Replace empty bodies of default constructors and destructors with '= default'.

Reviewers: bkramer, klimek

Subscribers: klimek, alexfh, cfe-commits

Differential Revision: http://reviews.llvm.org/D13890

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@250822 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-20 12:52:55 +00:00
Craig Topper a0d8b00ee9 SourceRanges are small and trivially copyable, don't them by reference.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249259 91177308-0d34-0410-b5e6-96231b3b80d8
2015-10-04 04:53:55 +00:00
Yaron Keren 67e271c99f Replace some const std::string & with llvm::StringRef or std::string
and std::move to avoid implicit std::string construction.

Patch by Eugene Kosov.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241433 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-06 08:47:15 +00:00
Yaron Keren 71b2ce0add Revert r241330. It compiled with Visual C++ 2013 and gcc 4.9.1 (mingw) but now fails the bots.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241335 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-03 09:30:33 +00:00
Yaron Keren a4b1b91f5b Replace some const std::string & with llvm::StringRef or std::string
and std::move to avoid implicit std::string construction.

Patch by Eugene Kosov.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241330 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-03 09:16:20 +00:00
Yaron Keren 16bc906be3 Revert r241319, investigating.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241321 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-03 05:31:54 +00:00
Yaron Keren e9c52acaaf Replace some const std::string & with llvm::StringRef or std::string
and std::move to avoid implicit std::string construction.

Part 1/2.

Patch by Eugene Kosov.




git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241319 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-03 05:09:59 +00:00
Samuel Benzaquen ff09fa4d23 Support named values in the autocomplete feature.
Summary:
This includes:
 - Passing a Sema to completeExpression to allow for named values in the
   expression.
 - Passing a map of names to values to the parser.
 - Update the Sema interface to include completion for matchers.
 - Change the parser to use the Sema for completion, instead of going
   directly to Registry.

Reviewers: pcc

Subscribers: klimek, cfe-commits

Differential Revision: http://reviews.llvm.org/D3509

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215472 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-12 21:11:37 +00:00
Craig Topper 9369232c48 [C++11] Use 'nullptr'. ASTMatchers edition.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@209070 91177308-0d34-0410-b5e6-96231b3b80d8
2014-05-17 18:49:24 +00:00
Samuel Benzaquen f7ad99d5ed Add support for named values in the parser.
Summary: Add support for named values in the parser.

Reviewers: pcc

CC: cfe-commits, klimek

Differential Revision: http://llvm-reviews.chandlerc.com/D3276

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@206176 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-14 13:51:21 +00:00
Samuel Benzaquen 282d5f5e34 Revert "Add support for named values in the parser."
This was submitted before it was ready.

This reverts commit 62060a01e0.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205533 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-03 12:50:47 +00:00
Samuel Benzaquen 62060a01e0 Add support for named values in the parser.
Summary:
Add support for named values in the parser.
This allows injection of arbitrary constants using a custom Sema object.
Completions are not supported right now.

Will be used by clang_query to support the 'let' command.
Usage example:
  clang_query> let unique_ptr recordDecl(hasName("unique_ptr"))
  clang_query> match varDecl(hasType(unique_ptr))

Reviewers: klimek, pcc

CC: cfe-commits, klimek

Differential Revision: http://llvm-reviews.chandlerc.com/D3229

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205419 91177308-0d34-0410-b5e6-96231b3b80d8
2014-04-02 13:11:45 +00:00
Peter Collingbourne b680ae8cb6 Introduce Parser::completeExpression.
This function returns a list of completions for a given expression and
completion position.

Differential Revision: http://llvm-reviews.chandlerc.com/D2261

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@200497 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-30 22:38:41 +00:00
Chandler Carruth 4b9be6e25f Sort all the #include lines with LLVM's utils/sort_includes.py which
encodes the canonical rules for LLVM's style. I noticed this had drifted
quite a bit when cleaning up LLVM, so wanted to clean up Clang as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@198686 91177308-0d34-0410-b5e6-96231b3b80d8
2014-01-07 11:51:46 +00:00
Peter Collingbourne fd1323498d Split registry matcher resolution into a lookup phase and a construction phase.
The looked-up matchers will be used during code completion.

Differential Revision: http://llvm-reviews.chandlerc.com/D2207

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@195534 91177308-0d34-0410-b5e6-96231b3b80d8
2013-11-23 01:13:16 +00:00
Samuel Benzaquen b7488d7741 Resubmit "Refactor DynTypedMatcher into a value type class, just like Matcher<T>."
Summary: This resubmits r193100, plus a fix for a breakage with MSVC.

Reviewers: klimek, rnk

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D2005

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193613 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-29 14:37:15 +00:00
Reid Kleckner c30bf45115 Revert "Refactor DynTypedMatcher into a value type class, just like Matcher<T>."
This reverts commit r193100.

It was failing to compile with MSVC 2012 while instantiating
llvm::Optional<DynTypedMatcher>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193123 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-21 22:26:36 +00:00
Samuel Benzaquen 341b5df7f8 Refactor DynTypedMatcher into a value type class, just like Matcher<T>.
Summary:
Refactor DynTypedMatcher into a value type class, just like Matcher<T>.
This simplifies its usage and removes the virtual hierarchy from Matcher<T>.
It also enables planned changes to replace MatcherInteface<T>.
Too many instantiaions of this class hierarchy has been causing Registry.cpp.o to bloat in size and number of symbols.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D1661

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193100 91177308-0d34-0410-b5e6-96231b3b80d8
2013-10-21 18:40:51 +00:00
Samuel Benzaquen 9d02807c3e Refactor "MatcherList" into "VariantMatcher" and abstract the notion of a list of matchers for the polymorphic case.
Summary:
Refactor "MatcherList" into "VariantMatcher" and abstract the notion of a list of matchers for the polymorphic case.
This work is to support future changes needed for eachOf/allOf/anyOf matchers. We will add a new type on VariantMatcher.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D1365

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@188272 91177308-0d34-0410-b5e6-96231b3b80d8
2013-08-13 14:54:51 +00:00
Samuel Benzaquen 8a77c20375 Separate the notion of 'context' when recursing down in the parser and actual errors.
Summary:
Change how error messages are constructed and stored in Diagnostics.
Separate the notion of 'context' when recursing down in the parser and actual errors.
This will simplify adding some new features, like argument overloading and error recovery.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D1168

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@186602 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-18 19:47:59 +00:00
Samuel Benzaquen ef7eb02439 Add support for polymorphic matchers. Use runtime type checking to determine the right polymorphic overload to use.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184558 91177308-0d34-0410-b5e6-96231b3b80d8
2013-06-21 15:51:31 +00:00
Samuel Benzaquen 7a337af9e8 Parser/Registry argument enhancements.
Summary:
 Parser/Registry argument enhancements.
  - 2 argument support.
  - unsigned values support.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D915

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183231 91177308-0d34-0410-b5e6-96231b3b80d8
2013-06-04 15:46:22 +00:00
Samuel Benzaquen 4f37d92592 Add support for .bind("foo") expressions on the dynamic matchers.
Summary: Add support on the parser, registry, and DynTypedMatcher for binding IDs dynamically.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D911

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183144 91177308-0d34-0410-b5e6-96231b3b80d8
2013-06-03 19:31:08 +00:00
Manuel Klimek f7f295f321 First revision of the dynamic ASTMatcher library.
This library supports all the features of the compile-time based ASTMatcher
library, but allows the user to specify and construct the matchers at runtime.
It contains the following modules:
 - A variant type, to be used by the matcher factory.
 - A registry, where the matchers are indexed by name and have a factory method
   with a generic signature.
 - A simple matcher expression parser, that can be used to convert a matcher
   expression string into actual matchers that can be used with the AST at
   runtime.

Many features where omitted from this first revision to simplify this code
review. The main ideas are still represented in this change and it already has
support working use cases.
Things that are missing:
 - Support for polymorphic matchers. These requires supporting code in the
   registry, the marshallers and the variant type.
 - Support for numbers, char and bool arguments to the matchers. This requires
   supporting code in the parser and the variant type.
 - A command line program putting everything together and providing an already
   functional tool.

Patch by Samuel Benzaquen.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@181768 91177308-0d34-0410-b5e6-96231b3b80d8
2013-05-14 09:13:00 +00:00