diff options
Diffstat (limited to 'clang/lib/Sema/SemaExceptionSpec.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaExceptionSpec.cpp | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExceptionSpec.cpp b/clang/lib/Sema/SemaExceptionSpec.cpp index f1033dc..cd58f32 100644 --- a/clang/lib/Sema/SemaExceptionSpec.cpp +++ b/clang/lib/Sema/SemaExceptionSpec.cpp @@ -701,6 +701,14 @@ bool Sema::CheckExceptionSpecCompatibility(Expr *From, QualType ToType)  bool Sema::CheckOverridingFunctionExceptionSpec(const CXXMethodDecl *New,                                                  const CXXMethodDecl *Old) { +  if (getLangOptions().CPlusPlus0x && New->getParent()->isBeingDefined() && +      isa<CXXDestructorDecl>(New)) { +    // The destructor might be updated once the definition is finished. So +    // remember it and check later. +    DelayedDestructorExceptionSpecChecks.push_back(std::make_pair( +      cast<CXXDestructorDecl>(New), cast<CXXDestructorDecl>(Old))); +    return false; +  }    return CheckExceptionSpecSubset(PDiag(diag::err_override_exception_spec),                                    PDiag(diag::note_overridden_virtual_function),                                    Old->getType()->getAs<FunctionProtoType>(),  | 
