r261574 - [ASTMatchers] Add matcher hasAnyName.

Hans Wennborg via cfe-commits cfe-commits at lists.llvm.org
Mon Feb 22 14:27:15 PST 2016


On Mon, Feb 22, 2016 at 1:13 PM, Samuel Benzaquen via cfe-commits
<cfe-commits at lists.llvm.org> wrote:
> Author: sbenza
> Date: Mon Feb 22 15:13:02 2016
> New Revision: 261574
>
> URL: http://llvm.org/viewvc/llvm-project?rev=261574&view=rev
> Log:
> [ASTMatchers] Add matcher hasAnyName.
>
> Summary: Add matcher hasAnyName as an optimization over anyOf(hasName(),...)
>
> Reviewers: alexfh
>
> Subscribers: klimek, cfe-commits
>
> Differential Revision: http://reviews.llvm.org/D17163

I've tried to fix the Visual Studio build in r261583. Please take a
look to make sure the fixes seem reasonable.


> +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Mon Feb 22 15:13:02 2016
> @@ -1844,11 +1844,24 @@ inline internal::Matcher<Stmt> sizeOfExp
>  /// \code
>  ///   namespace a { namespace b { class X; } }
>  /// \endcode
> -inline internal::Matcher<NamedDecl> hasName(std::string Name) {
> -  return internal::Matcher<NamedDecl>(
> -      new internal::HasNameMatcher(std::move(Name)));
> +inline internal::Matcher<NamedDecl> hasName(const std::string &Name) {
> +  return internal::Matcher<NamedDecl>(new internal::HasNameMatcher({Name}));

That doesn't compile with Visual Studio 2013:

C:\b\build\slave\ClangToTWin\build\src\third_party\llvm\tools\clang\include\clang/ASTMatchers/ASTMatchers.h(1848)
: error C2440: 'initializing' : cannot convert from 'initializer-list'
to 'clang::ast_matchers::internal::HasNameMatcher'
        Constructor for class
'clang::ast_matchers::internal::HasNameMatcher' is declared 'explicit'

> +private:
> +  struct Pattern {
> +    StringRef Pattern;

C:\b\build\slave\ClangToTWin\build\src\third_party\llvm\tools\clang\lib\ASTMatchers\ASTMatchersInternal.cpp(394)
: error C2380: type(s) preceding 'Pattern' (constructor with return
type, or illegal redefinition of current class-name?)


More information about the cfe-commits mailing list