Browse Source

Removed get_severity_spelling and now stores diagnostic severity as enum class

merge-requests/37/head
eidheim 8 years ago
parent
commit
e8f8a04f98
  1. 20
      src/diagnostic.cc
  2. 13
      src/diagnostic.h
  3. 2
      tests/diagnostics_test.cc

20
src/diagnostic.cc

@ -4,8 +4,7 @@
#include "utility.h" #include "utility.h"
clangmm::Diagnostic::Diagnostic(CXTranslationUnit& cx_tu, CXDiagnostic& cx_diagnostic) { clangmm::Diagnostic::Diagnostic(CXTranslationUnit& cx_tu, CXDiagnostic& cx_diagnostic) {
severity=clang_getDiagnosticSeverity(cx_diagnostic); severity=static_cast<Severity>(clang_getDiagnosticSeverity(cx_diagnostic));
severity_spelling=get_severity_spelling(severity);
spelling=to_string(clang_getDiagnosticSpelling(cx_diagnostic)); spelling=to_string(clang_getDiagnosticSpelling(cx_diagnostic));
SourceLocation location(clang_getDiagnosticLocation(cx_diagnostic)); SourceLocation location(clang_getDiagnosticLocation(cx_diagnostic));
@ -23,20 +22,3 @@ clangmm::Diagnostic::Diagnostic(CXTranslationUnit& cx_tu, CXDiagnostic& cx_diagn
fix_its.emplace_back(source, SourceRange(fix_it_range).get_offsets()); fix_its.emplace_back(source, SourceRange(fix_it_range).get_offsets());
} }
} }
const std::string clangmm::Diagnostic::get_severity_spelling(unsigned severity) {
switch(severity) {
case CXDiagnostic_Ignored:
return "Ignored";
case CXDiagnostic_Note:
return "Note";
case CXDiagnostic_Warning:
return "Warning";
case CXDiagnostic_Error:
return "Error";
case CXDiagnostic_Fatal:
return "Fatal";
default:
return "";
}
}

13
src/diagnostic.h

@ -10,6 +10,14 @@ namespace clangmm {
friend class TranslationUnit; friend class TranslationUnit;
Diagnostic(CXTranslationUnit& cx_tu, CXDiagnostic& cx_diagnostic); Diagnostic(CXTranslationUnit& cx_tu, CXDiagnostic& cx_diagnostic);
public: public:
enum class Severity {
Ignored = 0,
Note,
Warning,
Error,
Fatal
};
class FixIt { class FixIt {
public: public:
FixIt(const std::string &source, const std::pair<clangmm::Offset, clangmm::Offset> &offsets): FixIt(const std::string &source, const std::pair<clangmm::Offset, clangmm::Offset> &offsets):
@ -18,10 +26,7 @@ namespace clangmm {
std::pair<clangmm::Offset, clangmm::Offset> offsets; std::pair<clangmm::Offset, clangmm::Offset> offsets;
}; };
static const std::string get_severity_spelling(unsigned severity); Severity severity;
unsigned severity;
std::string severity_spelling;
std::string spelling; std::string spelling;
std::string path; std::string path;
std::pair<clangmm::Offset, clangmm::Offset> offsets; std::pair<clangmm::Offset, clangmm::Offset> offsets;

2
tests/diagnostics_test.cc

@ -27,5 +27,5 @@ int main() {
auto diagnostics=tu.get_diagnostics(); auto diagnostics=tu.get_diagnostics();
assert(diagnostics.size()>0); assert(diagnostics.size()>0);
assert(!diagnostics[0].spelling.empty()); assert(!diagnostics[0].spelling.empty());
assert(diagnostics[0].severity==3); assert(diagnostics[0].severity==clangmm::Diagnostic::Severity::Error);
} }

Loading…
Cancel
Save