diff options
| author | Anders Carlsson <andersca@mac.com> | 2010-06-03 01:00:02 +0000 | 
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2010-06-03 01:00:02 +0000 | 
| commit | a2f74f3c9849f7ad5513e0c89e6d2a45a8621985 (patch) | |
| tree | 5100891f2fa2d83062bf16a67d2c01a57c9cbdf2 /clang/lib/Sema/SemaDeclCXX.cpp | |
| parent | 4029596f9370e0a086881a88869eda8313aca513 (diff) | |
| download | bcm5719-llvm-a2f74f3c9849f7ad5513e0c89e6d2a45a8621985.tar.gz bcm5719-llvm-a2f74f3c9849f7ad5513e0c89e6d2a45a8621985.zip | |
Add all final overriders to the map.
llvm-svn: 105374
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaDeclCXX.cpp | 7 | 
1 files changed, 7 insertions, 0 deletions
| diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index 8630e73ceea..76a2f4f612f 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -2326,6 +2326,10 @@ bool Sema::RequireNonAbstractType(SourceLocation Loc, QualType T,    CXXFinalOverriderMap FinalOverriders;    RD->getFinalOverriders(FinalOverriders); +  // Keep a set of seen pure methods so we won't diagnose the same method +  // more than once. +  llvm::SmallPtrSet<const CXXMethodDecl *, 8> SeenPureMethods; +      for (CXXFinalOverriderMap::iterator M = FinalOverriders.begin(),                                      MEnd = FinalOverriders.end();         M != MEnd;  @@ -2345,6 +2349,9 @@ bool Sema::RequireNonAbstractType(SourceLocation Loc, QualType T,        if (!SO->second.front().Method->isPure())          continue; +      if (!SeenPureMethods.insert(SO->second.front().Method)) +        continue; +        Diag(SO->second.front().Method->getLocation(),              diag::note_pure_virtual_function)           << SO->second.front().Method->getDeclName(); | 

