From 5d6fc5846e5df8aac2a1ba1454bc2f340c577f7f Mon Sep 17 00:00:00 2001 From: eidheim Date: Tue, 30 Jun 2015 21:52:25 +0200 Subject: [PATCH] Added severity_spelling to clang::Diagnostic. --- src/CMakeLists.txt | 1 + src/Diagnostic.cc | 18 ++++++++++++++++++ src/Diagnostic.h | 5 ++++- src/TranslationUnit.cc | 1 + 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/Diagnostic.cc diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 042a89c..af536e8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -40,6 +40,7 @@ set(cc_files Token.cc Tokens.cc TranslationUnit.cc + Diagnostic.cc ) add_library(${project_name} SHARED ${header_files} ${cc_files}) diff --git a/src/Diagnostic.cc b/src/Diagnostic.cc new file mode 100644 index 0000000..e0d5ec9 --- /dev/null +++ b/src/Diagnostic.cc @@ -0,0 +1,18 @@ +#include "Diagnostic.h" + +const std::string clang::Diagnostic::get_severity_spelling(unsigned severity) { + switch(severity) { + case 0: + return "Ignored"; + case 1: + return "Note"; + case 2: + return "Warning"; + case 3: + return "Error"; + case 4: + return "Fatal"; + default: + return ""; + } +} \ No newline at end of file diff --git a/src/Diagnostic.h b/src/Diagnostic.h index 04660f9..ce4cf28 100644 --- a/src/Diagnostic.h +++ b/src/Diagnostic.h @@ -1,6 +1,6 @@ #ifndef DIAGNOSTIC_H_ #define DIAGNOSTIC_H_ -#include "TranslationUnit.h" +#include namespace clang { class Diagnostic { @@ -9,8 +9,11 @@ namespace clang { public: unsigned line, column, offset; }; + + static const std::string get_severity_spelling(unsigned severity); unsigned severity; + std::string severity_spelling; std::string spelling; std::string path; LocationData start_location, end_location; diff --git a/src/TranslationUnit.cc b/src/TranslationUnit.cc index 71c535e..63d52e0 100644 --- a/src/TranslationUnit.cc +++ b/src/TranslationUnit.cc @@ -98,6 +98,7 @@ std::vector clang::TranslationUnit::get_diagnostics() { auto& diagnostic=diagnostics.back(); diagnostic.severity=clang_getDiagnosticSeverity(clang_diagnostic); + diagnostic.severity_spelling=clang::Diagnostic::get_severity_spelling(diagnostic.severity); diagnostic.spelling=clang_getCString(clang_getDiagnosticSpelling(clang_diagnostic)); SourceLocation location(clang_getDiagnosticLocation(clang_diagnostic)); std::string path;