compilerplugins/clang/compat.hxx | 18 ++++++++++++++++++ compilerplugins/clang/salbool.cxx | 8 ++++---- 2 files changed, 22 insertions(+), 4 deletions(-)
New commits: commit 8d934b73ccac14c76f6596c33b087e22ba82be09 Author: Stephan Bergmann <sberg...@redhat.com> Date: Thu Apr 21 12:05:48 2016 +0200 Better fix for 13758a3d154e8e450fdfe8bcdeb6b3a03996c53a "SourceManager::isMacroArgExpansion has only one param in older Clang", which caused false positives like warning about sal_False in CPPUNIT_ASSERT_EQUAL(guard.p->m1, sal_False); in cppu/qa/cppumaker/test_cppumaker.cxx Change-Id: I1c5a67527aef381e336d71cb8fefbb87961bbf96 diff --git a/compilerplugins/clang/compat.hxx b/compilerplugins/clang/compat.hxx index 6c1152c..cd3cb3a 100644 --- a/compilerplugins/clang/compat.hxx +++ b/compilerplugins/clang/compat.hxx @@ -256,6 +256,24 @@ inline void addPPCallbacks( #endif } +inline bool isMacroArgExpansion( + clang::CompilerInstance& compiler, clang::SourceLocation location, + clang::SourceLocation * startLocation) +{ +#if CLANG_VERSION >= 30900 + return compiler.getSourceManager().isMacroArgExpansion( + location, startLocation); +#else + bool b = compiler.getSourceManager().isMacroArgExpansion(location); + if (b) { + startLocation* = compiler.getSourceManager() + .getSLocEntry(compiler.getSourceManager().getFileID(location)) + .getExpansion().getExpansionLocStart(); + } + return b; +#endif +} + inline bool isMacroBodyExpansion(clang::CompilerInstance& compiler, clang::SourceLocation location) { #if CLANG_VERSION >= 30300 diff --git a/compilerplugins/clang/salbool.cxx b/compilerplugins/clang/salbool.cxx index ed61b2d..6b3d8df 100644 --- a/compilerplugins/clang/salbool.cxx +++ b/compilerplugins/clang/salbool.cxx @@ -284,12 +284,12 @@ bool SalBool::VisitCStyleCastExpr(CStyleCastExpr * expr) { compiler.getSourceManager().getImmediateMacroCallerLoc( loc)); if (!isFromCIncludeFile(callLoc)) { - if (compiler.getSourceManager().isMacroArgExpansion( - expr->getLocStart()) + SourceLocation argLoc; + if (compat::isMacroArgExpansion( + compiler, expr->getLocStart(), &argLoc) //TODO: check its the complete (first) arg to the macro && (Lexer::getImmediateMacroName( - expr->getLocStart(), - compiler.getSourceManager(), + argLoc, compiler.getSourceManager(), compiler.getLangOpts()) == "CPPUNIT_ASSERT_EQUAL")) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits