diff options
Diffstat (limited to 'lib/Sema/SemaExceptionSpec.cpp')
| -rw-r--r-- | lib/Sema/SemaExceptionSpec.cpp | 12 | 
1 files changed, 6 insertions, 6 deletions
| diff --git a/lib/Sema/SemaExceptionSpec.cpp b/lib/Sema/SemaExceptionSpec.cpp index 2387325be435..51d6acebada1 100644 --- a/lib/Sema/SemaExceptionSpec.cpp +++ b/lib/Sema/SemaExceptionSpec.cpp @@ -167,13 +167,13 @@ Sema::ResolveExceptionSpec(SourceLocation Loc, const FunctionProtoType *FPT) {  void  Sema::UpdateExceptionSpec(FunctionDecl *FD,                            const FunctionProtoType::ExceptionSpecInfo &ESI) { -  for (auto *Redecl : FD->redecls()) -    Context.adjustExceptionSpec(cast<FunctionDecl>(Redecl), ESI); -    // If we've fully resolved the exception specification, notify listeners.    if (!isUnresolvedExceptionSpec(ESI.Type))      if (auto *Listener = getASTMutationListener())        Listener->ResolvedExceptionSpec(FD); + +  for (auto *Redecl : FD->redecls()) +    Context.adjustExceptionSpec(cast<FunctionDecl>(Redecl), ESI);  }  /// Determine whether a function has an implicitly-generated exception @@ -437,7 +437,7 @@ bool Sema::CheckEquivalentExceptionSpec(const PartialDiagnostic &DiagID,        OldNR != FunctionProtoType::NR_NoNoexcept &&        NewNR != FunctionProtoType::NR_NoNoexcept) {      Diag(NewLoc, DiagID); -    if (NoteID.getDiagID() != 0) +    if (NoteID.getDiagID() != 0 && OldLoc.isValid())        Diag(OldLoc, NoteID);      return true;    } @@ -518,7 +518,7 @@ bool Sema::CheckEquivalentExceptionSpec(const PartialDiagnostic &DiagID,      }      Diag(NewLoc, DiagID); -    if (NoteID.getDiagID() != 0) +    if (NoteID.getDiagID() != 0 && OldLoc.isValid())        Diag(OldLoc, NoteID);      return true;    } @@ -547,7 +547,7 @@ bool Sema::CheckEquivalentExceptionSpec(const PartialDiagnostic &DiagID,      return false;    }    Diag(NewLoc, DiagID); -  if (NoteID.getDiagID() != 0) +  if (NoteID.getDiagID() != 0 && OldLoc.isValid())      Diag(OldLoc, NoteID);    return true;  } | 
