Author: aaronballman Date: Fri Aug 28 08:20:46 2015 New Revision: 246298 URL: http://llvm.org/viewvc/llvm-project?rev=246298&view=rev Log: Reapplying r246209, which exposed language options to the checkers. This time disable UseNullptrCheck when not compiling in C++ mode, but still allow in C++11 mode since it's likely the user wishes to modernize their code.
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=246298&r1=246297&r2=246298&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/ClangTidy.h (original) +++ clang-tools-extra/trunk/clang-tidy/ClangTidy.h Fri Aug 28 08:20:46 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=246298&r1=246297&r2=246298&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.cpp Fri Aug 28 08:20:46 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=246298&r1=246297&r2=246298&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h (original) +++ clang-tools-extra/trunk/clang-tidy/ClangTidyDiagnosticConsumer.h Fri Aug 28 08:20:46 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=246298&r1=246297&r2=246298&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/UseNullptrCheck.cpp Fri Aug 28 08:20:46 2015 @@ -453,7 +453,11 @@ void UseNullptrCheck::storeOptions(Clang } void UseNullptrCheck::registerMatchers(MatchFinder *Finder) { - Finder->addMatcher(makeCastSequenceMatcher(), this); + // Only register the matcher for C++. Because this checker is used for + // modernization, it is reasonable to run it on any C++ standard with the + // assumption the user is trying to modernize their codebase. + if (getLangOpts().CPlusPlus) + 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=246298&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 Fri Aug 28 08:20:46 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; +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits