summaryrefslogtreecommitdiff
path: root/dev-util/clazy/files/clazy-1.9-llvm12.patch
blob: 3862f40ad98129a709014d48470d5fb26ca059b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
From 2592a6e3393ebc75e16c91e606ad2015a16295c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christian=20Sch=C3=A4rf?= <c.schaerf@t-online.de>
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 <clang/Basic/SourceLocation.h>
 #include <clang/Basic/SourceManager.h>
 #include <clang/Frontend/FrontendDiagnostic.h>
+#include <clang/Lex/Lexer.h>
 #include <clang/Tooling/Core/Diagnostic.h>
 
 #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<llvm::MemoryBufferRef> 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 <clang/Basic/SourceManager.h>
-#include <clang/Lex/Lexer.h>
 #include <clang/Basic/SourceLocation.h>
 #include <clang/Basic/TokenKinds.h>
 #include <clang/Lex/Token.h>
@@ -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