compilerplugins/clang/noexcept.cxx | 41 ++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 20 deletions(-)
New commits: commit 92511657969ff93abd31a1368082d3c4dc42d479 Author: Stephan Bergmann <sberg...@redhat.com> AuthorDate: Tue May 18 14:47:42 2021 +0200 Commit: Stephan Bergmann <sberg...@redhat.com> CommitDate: Wed May 19 07:27:59 2021 +0200 Adapt loplugin:noexcept to system macro BEGIN_COM_MAP (clang-cl) ...to silence warnings like > In file included from C:/lo-clang/core/extensions/source/activex/SOComWindowPeer.cxx:27: > C:/lo-clang/core/extensions/source/activex/SOComWindowPeer.h(57,1): error: Replace legacy dynamic 'throw ()' exception specification with 'noexcept' [loplugin:noexcept] > BEGIN_COM_MAP(SOComWindowPeer) > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > C:/PROGRA~2/MIB055~1/2019/COMMUN~1/VC/Tools/MSVC/1428~1.299/atlmfc/include\atlcom.h(2204,130): note: expanded from macro 'BEGIN_COM_MAP' > static HRESULT WINAPI _Cache(_In_ void* pv, _In_ REFIID iid, _COM_Outptr_result_maybenull_ void** ppvObject, _In_ DWORD_PTR dw) throw()\ > ^~~~~~~ Change-Id: Iee2619e000963a419b757235d86d7f87944ed46a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115748 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sberg...@redhat.com> diff --git a/compilerplugins/clang/noexcept.cxx b/compilerplugins/clang/noexcept.cxx index ae0bfdf95207..de956839e827 100644 --- a/compilerplugins/clang/noexcept.cxx +++ b/compilerplugins/clang/noexcept.cxx @@ -41,33 +41,34 @@ public: return true; } auto const r = tloc.getExceptionSpecRange(); - auto const repl = isInUnoIncludeFile(r.getBegin()) ? "SAL_NOEXCEPT" : "noexcept"; - if (rewriter != nullptr) + auto r2 = r; + auto l1 = r.getBegin(); + while (compiler.getSourceManager().isMacroArgExpansion(l1)) + { + l1 = compiler.getSourceManager().getImmediateMacroCallerLoc(l1); + } + if (compiler.getSourceManager().isMacroBodyExpansion(l1)) { - auto r2 = r; - auto l1 = r.getBegin(); - while (compiler.getSourceManager().isMacroArgExpansion(l1)) + auto l2 = r.getEnd(); + while (compiler.getSourceManager().isMacroArgExpansion(l2)) { - l1 = compiler.getSourceManager().getImmediateMacroCallerLoc(l1); + l2 = compiler.getSourceManager().getImmediateMacroCallerLoc(l2); } - if (compiler.getSourceManager().isMacroBodyExpansion(l1)) + if (compiler.getSourceManager().isMacroBodyExpansion(l2)) { - auto l2 = r.getEnd(); - while (compiler.getSourceManager().isMacroArgExpansion(l2)) + //TODO: check l1, l2 are in same macro body expansion + auto const spl = compiler.getSourceManager().getSpellingLoc(l1); + if (ignoreLocation(spl)) { - l2 = compiler.getSourceManager().getImmediateMacroCallerLoc(l2); - } - if (compiler.getSourceManager().isMacroBodyExpansion(l2)) - { - //TODO: check l1, l2 are in same macro body expansion - r2 = { compiler.getSourceManager().getSpellingLoc(l1), - compiler.getSourceManager().getSpellingLoc(l2) }; + return true; } + r2 = { spl, compiler.getSourceManager().getSpellingLoc(l2) }; } - if (replaceText(r2, repl)) - { - return true; - } + } + auto const repl = isInUnoIncludeFile(r.getBegin()) ? "SAL_NOEXCEPT" : "noexcept"; + if (rewriter != nullptr && replaceText(r2, repl)) + { + return true; } report(DiagnosticsEngine::Warning, "Replace legacy dynamic 'throw ()' exception specification with '%0'", r.getBegin()) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits