diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2018-08-06 23:09:07 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2018-08-06 23:09:07 +0000 |
commit | 4ece68a0a8d2f788761b898f8142534a456d7dd5 (patch) | |
tree | cf1a79b1146ffa6f4c2aa8e02e1c58f620506792 /clang/include | |
parent | 08f3fe4fae9f54e796471e2afa7e2b11be2041bb (diff) | |
download | bcm5719-llvm-4ece68a0a8d2f788761b898f8142534a456d7dd5.tar.gz bcm5719-llvm-4ece68a0a8d2f788761b898f8142534a456d7dd5.zip |
[analyzer] Add ASTContext to CheckerManager
Some checkers require ASTContext. Having it in the constructor saves a
lot of boilerplate of having to pass it around.
Differential Revision: https://reviews.llvm.org/D50111
llvm-svn: 339079
Diffstat (limited to 'clang/include')
3 files changed, 10 insertions, 8 deletions
diff --git a/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h b/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h index ea2952b3b11..463c842ec5b 100644 --- a/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h +++ b/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h @@ -115,13 +115,14 @@ enum class ObjCMessageVisitKind { }; class CheckerManager { + ASTContext &Context; const LangOptions LangOpts; AnalyzerOptions &AOptions; CheckName CurrentCheckName; public: - CheckerManager(const LangOptions &langOpts, AnalyzerOptions &AOptions) - : LangOpts(langOpts), AOptions(AOptions) {} + CheckerManager(ASTContext &Context, AnalyzerOptions &AOptions) + : Context(Context), LangOpts(Context.getLangOpts()), AOptions(AOptions) {} ~CheckerManager(); @@ -134,6 +135,7 @@ public: const LangOptions &getLangOpts() const { return LangOpts; } AnalyzerOptions &getAnalyzerOptions() { return AOptions; } + ASTContext &getASTContext() { return Context; } using CheckerRef = CheckerBase *; using CheckerTag = const void *; diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h index 85369509efc..eb91f4b28b9 100644 --- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h +++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h @@ -46,14 +46,12 @@ class AnalysisManager : public BugReporterData { public: AnalyzerOptions &options; - AnalysisManager(ASTContext &ctx,DiagnosticsEngine &diags, - const LangOptions &lang, + AnalysisManager(ASTContext &ctx, DiagnosticsEngine &diags, const PathDiagnosticConsumers &Consumers, StoreManagerCreator storemgr, ConstraintManagerCreator constraintmgr, - CheckerManager *checkerMgr, - AnalyzerOptions &Options, - CodeInjector* injector = nullptr); + CheckerManager *checkerMgr, AnalyzerOptions &Options, + CodeInjector *injector = nullptr); ~AnalysisManager() override; diff --git a/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h b/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h index 216a2359efb..61709548aed 100644 --- a/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h +++ b/clang/include/clang/StaticAnalyzer/Frontend/CheckerRegistration.h @@ -10,6 +10,7 @@ #ifndef LLVM_CLANG_STATICANALYZER_FRONTEND_CHECKERREGISTRATION_H #define LLVM_CLANG_STATICANALYZER_FRONTEND_CHECKERREGISTRATION_H +#include "clang/AST/ASTContext.h" #include "clang/Basic/LLVM.h" #include <functional> #include <memory> @@ -25,7 +26,8 @@ namespace ento { class CheckerRegistry; std::unique_ptr<CheckerManager> createCheckerManager( - AnalyzerOptions &opts, const LangOptions &langOpts, + ASTContext &context, + AnalyzerOptions &opts, ArrayRef<std::string> plugins, ArrayRef<std::function<void(CheckerRegistry &)>> checkerRegistrationFns, DiagnosticsEngine &diags); |