[PATCH] D20053: [clang-tidy] Add misc-unnecessary-mutable check.
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Wed May 11 12:58:24 PDT 2016
aaron.ballman added a subscriber: aaron.ballman.
aaron.ballman added a comment.
One quick thought: we should probably have a test that includes a macro to make sure nothing explodes. e.g.,
#define FIELD(T, N) mutable T N
class C {
FIELD(int, RemoveMutable);
FIELD(int, KeepMutable)
public:
void haha() const {
KeepMutable = 12;
}
};
Not that I expect to run into this case often, but it would be good to ensure the check doesn't crash or attempt to modify the macro.
================
Comment at: clang-tidy/misc/UnnecessaryMutableCheck.cpp:194
@@ +193,3 @@
+void UnnecessaryMutableCheck::check(const MatchFinder::MatchResult &Result) {
+ const auto *MD = Result.Nodes.getNodeAs<FieldDecl>("field");
+ const auto *ClassMatch = dyn_cast<CXXRecordDecl>(MD->getParent());
----------------
Why MD; that's usually a method decl.
================
Comment at: clang-tidy/misc/UnnecessaryMutableCheck.cpp:200
@@ +199,3 @@
+ if (!MD->getDeclName() || ClassMatch->isDependentContext() ||
+ !MD->isMutable())
+ return;
----------------
I think this would be more useful to hoist into the matcher itself (which may mean adding a new AST matcher first, if there isn't already one).
http://reviews.llvm.org/D20053
More information about the cfe-commits
mailing list