]> granicus.if.org Git - clang/commitdiff
Simplify and pass a more useful source location when computing an exception
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 24 Feb 2017 01:36:58 +0000 (01:36 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 24 Feb 2017 01:36:58 +0000 (01:36 +0000)
specification for an implicit special member.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@296068 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclCXX.cpp

index 602c3814ca3ec124aa273bf8e26a63240f499d72..cd31937f7a736066f2ace2c06e5e0d11aeb2591d 100644 (file)
@@ -6097,20 +6097,9 @@ ComputeDefaultedSpecialMemberExceptionSpec(
 
 static Sema::ImplicitExceptionSpecification
 computeImplicitExceptionSpec(Sema &S, SourceLocation Loc, CXXMethodDecl *MD) {
-  switch (auto CSM = S.getSpecialMember(MD)) {
-  case Sema::CXXDefaultConstructor:
-    return ComputeDefaultedSpecialMemberExceptionSpec(
-        S, Loc, MD, Sema::CXXDefaultConstructor, nullptr);
-  case Sema::CXXCopyConstructor:
-  case Sema::CXXCopyAssignment:
-  case Sema::CXXMoveConstructor:
-  case Sema::CXXMoveAssignment:
-  case Sema::CXXDestructor:
-    return ComputeDefaultedSpecialMemberExceptionSpec(
-        S, MD->getLocation(), MD, CSM, nullptr);
-  case Sema::CXXInvalid:
-    break;
-  }
+  auto CSM = S.getSpecialMember(MD);
+  if (CSM != Sema::CXXInvalid)
+    return ComputeDefaultedSpecialMemberExceptionSpec(S, Loc, MD, CSM, nullptr);
 
   auto *CD = cast<CXXConstructorDecl>(MD);
   assert(CD->getInheritedConstructor() &&