diff options
| author | Edwin Vane <edwin.vane@intel.com> | 2013-05-16 14:55:05 +0000 |
|---|---|---|
| committer | Edwin Vane <edwin.vane@intel.com> | 2013-05-16 14:55:05 +0000 |
| commit | 799ad8e212fd619a1b740e93ef448c948b1cdbb3 (patch) | |
| tree | e06fdc8fa926a2fb257ddff72a48583c4e65364b /clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp | |
| parent | 1373c5cd6dc5fe0c4e8f22e7ddb28fd3dc5cb493 (diff) | |
| download | bcm5719-llvm-799ad8e212fd619a1b740e93ef448c948b1cdbb3.tar.gz bcm5719-llvm-799ad8e212fd619a1b740e93ef448c948b1cdbb3.zip | |
cpp11-migrate: Check for valid NULL macros from macro arg expansions
The recent improvement to the Use Nullptr Transform for macro arg
expansions wasn't testing that only allowed NULL macros used in macro
args can be transformed. This revision replaces a TODO to that effect.
Fixes PR15955.
llvm-svn: 182014
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp')
| -rw-r--r-- | clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp b/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp index ac4b8e493b2..38e44d21e23 100644 --- a/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp +++ b/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp @@ -286,10 +286,16 @@ private: const SrcMgr::SLocEntry *E = &SM.getSLocEntry(LocInfo.first); const SrcMgr::ExpansionInfo &Expansion = E->getExpansion(); + SourceLocation OldArgLoc = ArgLoc; ArgLoc = Expansion.getExpansionLocStart(); if (!Expansion.isMacroArgExpansion()) { - // TODO: Insert test for user-defined null macro here. - return MacroLoc.isFileID(); + if (!MacroLoc.isFileID()) + return false; + + StringRef Name = + Lexer::getImmediateMacroName(OldArgLoc, SM, Context.getLangOpts()); + return std::find(UserNullMacros.begin(), UserNullMacros.end(), Name) != + UserNullMacros.end(); } MacroLoc = SM.getImmediateExpansionRange(ArgLoc).first; |

