Expose language options to the checkers; disable UseNullptrCheck when not compiling in C++11 mode.

llvm-svn: 246209
This commit is contained in:
Aaron Ballman 2015-08-27 21:17:47 +00:00
parent 199fa13fff
commit ed916fa458
5 changed files with 21 additions and 1 deletions

View File

@ -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;

View File

@ -212,6 +212,7 @@ void ClangTidyContext::setCurrentFile(StringRef File) {
void ClangTidyContext::setASTContext(ASTContext *Context) {
DiagEngine->SetArgToStringFn(&FormatASTNodeDiagnosticArgument, Context);
LangOpts = Context->getLangOpts();
}
const ClangTidyGlobalOptions &ClangTidyContext::getGlobalOptions() const {

View File

@ -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;

View File

@ -453,7 +453,9 @@ void UseNullptrCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
}
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) {

View File

@ -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;
}