From 2592a6e3393ebc75e16c91e606ad2015a16295c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Sch=C3=A4rf?= Date: Sat, 23 Jan 2021 15:34:10 +0100 Subject: [PATCH] Fix build with Clang 12 Required due to Clang changes https://github.com/llvm/llvm-project/commit/b3eff6b7bb31e7ef059a3d238de138849839fbbd and https://github.com/llvm/llvm-project/commit/d758f79e5d381bd4f5122193a9538d89c907c812 --- src/SourceCompatibilityHelpers.h | 26 ++++++++++++++++++++++++++ src/SuppressionManager.cpp | 5 ++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/SourceCompatibilityHelpers.h b/src/SourceCompatibilityHelpers.h index 4db141ab..1737d5a5 100644 --- a/src/SourceCompatibilityHelpers.h +++ b/src/SourceCompatibilityHelpers.h @@ -29,6 +29,7 @@ #include #include #include +#include #include #if defined(CLAZY_USES_BOOST_REGEX) @@ -103,6 +104,31 @@ inline clang::tooling::Replacements& DiagnosticFix(clang::tooling::Diagnostic &d #endif } +inline auto getBuffer(const clang::SourceManager &sm, clang::FileID id, bool *invalid) +{ +#if LLVM_VERSION_MAJOR >= 12 + auto buffer = sm.getBufferOrNone(id); + *invalid = !buffer.hasValue(); + return buffer; +#else + return sm.getBuffer(id, invalid); +#endif +} + +#if LLVM_VERSION_MAJOR >= 12 +inline clang::Lexer getLexer(clang::FileID id, llvm::Optional inputFile, + const clang::SourceManager &sm, const clang::LangOptions &lo) +{ + return clang::Lexer(id, inputFile.getValue(), sm, lo); +} +#else +inline clang::Lexer getLexer(clang::FileID id, const llvm::MemoryBuffer *inputFile, + const clang::SourceManager &sm, const clang::LangOptions &lo) +{ + return clang::Lexer(id, inputFile, sm, lo); +} +#endif + } #endif diff --git a/src/SuppressionManager.cpp b/src/SuppressionManager.cpp index 9d774ea6..9881388d 100644 --- a/src/SuppressionManager.cpp +++ b/src/SuppressionManager.cpp @@ -24,7 +24,6 @@ #include "clazy_stl.h" #include -#include #include #include #include @@ -84,7 +83,7 @@ void SuppressionManager::parseFile(FileID id, const SourceManager &sm, const cla Suppressions &suppressions = (*it).second; bool invalid = false; - auto buffer = sm.getBuffer(id, &invalid); + auto buffer = clazy::getBuffer(sm, id, &invalid); if (invalid) { llvm::errs() << "SuppressionManager::parseFile: Invalid buffer "; if (buffer) @@ -92,7 +91,7 @@ void SuppressionManager::parseFile(FileID id, const SourceManager &sm, const cla return; } - Lexer lexer(id, buffer, sm, lo); + auto lexer = clazy::getLexer(id, buffer, sm, lo); lexer.SetCommentRetentionState(true); Token token; -- GitLab