diff options
-rw-r--r-- | clang/lib/Sema/SemaType.cpp | 8 | ||||
-rw-r--r-- | clang/test/SemaCXX/member-pointer.cpp | 1 |
2 files changed, 2 insertions, 7 deletions
diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index 8e86c73ccbe..56142253a08 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/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/clang/test/SemaCXX/member-pointer.cpp b/clang/test/SemaCXX/member-pointer.cpp index b9e5a631baa..afb7455921e 100644 --- a/clang/test/SemaCXX/member-pointer.cpp +++ b/clang/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}} |