Rework how CIndex handles diagnostics. Rather than using a callback,
we attach diagnostics to translation units and code-completion results, so they can be queried at any time. To facilitate this, the new StoredDiagnostic class stores a diagnostic in a serializable/deserializable form, and ASTUnit knows how to capture diagnostics in this stored form. CIndex's CXDiagnostic is a thin wrapper around StoredDiagnostic, providing a C interface to stored or de-serialized diagnostics. I've XFAIL'd one test case temporarily, because currently we end up storing diagnostics in an ASTUnit that's never returned to the user (because it contains errors). I'll introduce a temporary fix for this soon; the real fix will be to allow us to return and query invalid ASTs. llvm-svn: 96592
This commit is contained in:
@@ -102,7 +102,7 @@ namespace {
|
||||
|
||||
void BinaryDiagnosticSerializer::HandleDiagnostic(Diagnostic::Level DiagLevel,
|
||||
const DiagnosticInfo &Info) {
|
||||
Info.Serialize(DiagLevel, OS);
|
||||
StoredDiagnostic(DiagLevel, Info).Serialize(OS);
|
||||
}
|
||||
|
||||
static void SetUpBuildDumpLog(const DiagnosticOptions &DiagOpts,
|
||||
|
||||
Reference in New Issue
Block a user