return JsonObj;
}
-void WriteJSON(std::string JsonPath,
- llvm::StringMap<StringRef> const &ClassInheritance,
- llvm::StringMap<std::vector<StringRef>> const &ClassesInClade,
- llvm::StringMap<ClassData> const &ClassEntries) {
+void WriteJSON(std::string JsonPath, llvm::json::Object &&ClassInheritance,
+ llvm::json::Object &&ClassesInClade,
+ llvm::json::Object &&ClassEntries) {
llvm::json::Object JsonObj;
using llvm::json::toJSON;
- JsonObj["classInheritance"] = ::toJSON(ClassInheritance);
- JsonObj["classesInClade"] = ::toJSON(ClassesInClade);
- JsonObj["classEntries"] = ::toJSON(ClassEntries);
+ JsonObj["classInheritance"] = std::move(ClassInheritance);
+ JsonObj["classesInClade"] = std::move(ClassesInClade);
+ JsonObj["classEntries"] = std::move(ClassEntries);
std::error_code EC;
llvm::raw_fd_ostream JsonOut(JsonPath, EC, llvm::sys::fs::F_Text);
}
void ASTSrcLocProcessor::generate() {
- WriteJSON(JsonPath, ClassInheritance, ClassesInClade, ClassEntries);
+ WriteJSON(JsonPath, ::toJSON(ClassInheritance), ::toJSON(ClassesInClade),
+ ::toJSON(ClassEntries));
}
+void ASTSrcLocProcessor::generateEmpty() { WriteJSON(JsonPath, {}, {}, {}); }
+
std::vector<std::string>
CaptureMethods(std::string TypeString, const clang::CXXRecordDecl *ASTClass,
const MatchFinder::MatchResult &Result) {
public:\r
ASTSrcLocGenerationAction() : Processor(JsonOutputPath) {}\r
\r
- ~ASTSrcLocGenerationAction() { Processor.generate(); }\r
+ void ExecuteAction() override {\r
+ clang::ASTFrontendAction::ExecuteAction();\r
+ if (getCompilerInstance().getDiagnostics().getNumErrors() > 0)\r
+ Processor.generateEmpty();\r
+ else\r
+ Processor.generate();\r
+ }\r
\r
std::unique_ptr<clang::ASTConsumer>\r
CreateASTConsumer(clang::CompilerInstance &Compiler,\r