Hey Doug, There is a test failing on this bot, looks most likely to be yours? http://lab.llvm.org:8011/builders/clang-x86_64-debian-selfhost-rel/builds/2943
Not sure if this is known... - Daniel On Fri, May 4, 2012 at 10:10 AM, Douglas Gregor <[email protected]> wrote: > Author: dgregor > Date: Fri May 4 12:09:59 2012 > New Revision: 156180 > > URL: http://llvm.org/viewvc/llvm-project?rev=156180&view=rev > Log: > Move Sema::RequireNonAbstractType() off of PartialDiagnostic. > > Modified: > cfe/trunk/include/clang/Sema/Sema.h > cfe/trunk/lib/Sema/SemaDeclCXX.cpp > cfe/trunk/lib/Sema/SemaExpr.cpp > cfe/trunk/lib/Sema/SemaExprCXX.cpp > > Modified: cfe/trunk/include/clang/Sema/Sema.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=156180&r1=156179&r2=156180&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Sema/Sema.h (original) > +++ cfe/trunk/include/clang/Sema/Sema.h Fri May 4 12:09:59 2012 > @@ -4423,7 +4423,31 @@ > }; > > bool RequireNonAbstractType(SourceLocation Loc, QualType T, > - const PartialDiagnostic &PD); > + TypeDiagnoser &Diagnoser); > + template<typename T1> > + bool RequireNonAbstractType(SourceLocation Loc, QualType T, > + unsigned DiagID, > + const T1 &Arg1) { > + BoundTypeDiagnoser1<T1> Diagnoser(DiagID, Arg1); > + return RequireNonAbstractType(Loc, T, Diagnoser); > + } > + > + template<typename T1, typename T2> > + bool RequireNonAbstractType(SourceLocation Loc, QualType T, > + unsigned DiagID, > + const T1 &Arg1, const T2 &Arg2) { > + BoundTypeDiagnoser2<T1, T2> Diagnoser(DiagID, Arg1, Arg2); > + return RequireNonAbstractType(Loc, T, Diagnoser); > + } > + > + template<typename T1, typename T2, typename T3> > + bool RequireNonAbstractType(SourceLocation Loc, QualType T, > + unsigned DiagID, > + const T1 &Arg1, const T2 &Arg2, const T3 > &Arg3) { > + BoundTypeDiagnoser3<T1, T2, T3> Diagnoser(DiagID, Arg1, Arg2, Arg3); > + return RequireNonAbstractType(Loc, T, Diagnoser); > + } > + > void DiagnoseAbstractType(const CXXRecordDecl *RD); > > bool RequireNonAbstractType(SourceLocation Loc, QualType T, unsigned DiagID, > > Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=156180&r1=156179&r2=156180&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Fri May 4 12:09:59 2012 > @@ -3396,19 +3396,32 @@ > > bool Sema::RequireNonAbstractType(SourceLocation Loc, QualType T, > unsigned DiagID, AbstractDiagSelID SelID) { > - if (SelID == -1) > - return RequireNonAbstractType(Loc, T, PDiag(DiagID)); > - else > - return RequireNonAbstractType(Loc, T, PDiag(DiagID) << SelID); > + class NonAbstractTypeDiagnoser : public TypeDiagnoser { > + unsigned DiagID; > + AbstractDiagSelID SelID; > + > + public: > + NonAbstractTypeDiagnoser(unsigned DiagID, AbstractDiagSelID SelID) > + : TypeDiagnoser(DiagID == 0), DiagID(DiagID), SelID(SelID) { } > + > + virtual void diagnose(Sema &S, SourceLocation Loc, QualType T) { > + if (SelID == -1) > + S.Diag(Loc, DiagID) << T; > + else > + S.Diag(Loc, DiagID) << SelID << T; > + } > + } Diagnoser(DiagID, SelID); > + > + return RequireNonAbstractType(Loc, T, Diagnoser); > } > > bool Sema::RequireNonAbstractType(SourceLocation Loc, QualType T, > - const PartialDiagnostic &PD) { > + TypeDiagnoser &Diagnoser) { > if (!getLangOpts().CPlusPlus) > return false; > > if (const ArrayType *AT = Context.getAsArrayType(T)) > - return RequireNonAbstractType(Loc, AT->getElementType(), PD); > + return RequireNonAbstractType(Loc, AT->getElementType(), Diagnoser); > > if (const PointerType *PT = T->getAs<PointerType>()) { > // Find the innermost pointer type. > @@ -3416,7 +3429,7 @@ > PT = T; > > if (const ArrayType *AT = Context.getAsArrayType(PT->getPointeeType())) > - return RequireNonAbstractType(Loc, AT->getElementType(), PD); > + return RequireNonAbstractType(Loc, AT->getElementType(), Diagnoser); > } > > const RecordType *RT = T->getAs<RecordType>(); > @@ -3435,7 +3448,7 @@ > if (!RD->isAbstract()) > return false; > > - Diag(Loc, PD) << RD->getDeclName(); > + Diagnoser.diagnose(*this, Loc, T); > DiagnoseAbstractType(RD); > > return true; > > Modified: cfe/trunk/lib/Sema/SemaExpr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=156180&r1=156179&r2=156180&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaExpr.cpp Fri May 4 12:09:59 2012 > @@ -9205,9 +9205,9 @@ > return ExprError(); > > if (RequireNonAbstractType(TInfo->getTypeLoc().getBeginLoc(), > - TInfo->getType(), > - PDiag(diag::err_second_parameter_to_va_arg_abstract) > - << TInfo->getTypeLoc().getSourceRange())) > + TInfo->getType(), > + diag::err_second_parameter_to_va_arg_abstract, > + TInfo->getTypeLoc())) > return ExprError(); > > if (!TInfo->getType().isPODType(Context)) { > > Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=156180&r1=156179&r2=156180&view=diff > ============================================================================== > --- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original) > +++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Fri May 4 12:09:59 2012 > @@ -590,8 +590,7 @@ > return ExprError(); > > if (RequireNonAbstractType(ThrowLoc, E->getType(), > - PDiag(diag::err_throw_abstract_type) > - << E->getSourceRange())) > + diag::err_throw_abstract_type, E)) > return ExprError(); > } > > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
