compilerplugins/clang/salcall.cxx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
New commits: commit 50f35e5b65bf69d7b3f2b703c5367574db165196 Author: Stephan Bergmann <sberg...@redhat.com> Date: Wed Dec 20 13:15:08 2017 +0100 Fix for compilerplugins/clang/test/salcall.cxx with clang-cl Change-Id: I6e58b6bf0d10297ed3ac20de25c1eea42c9f2334 Reviewed-on: https://gerrit.libreoffice.org/46844 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Stephan Bergmann <sberg...@redhat.com> diff --git a/compilerplugins/clang/salcall.cxx b/compilerplugins/clang/salcall.cxx index 3ff786d2ee87..2c33008ae276 100644 --- a/compilerplugins/clang/salcall.cxx +++ b/compilerplugins/clang/salcall.cxx @@ -498,6 +498,9 @@ bool SalCall::isSalCallFunction(FunctionDecl const* functionDecl, SourceLocation } } +#if defined _WIN32 + auto const macroExpansion = SM.getExpansionLoc(endLoc); +#endif endLoc = SM.getSpellingLoc(endLoc); // Ctors/dtors/conversion functions don't have a return type, start searching for "SAL_CALL" @@ -515,7 +518,17 @@ bool SalCall::isSalCallFunction(FunctionDecl const* functionDecl, SourceLocation #endif startLoc = SM.getSpellingLoc(startLoc); -#if !defined _WIN32 +#if defined _WIN32 + if (macroRange.isValid() + && !compat::isPointWithin(SM, startLoc, macroRange.getBegin(), macroRange.getEnd())) + { + // endLoc is within a macro body but startLoc is not; two source ranges, first is from + // startLoc to the macro invocation, second is the leading part of the corresponding + // macro definition's replacement text: + ranges.emplace_back(startLoc, macroExpansion); + startLoc = macroRange.getBegin(); + } +#else // When the SAL_CALL macro expands to nothing, it may even precede the function // declaration's source range, so go back one token (unless the declaration is known to // start with a token that must precede a possible "SAL_CALL", like "virtual" or _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits