diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2019-10-10 11:38:18 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2019-10-10 13:02:40 +0200 |
commit | bfaf25f59352eb81c7f53c741995a82021f4b0ff (patch) | |
tree | 2f42915362542c93a9ebdebdeae088e73c5eed6f | |
parent | 06767a5394f1dfba71c4f0a2a07daa5664bdbd01 (diff) |
Silence -Werror,-Wunused-variable (clang-cl)
Required a workaround for loplugin:indentation, until
<https://reviews.llvm.org/D68581> "Include leading attributes in DeclStmt's
SourceRange" lands in Clang.
Change-Id: I7192969d40fa4c50bbd603d059532b9344865248
Reviewed-on: https://gerrit.libreoffice.org/80596
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
-rw-r--r-- | compilerplugins/clang/indentation.cxx | 16 | ||||
-rw-r--r-- | compilerplugins/clang/test/indentation.cxx | 5 | ||||
-rw-r--r-- | xmlsecurity/source/gpg/SecurityEnvironment.cxx | 2 |
3 files changed, 22 insertions, 1 deletions
diff --git a/compilerplugins/clang/indentation.cxx b/compilerplugins/clang/indentation.cxx index eaa795e6765a..57fbd1b382a0 100644 --- a/compilerplugins/clang/indentation.cxx +++ b/compilerplugins/clang/indentation.cxx @@ -120,6 +120,22 @@ bool Indentation::VisitCompoundStmt(CompoundStmt const* compoundStmt) // these are always weirdly indented if (isa<LabelStmt>(stmt)) continue; + // At least until Clang 9.0.0, getBeginLoc of a VarDecl DeclStmt with an UnusedAttr points + // after the attr (and getLocation of the attr would point at "maybe_unused", not at the + // leading "[["), so just ignore those at least for now: + if (auto const declStmt = dyn_cast<DeclStmt>(stmt)) + { + if (declStmt->decl_begin() != declStmt->decl_end()) + { + if (auto const decl = dyn_cast<VarDecl>(*declStmt->decl_begin())) + { + if (decl->hasAttr<UnusedAttr>()) + { + continue; + } + } + } + } auto stmtLoc = compat::getBeginLoc(stmt); diff --git a/compilerplugins/clang/test/indentation.cxx b/compilerplugins/clang/test/indentation.cxx index 685ec7e17e1c..3a76c2c97e2f 100644 --- a/compilerplugins/clang/test/indentation.cxx +++ b/compilerplugins/clang/test/indentation.cxx @@ -44,4 +44,9 @@ void top1(int x) { foo(); } +void attr() { + [[maybe_unused]] int i = foo(); + foo(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/xmlsecurity/source/gpg/SecurityEnvironment.cxx b/xmlsecurity/source/gpg/SecurityEnvironment.cxx index 468738f34c33..290529bc8ae6 100644 --- a/xmlsecurity/source/gpg/SecurityEnvironment.cxx +++ b/xmlsecurity/source/gpg/SecurityEnvironment.cxx @@ -51,7 +51,7 @@ SecurityEnvironmentGpg::SecurityEnvironmentGpg() // in instdir/program/python-core-x.y.z/bin, while gpgme-w32spawn.exe is in instdir/program. // If we can't find gpgme-w32spawn.exe in the current executable location, then try to find // the spawn executable, and inform gpgme about actual location using gpgme_set_global_flag. - static bool bSpawnPathInitialized = [] { + [[maybe_unused]] static bool bSpawnPathInitialized = [] { auto accessUrl = [](const INetURLObject& url) { osl::File file(url.GetMainURL(INetURLObject::DecodeMechanism::NONE)); return file.open(osl_File_OpenFlag_Read) == osl::FileBase::E_None; |