Sorry, this is an unrelated problem. It is using brace-init lists and the supported MSVC version does not support them. I'll fix that.
On Fri, Mar 25, 2016 at 3:27 PM, Mehdi Amini <mehdi.am...@apple.com> wrote: > The link I provided is testing r264430... > > -- > Mehdi > > On Mar 25, 2016, at 12:25 PM, Samuel Benzaquen <sbe...@google.com> wrote: > > I believe r264428 fixes this problem. > > On Fri, Mar 25, 2016 at 2:18 PM, Mehdi Amini <mehdi.am...@apple.com> > wrote: > >> Hi, >> >> I think this broke clang-tidy somehow: >> http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/10881/steps/build%20stage%201/logs/stdio >> >> -- >> Mehdi >> >> >> >> >> > On Mar 25, 2016, at 9:29 AM, Samuel Benzaquen via cfe-commits < >> cfe-commits@lists.llvm.org> wrote: >> > >> > Author: sbenza >> > Date: Fri Mar 25 11:29:30 2016 >> > New Revision: 264417 >> > >> > URL: http://llvm.org/viewvc/llvm-project?rev=264417&view=rev >> > Log: >> > [ASTMatchers] Add own version of VariadicFunction. >> > >> > Summary: >> > llvm::VariadicFunction is only being used by ASTMatchers. >> > Having our own copy here allows us to remove the other one from >> llvm/ADT. >> > Also, we can extend the API to meet our needs without modifying the >> common >> > implementation. >> > >> > Reviewers: alexfh >> > >> > Subscribers: klimek, cfe-commits >> > >> > Differential Revision: http://reviews.llvm.org/D18275 >> > >> > Modified: >> > cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h >> > cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h >> > cfe/trunk/lib/ASTMatchers/Dynamic/Marshallers.h >> > cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp >> > >> > Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h >> > URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h?rev=264417&r1=264416&r2=264417&view=diff >> > >> ============================================================================== >> > --- cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h (original) >> > +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchers.h Fri Mar 25 >> 11:29:30 2016 >> > @@ -1990,8 +1990,8 @@ inline internal::Matcher<NamedDecl> hasN >> > /// \code >> > /// anyOf(hasName(a), hasName(b), hasName(c)) >> > /// \endcode >> > -const llvm::VariadicFunction<internal::Matcher<NamedDecl>, StringRef, >> > - internal::hasAnyNameFunc> >> > +const internal::VariadicFunction<internal::Matcher<NamedDecl>, >> StringRef, >> > + internal::hasAnyNameFunc> >> > hasAnyName = {}; >> > >> > /// \brief Matches NamedDecl nodes whose fully qualified names contain >> > >> > Modified: cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h >> > URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h?rev=264417&r1=264416&r2=264417&view=diff >> > >> ============================================================================== >> > --- cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h (original) >> > +++ cfe/trunk/include/clang/ASTMatchers/ASTMatchersInternal.h Fri Mar >> 25 11:29:30 2016 >> > @@ -46,8 +46,9 @@ >> > #include "clang/AST/StmtCXX.h" >> > #include "clang/AST/StmtObjC.h" >> > #include "clang/AST/Type.h" >> > +#include "llvm/ADT/ArrayRef.h" >> > #include "llvm/ADT/Optional.h" >> > -#include "llvm/ADT/VariadicFunction.h" >> > +#include "llvm/ADT/SmallVector.h" >> > #include "llvm/Support/ManagedStatic.h" >> > #include <map> >> > #include <string> >> > @@ -60,6 +61,39 @@ class BoundNodes; >> > >> > namespace internal { >> > >> > +/// \brief Variadic function object. >> > +/// >> > +/// Most of the functions below that use VariadicFunction could be >> implemented >> > +/// using plain C++11 variadic functions, but the function object >> allows us to >> > +/// capture it on the dynamic matcher registry. >> > +template <typename ResultT, typename ArgT, >> > + ResultT (*Func)(ArrayRef<const ArgT *>)> >> > +struct VariadicFunction { >> > + ResultT operator()() const { return Func({}); } >> > + >> > + template <typename... ArgsT> >> > + ResultT operator()(const ArgT &Arg1, const ArgsT &... Args) const { >> > + return Execute(Arg1, static_cast<const ArgT &>(Args)...); >> > + } >> > + >> > + // We also allow calls with an already created array, in case the >> caller >> > + // already had it. >> > + ResultT operator()(ArrayRef<ArgT> Args) const { >> > + SmallVector<const ArgT*, 8> InnerArgs; >> > + for (const ArgT &Arg : Args) >> > + InnerArgs.push_back(&Arg); >> > + return Func(InnerArgs); >> > + } >> > + >> > +private: >> > + // Trampoline function to allow for implicit conversions to take >> place >> > + // before we make the array. >> > + template <typename... ArgsT> ResultT Execute(const ArgsT &... Args) >> const { >> > + const ArgT *const ArgsArray[] = {&Args...}; >> > + return Func(ArgsArray); >> > + } >> > +}; >> > + >> > /// \brief Unifies obtaining the underlying type of a regular node >> through >> > /// `getType` and a TypedefNameDecl node through `getUnderlyingType`. >> > template <typename NodeType> >> > @@ -1405,9 +1439,8 @@ inline bool ValueEqualsMatcher<FloatingL >> > /// casted to CXXRecordDecl and all given matchers match. >> > template <typename SourceT, typename TargetT> >> > class VariadicDynCastAllOfMatcher >> > - : public llvm::VariadicFunction< >> > - BindableMatcher<SourceT>, Matcher<TargetT>, >> > - makeDynCastAllOfComposite<SourceT, TargetT> > { >> > + : public VariadicFunction<BindableMatcher<SourceT>, >> Matcher<TargetT>, >> > + makeDynCastAllOfComposite<SourceT, >> TargetT>> { >> > public: >> > VariadicDynCastAllOfMatcher() {} >> > }; >> > @@ -1423,9 +1456,9 @@ public: >> > /// \c Matcher<NestedNameSpecifier>. >> > /// The returned matcher matches if all given matchers match. >> > template <typename T> >> > -class VariadicAllOfMatcher : public llvm::VariadicFunction< >> > - BindableMatcher<T>, Matcher<T>, >> > - makeAllOfComposite<T> > { >> > +class VariadicAllOfMatcher >> > + : public VariadicFunction<BindableMatcher<T>, Matcher<T>, >> > + makeAllOfComposite<T>> { >> > public: >> > VariadicAllOfMatcher() {} >> > }; >> > @@ -1546,8 +1579,8 @@ public: >> > new MatcherImpl<OuterT>(InnerMatcher, Getter<OuterT>::value())); >> > } >> > >> > - struct Func : public llvm::VariadicFunction<Self, >> Matcher<InnerTBase>, >> > - &Self::create> { >> > + struct Func >> > + : public VariadicFunction<Self, Matcher<InnerTBase>, >> &Self::create> { >> > Func() {} >> > }; >> > >> > >> > Modified: cfe/trunk/lib/ASTMatchers/Dynamic/Marshallers.h >> > URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ASTMatchers/Dynamic/Marshallers.h?rev=264417&r1=264416&r2=264417&view=diff >> > >> ============================================================================== >> > --- cfe/trunk/lib/ASTMatchers/Dynamic/Marshallers.h (original) >> > +++ cfe/trunk/lib/ASTMatchers/Dynamic/Marshallers.h Fri Mar 25 11:29:30 >> 2016 >> > @@ -325,8 +325,9 @@ public: >> > >> > template <typename ResultT, typename ArgT, >> > ResultT (*F)(ArrayRef<const ArgT *>)> >> > - VariadicFuncMatcherDescriptor(llvm::VariadicFunction<ResultT, ArgT, >> F> Func, >> > - StringRef MatcherName) >> > + VariadicFuncMatcherDescriptor( >> > + ast_matchers::internal::VariadicFunction<ResultT, ArgT, F> Func, >> > + StringRef MatcherName) >> > : Func(&variadicMatcherDescriptor<ResultT, ArgT, F>), >> > MatcherName(MatcherName.str()), >> > ArgsKind(ArgTypeTraits<ArgT>::getKind()) { >> > @@ -655,9 +656,9 @@ MatcherDescriptor *makeMatcherAutoMarsha >> > /// \brief Variadic overload. >> > template <typename ResultT, typename ArgT, >> > ResultT (*Func)(ArrayRef<const ArgT *>)> >> > -MatcherDescriptor * >> > -makeMatcherAutoMarshall(llvm::VariadicFunction<ResultT, ArgT, Func> >> VarFunc, >> > - StringRef MatcherName) { >> > +MatcherDescriptor *makeMatcherAutoMarshall( >> > + ast_matchers::internal::VariadicFunction<ResultT, ArgT, Func> >> VarFunc, >> > + StringRef MatcherName) { >> > return new VariadicFuncMatcherDescriptor(VarFunc, MatcherName); >> > } >> > >> > >> > Modified: cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp >> > URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp?rev=264417&r1=264416&r2=264417&view=diff >> > >> ============================================================================== >> > --- cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp (original) >> > +++ cfe/trunk/unittests/ASTMatchers/ASTMatchersTest.cpp Fri Mar 25 >> 11:29:30 2016 >> > @@ -3000,6 +3000,9 @@ TEST(Matcher, HasAnyName) { >> > EXPECT_TRUE(notMatches(Code, recordDecl(hasAnyName("::C", >> "::b::C")))); >> > EXPECT_TRUE( >> > matches(Code, recordDecl(hasAnyName("::C", "::b::C", >> "::a::b::C")))); >> > + >> > + std::vector<StringRef> Names = {"::C", "::b::C", "::a::b::C"}; >> > + EXPECT_TRUE(matches(Code, recordDecl(hasAnyName(Names)))); >> > } >> > >> > TEST(Matcher, IsDefinition) { >> > >> > >> > _______________________________________________ >> > cfe-commits mailing list >> > cfe-commits@lists.llvm.org >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >> > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits