From: Nico Weber Date: Tue, 17 Feb 2015 20:09:39 +0000 (+0000) Subject: Remove a recovery attempt that was untested and crashed when used. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=52b7fe79e68939427a89cf31e7d55952606fef4a;p=clang Remove a recovery attempt that was untested and crashed when used. Found by SLi's bot. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@229532 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaType.cpp b/lib/Sema/SemaType.cpp index 8e86c73ccb..56142253a0 100644 --- a/lib/Sema/SemaType.cpp +++ b/lib/Sema/SemaType.cpp @@ -1810,13 +1810,7 @@ QualType Sema::BuildMemberPointerType(QualType T, QualType Class, // exception specification. if (CheckDistantExceptionSpec(T)) { Diag(Loc, diag::err_distant_exception_spec); - - // FIXME: If we're doing this as part of template instantiation, - // we should return immediately. - - // Build the type anyway, but use the canonical type so that the - // exception specifiers are stripped off. - T = Context.getCanonicalType(T); + return QualType(); } // C++ 8.3.3p3: A pointer to member shall not point to ... a member diff --git a/test/SemaCXX/member-pointer.cpp b/test/SemaCXX/member-pointer.cpp index b9e5a631ba..afb7455921 100644 --- a/test/SemaCXX/member-pointer.cpp +++ b/test/SemaCXX/member-pointer.cpp @@ -12,6 +12,7 @@ class H : A {}; // expected-note 2{{implicitly declared private here}} int A::*pdi1; int (::A::*pdi2); int (A::*pfi)(int); +void (*A::*ppfie)() throw(); // expected-error {{exception specifications are not allowed beyond a single level of indirection}} int B::*pbi; // expected-warning{{use of enumeration in a nested name specifier is a C++11 extension}} \ // expected-error {{'pbi' does not point into a class}}