From c6c937f2a6f559aecfa5a03d7312186fcf837266 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Tue, 23 Aug 2016 02:00:51 +0000 Subject: Revert r279486 "Fix regression introduced by r279164" Build bots seem unhappy and as Richard was leaving he asked me to revert this for him. Doing so. llvm-svn: 279500 --- clang/lib/Sema/SemaTemplate.cpp | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) (limited to 'clang/lib/Sema/SemaTemplate.cpp') diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 6241f524af2..ede1c5bcc64 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -487,6 +487,8 @@ bool Sema::DiagnoseUninstantiableTemplate(SourceLocation PointOfInstantiation, QualType InstantiationTy; if (TagDecl *TD = dyn_cast(Instantiation)) InstantiationTy = Context.getTypeDeclType(TD); + else + InstantiationTy = cast(Instantiation)->getType(); if (!Complain || (PatternDef && PatternDef->isInvalidDecl())) { // Say nothing } else if (PatternDef) { @@ -498,30 +500,15 @@ bool Sema::DiagnoseUninstantiableTemplate(SourceLocation PointOfInstantiation, // we're lexically inside it. Instantiation->setInvalidDecl(); } else if (InstantiatedFromMember) { - if (isa(Instantiation)) { - Diag(PointOfInstantiation, - diag::err_explicit_instantiation_undefined_member) - << 1 << Instantiation->getDeclName() << Instantiation->getDeclContext(); - } else { - Diag(PointOfInstantiation, - diag::err_implicit_instantiate_member_undefined) - << InstantiationTy; - } - Diag(Pattern->getLocation(), isa(Instantiation) - ? diag::note_explicit_instantiation_here - : diag::note_member_declared_at); + Diag(PointOfInstantiation, + diag::err_implicit_instantiate_member_undefined) + << InstantiationTy; + Diag(Pattern->getLocation(), diag::note_member_declared_at); } else { - if (isa(Instantiation)) - Diag(PointOfInstantiation, - diag::err_explicit_instantiation_undefined_func_template) - << Pattern; - else - Diag(PointOfInstantiation, diag::err_template_instantiate_undefined) - << (TSK != TSK_ImplicitInstantiation) - << InstantiationTy; - Diag(Pattern->getLocation(), isa(Instantiation) - ? diag::note_explicit_instantiation_here - : diag::note_template_decl_here); + Diag(PointOfInstantiation, diag::err_template_instantiate_undefined) + << (TSK != TSK_ImplicitInstantiation) + << InstantiationTy; + Diag(Pattern->getLocation(), diag::note_template_decl_here); } // In general, Instantiation isn't marked invalid to get more than one -- cgit v1.2.3