summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2014-06-02 15:22:22 +0000
committerDaniel Jasper <djasper@google.com>2014-06-02 15:22:22 +0000
commit88996755cb7454d575ad337cf8fcbd08762728fc (patch)
tree2e64293feacddcbfb2f92afa303a30d88466df92 /clang-tools-extra
parentb1415c46fb5859d29ebd04bf78bc542881a590e7 (diff)
downloadbcm5719-llvm-88996755cb7454d575ad337cf8fcbd08762728fc.tar.gz
bcm5719-llvm-88996755cb7454d575ad337cf8fcbd08762728fc.zip
clang-tidy: Extend the use-override check to understand 'final'.
llvm-svn: 210031
Diffstat (limited to 'clang-tools-extra')
-rw-r--r--clang-tools-extra/clang-tidy/misc/UseOverride.cpp8
-rw-r--r--clang-tools-extra/test/clang-tidy/use-override.cpp19
2 files changed, 24 insertions, 3 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/UseOverride.cpp b/clang-tools-extra/clang-tidy/misc/UseOverride.cpp
index 628c20f4a22..b2dc912b44c 100644
--- a/clang-tools-extra/clang-tidy/misc/UseOverride.cpp
+++ b/clang-tools-extra/clang-tidy/misc/UseOverride.cpp
@@ -65,8 +65,9 @@ void UseOverride::check(const MatchFinder::MatchResult &Result) {
!Method->isVirtualAsWritten())
return; // Nothing to do.
- DiagnosticBuilder Diag = diag(Method->getLocation(),
- "Prefer using 'override' instead of 'virtual'");
+ DiagnosticBuilder Diag =
+ diag(Method->getLocation(),
+ "Prefer using 'override' or 'final' instead of 'virtual'");
CharSourceRange FileRange =
Lexer::makeFileCharRange(CharSourceRange::getTokenRange(
@@ -83,7 +84,8 @@ void UseOverride::check(const MatchFinder::MatchResult &Result) {
Result.Context->getLangOpts());
// Add 'override' on inline declarations that don't already have it.
- if (Method->getAttr<clang::OverrideAttr>() == nullptr) {
+ if (Method->getAttr<clang::OverrideAttr>() == nullptr &&
+ Method->getAttr<clang::FinalAttr>() == nullptr) {
SourceLocation InsertLoc;
StringRef ReplacementText = "override ";
diff --git a/clang-tools-extra/test/clang-tidy/use-override.cpp b/clang-tools-extra/test/clang-tidy/use-override.cpp
index 25c5a6a6c40..e2e61b458e4 100644
--- a/clang-tools-extra/test/clang-tidy/use-override.cpp
+++ b/clang-tools-extra/test/clang-tidy/use-override.cpp
@@ -62,6 +62,25 @@ void SimpleCases::i() {}
SimpleCases::~SimpleCases() {}
// CHECK: {{^SimpleCases::~SimpleCases\(\) {}}}
+struct FinalSpecified : public Base {
+public:
+ virtual ~FinalSpecified() final;
+ // CHECK: {{^ ~FinalSpecified\(\) final;}}
+
+ void b() final;
+ // CHECK: {{^ void b\(\) final;}}
+ virtual void d() final;
+ // CHECK: {{^ void d\(\) final;}}
+
+ virtual void e() final = 0;
+ // CHECK: {{^ void e\(\) final = 0;}}
+
+ virtual void j() const final;
+ // CHECK: {{^ void j\(\) const final;}}
+ virtual bool l() final MUST_USE_RESULT;
+ // CHECK: {{^ bool l\(\) final MUST_USE_RESULT;}}
+};
+
struct InlineDefinitions : public Base {
public:
virtual ~InlineDefinitions() {}
OpenPOWER on IntegriCloud