diff options
| author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-07-07 20:29:57 +0000 |
|---|---|---|
| committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2009-07-07 20:29:57 +0000 |
| commit | 86be854fa869f4c292e6b261d0ce1bf5d27b495e (patch) | |
| tree | 0a2c6fbfaefe91cb44e117ea602a73e393484b21 /clang/lib/Sema/SemaDeclCXX.cpp | |
| parent | e9f98047623959176f351d2001f2e8c10eb8b728 (diff) | |
| download | bcm5719-llvm-86be854fa869f4c292e6b261d0ce1bf5d27b495e.tar.gz bcm5719-llvm-86be854fa869f4c292e6b261d0ce1bf5d27b495e.zip | |
Implement checking of exception spec compatibility for overriding virtual functions.
llvm-svn: 74943
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 75ceb191655..72adcc22d10 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -882,7 +882,7 @@ namespace { i != e; ++i) { // Traverse the record, looking for methods. if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(*i)) { - // If the method is pre virtual, add it to the methods vector. + // If the method is pure virtual, add it to the methods vector. if (MD->isPure()) { Methods.push_back(MD); continue; @@ -3223,6 +3223,17 @@ bool Sema::CheckOverridingFunctionReturnType(const CXXMethodDecl *New, return false; } +bool Sema::CheckOverridingFunctionExceptionSpec(const CXXMethodDecl *New, + const CXXMethodDecl *Old) +{ + return CheckExceptionSpecSubset(diag::err_override_exception_spec, + diag::note_overridden_virtual_function, + Old->getType()->getAsFunctionProtoType(), + Old->getLocation(), + New->getType()->getAsFunctionProtoType(), + New->getLocation()); +} + /// ActOnCXXEnterDeclInitializer - Invoked when we are about to parse an /// initializer for the declaration 'Dcl'. /// After this method is called, according to [C++ 3.4.1p13], if 'Dcl' is a |

