[Libreoffice-commits] core.git: compilerplugins/clang
Stephan Bergmann
sbergman at redhat.com
Fri Jan 27 09:47:58 UTC 2017
compilerplugins/clang/dynexcspec.cxx | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
New commits:
commit 1a90a23d9fdcc4344f459b183bbafb8ba7b5bcc0
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Fri Jan 27 10:47:16 2017 +0100
Enable loplugin:dynexcspec rewriting mode
Change-Id: I73404287c387a36e224683f75e967d51d911175b
diff --git a/compilerplugins/clang/dynexcspec.cxx b/compilerplugins/clang/dynexcspec.cxx
index b06245e..b5db5df 100644
--- a/compilerplugins/clang/dynexcspec.cxx
+++ b/compilerplugins/clang/dynexcspec.cxx
@@ -58,9 +58,23 @@ public:
" no corresponding documentation comment"),
decl->getLocation())
<< decl->getSourceRange();
- return true;
}
-#if 0 // will be enabled later
+ if (rewriter != nullptr) {
+ if (!(decl->isDefined() || decl->isPure())) {
+ return true;
+ }
+ if (auto m = dyn_cast<CXXMethodDecl>(decl)) {
+ for (auto i = m->begin_overridden_methods();
+ i != m->end_overridden_methods(); ++i)
+ {
+ auto proto2 = (*i)->getType()->getAs<FunctionProtoType>();
+ assert(proto2 != nullptr);
+ if (proto2->getExceptionSpecType() == EST_Dynamic) {
+ return true;
+ }
+ }
+ }
+ }
bool dtor = isa<CXXDestructorDecl>(decl);
auto source = decl->getExceptionSpecSourceRange();
if (rewriter != nullptr && source.isValid()) {
@@ -93,6 +107,9 @@ public:
}
}
if (!s.empty() && s != "\\") {
+ if (s.startswith("//")) {
+ beg = source.getBegin();
+ }
break;
}
beg = prev;
@@ -110,7 +127,6 @@ public:
: "remove dynamic exception specification"),
source.isValid() ? source.getBegin() : decl->getLocation())
<< (source.isValid() ? source : decl->getSourceRange());
-#endif
return true;
}
More information about the Libreoffice-commits
mailing list