Index: tools/clang/BindMigrate/DiagnosticEmitter.cpp |
diff --git a/tools/clang/BindMigrate/DiagnosticEmitter.cpp b/tools/clang/BindMigrate/DiagnosticEmitter.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..106176dde30fe7956aa8f6869e9f91c8ab8c7077 |
--- /dev/null |
+++ b/tools/clang/BindMigrate/DiagnosticEmitter.cpp |
@@ -0,0 +1,39 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "DiagnosticEmitter.h" |
+ |
+#include "clang/Basic/Diagnostic.h" |
+#include "clang/Frontend/CompilerInstance.h" |
+ |
+namespace clang { |
+ |
+DiagnosticEmitter::DiagnosticEmitter(CompilerInstance* instance, |
+ const std::string& name) |
+ : instance_(instance), |
+ diagnostic_(&instance_->getDiagnostics()) { |
+} |
+ |
+void DiagnosticEmitter::EmitWarning(SourceLocation loc, |
+ const char* raw_error) { |
+ FullSourceLoc full(loc, instance_->getSourceManager()); |
+ std::string err(name_); |
+ err += raw_error; |
+ Diagnostic::Level level = |
+ diagnostic_->getWarningsAsErrors() ? |
+ Diagnostic::Error : |
+ Diagnostic::Warning; |
+ unsigned id = diagnostic_->getCustomDiagID(level, err); |
+ diagnostic_->Report(full, id).Emit(); |
+} |
+ |
+void DiagnosticEmitter::EmitError(SourceLocation loc, const char* raw_error) { |
+ FullSourceLoc full(loc, instance_->getSourceManager()); |
+ std::string err(name_); |
+ err += raw_error; |
+ unsigned id = diagnostic_->getCustomDiagID(Diagnostic::Error, err); |
+ diagnostic_->Report(full, id).Emit(); |
+} |
+ |
+} // namespace clang |