From 5f4e8999aa30e2986e99fbfa4c43e61e99a18687 Mon Sep 17 00:00:00 2001 From: Sebastian Redl Date: Mon, 13 Sep 2010 21:10:20 +0000 Subject: [PATCH] Have __has_nothrow_copy use Sema's lookup routines. This fixes the problem with not finding implicitly declared copy constructors, part of PR8107. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113784 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaExprCXX.cpp | 2 +- test/SemaCXX/type-traits.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 76d6f496e6..d026851f62 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/lib/Sema/SemaExprCXX.cpp @@ -2148,7 +2148,7 @@ static bool EvaluateUnaryTypeTrait(Sema &Self, UnaryTypeTrait UTT, QualType T) { DeclarationName ConstructorName = C.DeclarationNames.getCXXConstructorName(C.getCanonicalType(T)); DeclContext::lookup_const_iterator Con, ConEnd; - for (llvm::tie(Con, ConEnd) = RD->lookup(ConstructorName); + for (llvm::tie(Con, ConEnd) = Self.LookupConstructors(RD); Con != ConEnd; ++Con) { CXXConstructorDecl *Constructor = cast(*Con); if (Constructor->isCopyConstructor(FoundTQs)) { diff --git a/test/SemaCXX/type-traits.cpp b/test/SemaCXX/type-traits.cpp index 99ac5cd433..61aba07597 100644 --- a/test/SemaCXX/type-traits.cpp +++ b/test/SemaCXX/type-traits.cpp @@ -366,6 +366,7 @@ void has_nothrow_copy() { int t21[T(__has_nothrow_copy(HasMultipleNoThrowCopy))]; int t22[F(__has_nothrow_copy(void))]; int t23[F(__has_nothrow_copy(cvoid))]; + int t24[T(__has_nothrow_copy(HasVirtDest))]; } void has_nothrow_constructor() { -- 2.40.0