diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2020-07-02 21:12:04 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2020-07-02 23:27:05 +0200 |
commit | f4c126da920b06d273ddd375d7f77faa39f01cb5 (patch) | |
tree | e891d2fa5ff05e90faa37f3eac6356adbf899a83 /solenv | |
parent | 45504ca72e0f081de9e7cc4f1faf553c7361694d (diff) |
Improved loplugin:staticanonymous -> redundantstatic
...now also covering variables with internal linkage that don't need a redundant
"static". (Unlike with functions, with variables there are also cases that are
not in an unnamed namespace, hence the rename of the plugin.)
All the relevant changes across the code base have been done in the preceding
"Upcoming improved loplugin:staticanonymous -> redundantstatic" commits.
Ideally the changes would have been done with a rewriting plugin, but it can be
quite tedious in general to identify the correct occurrence of "static" that
must be removed, consider e.g.
struct { int init() { static int n; return n++; } int x = init(); } static
const a[10] = {};
However, it turned out that in all cases across the code base, the relevant
"static" was either at the start of the declaration or came after an initial
"const". So I temporarily changed the plugin with
> --- a/compilerplugins/clang/redundantstatic.cxx
> +++ b/compilerplugins/clang/redundantstatic.cxx
> @@ -59,7 +59,7 @@ class RedundantStatic
> }
> report(
> DiagnosticsEngine::Warning, "redundant 'static' keyword in unnamed namespace",
> - decl->getLocation())
> + decl->getBeginLoc())
> << decl->getSourceRange();
> return true;
> }
> @@ -73,7 +73,7 @@ class RedundantStatic
> DiagnosticsEngine::Warning,
> "non-inline variable of non-volatile const-qualified type is redundantly marked as"
> " 'static'",
> - decl->getLocation())
> + decl->getBeginLoc())
> << decl->getSourceRange();
> return true;
> }
to report the diagnostics at the start of the declarations (instead of at a more
natural place which is typically somewhere in the middle of the declaration),
compiled LO from within Emacs and then ran a function
> (defun doit ()
> (interactive)
> (while t
> (next-error)
> (with-current-buffer (window-buffer)
> (when (re-search-forward
> "\\=\\(\\<static\\>\\s *\\|\\(\\<const\\>\\)\\s +\\<static\\>\\)"
> nil t)
> (replace-match "\\2")))))
to do all the replacements. (Plus solenv/clang-format/reformat-formatted-files
where necessary.)
Change-Id: Ie7efc8e0593a407c390a6a7a08c81e547410f18a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97779
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'solenv')
-rw-r--r-- | solenv/clang-format/blacklist | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist index 65e2e76c035a..581b36c133f8 100644 --- a/solenv/clang-format/blacklist +++ b/solenv/clang-format/blacklist @@ -1686,6 +1686,7 @@ compilerplugins/clang/rangedforcopy.cxx compilerplugins/clang/redundantcast.cxx compilerplugins/clang/redundantinline.cxx compilerplugins/clang/redundantpointerops.cxx +compilerplugins/clang/redundantstatic.cxx compilerplugins/clang/refcounting.cxx compilerplugins/clang/rendercontext.cxx compilerplugins/clang/reservedid.cxx @@ -1698,7 +1699,6 @@ compilerplugins/clang/sharedvisitor/generator.cxx compilerplugins/clang/simplifybool.cxx compilerplugins/clang/singlevalfields.cxx compilerplugins/clang/staticaccess.cxx -compilerplugins/clang/staticanonymous.cxx compilerplugins/clang/staticmethods.cxx compilerplugins/clang/store/badvectorinit.cxx compilerplugins/clang/store/bodynotinblock.cxx |