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..0383b7d4bb1ab21c20254d503f59182b7c8e5690 |
--- /dev/null |
+++ b/tools/clang/BindMigrate/DiagnosticEmitter.cpp |
@@ -0,0 +1,35 @@ |
+#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 |