[clang-tools-extra] r246209 - Expose language options to the checkers; disable UseNullptrCheck when not compiling in C++11 mode.
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 27 14:17:47 PDT 2015
Author: aaronballman
Date: Thu Aug 27 16:17:47 2015
New Revision: 246209
URL: http://llvm.org/viewvc/llvm-project?rev=246209&view=rev
Log:
Expose language options to the checkers; disable UseNullptrCheck when not compiling in C++11 mode.
Added:
clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.c
Modified:
clang-tools-extra/trunk/clang-tidy/ClangTidy.h
clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp
clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h
clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp
Modified: clang-tools-extra/trunk/clang-tidy/ClangTidy.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidy.h?rev=246209&r1=246208&r2=246209&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/ClangTidy.h (original)
+++ clang-tools-extra/trunk/clang-tidy/ClangTidy.h Thu Aug 27 16:17:47 2015
@@ -158,6 +158,8 @@ protected:
OptionsView Options;
/// \brief Returns the main file name of the current translation unit.
StringRef getCurrentMainFile() const { return Context->getCurrentFile(); }
+ /// \brief Returns the language options from the context.
+ LangOptions getLangOpts() const { return Context->getLangOpts(); }
};
class ClangTidyCheckFactories;
Modified: clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp?rev=246209&r1=246208&r2=246209&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp Thu Aug 27 16:17:47 2015
@@ -212,6 +212,7 @@ void ClangTidyContext::setCurrentFile(St
void ClangTidyContext::setASTContext(ASTContext *Context) {
DiagEngine->SetArgToStringFn(&FormatASTNodeDiagnosticArgument, Context);
+ LangOpts = Context->getLangOpts();
}
const ClangTidyGlobalOptions &ClangTidyContext::getGlobalOptions() const {
Modified: clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h?rev=246209&r1=246208&r2=246209&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h (original)
+++ clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h Thu Aug 27 16:17:47 2015
@@ -149,6 +149,9 @@ public:
/// \brief Sets ASTContext for the current translation unit.
void setASTContext(ASTContext *Context);
+ /// \brief Gets the language options from the AST context
+ LangOptions getLangOpts() const { return LangOpts; }
+
/// \brief Returns the name of the clang-tidy check which produced this
/// diagnostic ID.
StringRef getCheckName(unsigned DiagnosticID) const;
@@ -198,6 +201,8 @@ private:
ClangTidyOptions CurrentOptions;
std::unique_ptr<GlobList> CheckFilter;
+ LangOptions LangOpts;
+
ClangTidyStats Stats;
llvm::DenseMap<unsigned, std::string> CheckNamesByDiagnosticID;
Modified: clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp?rev=246209&r1=246208&r2=246209&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp Thu Aug 27 16:17:47 2015
@@ -453,7 +453,9 @@ void UseNullptrCheck::storeOptions(Clang
}
void UseNullptrCheck::registerMatchers(MatchFinder *Finder) {
- Finder->addMatcher(makeCastSequenceMatcher(), this);
+ // Only register the matcher for C++11.
+ if (getLangOpts().CPlusPlus11)
+ Finder->addMatcher(makeCastSequenceMatcher(), this);
}
void UseNullptrCheck::check(const MatchFinder::MatchResult &Result) {
Added: clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.c
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.c?rev=246209&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.c (added)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-nullptr.c Thu Aug 27 16:17:47 2015
@@ -0,0 +1,10 @@
+// RUN: clang-tidy %s -checks=-*,modernize-use-nullptr -- | count 0
+
+// Note: this test expects no diagnostics, but FileCheck cannot handle that,
+// hence the use of | count 0.
+
+#define NULL 0
+void f(void) {
+ char *str = NULL; // ok
+ (void)str;
+}
More information about the cfe-commits
mailing list