For Diagnostic::Reset() also reset the state related to #pragma diagnostic. Fixes rdar://9170766.

llvm-svn: 128346
This commit is contained in:
Argyrios Kyrtzidis
2011-03-26 18:58:17 +00:00
parent 85222c6b2f
commit bbbeea11a8
2 changed files with 23 additions and 5 deletions

View File

@@ -51,11 +51,6 @@ Diagnostic::Diagnostic(const llvm::IntrusiveRefCntPtr<DiagnosticIDs> &diags,
ErrorLimit = 0;
TemplateBacktraceLimit = 0;
// Create a DiagState and DiagStatePoint representing diagnostic changes
// through command-line.
DiagStates.push_back(DiagState());
PushDiagStatePoint(&DiagStates.back(), SourceLocation());
Reset();
}
@@ -102,6 +97,16 @@ void Diagnostic::Reset() {
// displayed.
LastDiagLevel = (DiagnosticIDs::Level)-1;
DelayedDiagID = 0;
// Clear state related to #pragma diagnostic.
DiagStates.clear();
DiagStatePoints.clear();
DiagStateOnPushStack.clear();
// Create a DiagState and DiagStatePoint representing diagnostic changes
// through command-line.
DiagStates.push_back(DiagState());
PushDiagStatePoint(&DiagStates.back(), SourceLocation());
}
void Diagnostic::SetDelayedDiagnostic(unsigned DiagID, llvm::StringRef Arg1,

View File

@@ -0,0 +1,13 @@
// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 local %s | FileCheck %s
int main (int argc, const char * argv[])
{
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
int x;
#pragma clang diagnostic pop
return 0;
}
// CHECK: pragma-diag-reparse.c:7:7: VarDecl=x:7:7 (Definition) Extent=[7:3 - 7:8]