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

Reply via email to