Fixed in r264453. Sorry for the inconvenience. _Sam
On Fri, Mar 25, 2016 at 3:31 PM, Samuel Benzaquen <sbe...@google.com> wrote: > 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