Browse Source

Added fix its to diagnostics.

merge-requests/37/head
eidheim 10 years ago
parent
commit
37795c7515
  1. 8
      src/Diagnostic.cc
  2. 7
      src/Diagnostic.h

8
src/Diagnostic.cc

@ -14,6 +14,14 @@ clang::Diagnostic::Diagnostic(CXTranslationUnit& cx_tu, CXDiagnostic& cx_diagnos
clang::Tokens tokens(cx_tu, SourceRange(start_location, start_location)); clang::Tokens tokens(cx_tu, SourceRange(start_location, start_location));
if(tokens.size()==1) if(tokens.size()==1)
offsets={start_offset, tokens.begin()->offsets.second}; offsets={start_offset, tokens.begin()->offsets.second};
unsigned num_fix_its=clang_getDiagnosticNumFixIts(cx_diagnostic);
for(unsigned c=0;c<num_fix_its;c++) {
CXSourceRange fix_it_range;
fix_its.emplace_back();
fix_its.back().string=clang::to_string(clang_getDiagnosticFixIt(cx_diagnostic, c, &fix_it_range));
fix_its.back().offsets=clang::SourceRange(fix_it_range).get_offsets();
}
} }
const std::string clang::Diagnostic::get_severity_spelling(unsigned severity) { const std::string clang::Diagnostic::get_severity_spelling(unsigned severity) {

7
src/Diagnostic.h

@ -10,6 +10,12 @@ namespace clang {
friend class TranslationUnit; friend class TranslationUnit;
Diagnostic(CXTranslationUnit& cx_tu, CXDiagnostic& cx_diagnostic); Diagnostic(CXTranslationUnit& cx_tu, CXDiagnostic& cx_diagnostic);
public: public:
class FixIt {
public:
std::string string;
std::pair<clang::Offset, clang::Offset> offsets;
};
static const std::string get_severity_spelling(unsigned severity); static const std::string get_severity_spelling(unsigned severity);
unsigned severity; unsigned severity;
@ -17,6 +23,7 @@ namespace clang {
std::string spelling; std::string spelling;
std::string path; std::string path;
std::pair<clang::Offset, clang::Offset> offsets; std::pair<clang::Offset, clang::Offset> offsets;
std::vector<FixIt> fix_its;
}; };
} }

Loading…
Cancel
Save