16 clang::DiagnosticConsumer::~DiagnosticConsumer() {}
35 const char *levelName;
36 if (level == clang::DiagnosticsEngine::Note)
38 else if (level == clang::DiagnosticsEngine::Warning)
39 levelName =
"warning";
40 else if (level == clang::DiagnosticsEngine::Error
41 || level == clang::DiagnosticsEngine::Fatal)
49 llvm::SmallString<64> location;
50 if (diagnostic.hasSourceManager() && diagnostic.getLocation().isValid())
52 auto &sourceManager = diagnostic.getSourceManager();
53 auto loc = sourceManager.getFileLoc(diagnostic.getLocation());
55 auto filename = sourceManager.getFilename(loc);
58 if ((level == clang::DiagnosticsEngine::Note || level == clang::DiagnosticsEngine::Warning)
59 && (filename.find(
"/Vuo.framework/Frameworks/llvm.framework/") != llvm::StringRef::npos
60 || filename.find(
"/Vuo.framework/Headers/macos/") != llvm::StringRef::npos
61 || filename.find(
"/.conan/data/") != llvm::StringRef::npos
62 || filename.find(
"/Applications/Xcode.app/") != llvm::StringRef::npos))
65 llvm::raw_svector_ostream oss(location);
66 loc.print(oss, sourceManager);
69 llvm::SmallString<64> message;
70 diagnostic.FormatDiagnostic(message);
72 VUserLog(
"%s: %s: %s", levelName, location.c_str(), message.c_str());