#include "Diagnostic.h" #include "SourceLocation.h" #include "Tokens.h" #include "Utility.h" clangmm::Diagnostic::Diagnostic(CXTranslationUnit& cx_tu, CXDiagnostic& cx_diagnostic) { severity=clang_getDiagnosticSeverity(cx_diagnostic); severity_spelling=get_severity_spelling(severity); spelling=to_string(clang_getDiagnosticSpelling(cx_diagnostic)); SourceLocation location(clang_getDiagnosticLocation(cx_diagnostic)); path=location.get_path(); auto offset=location.get_offset(); auto corrected_location=SourceLocation(cx_tu, path.c_str(), offset.line, offset.index); // to avoid getting macro tokens Tokens tokens(cx_tu, SourceRange(corrected_location, corrected_location), false); if(tokens.size()==1) offsets={offset, tokens.begin()->get_source_range().get_offsets().second}; unsigned num_fix_its=clang_getDiagnosticNumFixIts(cx_diagnostic); for(unsigned c=0;c