[clang-tools-extra] r288375 - [clang-tidy] Rename modernize-use-default to modernize-use-equals-default
Malcolm Parsons via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 1 09:24:43 PST 2016
Author: malcolm.parsons
Date: Thu Dec 1 11:24:42 2016
New Revision: 288375
URL: http://llvm.org/viewvc/llvm-project?rev=288375&view=rev
Log:
[clang-tidy] Rename modernize-use-default to modernize-use-equals-default
Reviewers: angelgarcia, aaron.ballman, alexfh
Subscribers: JDevlieghere, Prazek, mgorny, cfe-commits
Differential Revision: https://reviews.llvm.org/D26511
Added:
clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.cpp
- copied, changed from r288258, clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp
clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.h
- copied, changed from r288258, clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.h
clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-equals-default.rst
- copied, changed from r288258, clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-default.rst
clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-copy.cpp
- copied, changed from r288258, clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-copy.cpp
clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-delayed.cpp
- copied, changed from r288258, clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-delayed.cpp
clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default.cpp
- copied, changed from r288258, clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp
Removed:
clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp
clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.h
clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-copy.cpp
clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-delayed.cpp
clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp
Modified:
clang-tools-extra/trunk/clang-tidy/add_new_check.py
clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt
clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp
clang-tools-extra/trunk/docs/ReleaseNotes.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-default.rst
Modified: clang-tools-extra/trunk/clang-tidy/add_new_check.py
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/add_new_check.py?rev=288375&r1=288374&r2=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/add_new_check.py (original)
+++ clang-tools-extra/trunk/clang-tidy/add_new_check.py Thu Dec 1 11:24:42 2016
@@ -226,8 +226,13 @@ def update_checks_list(clang_tidy_path):
def format_link(doc_file):
check_name = doc_file.replace('.rst', '')
with open(os.path.join(docs_dir, doc_file), 'r') as doc:
+ content = doc.read()
+ match = re.search('.*:orphan:.*', content)
+ if match:
+ return ''
+
match = re.search('.*:http-equiv=refresh: \d+;URL=(.*).html.*',
- doc.read())
+ content)
if match:
return ' %(check)s (redirects to %(target)s) <%(check)s>\n' % {
'check': check_name,
Modified: clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt?rev=288375&r1=288374&r2=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt Thu Dec 1 11:24:42 2016
@@ -16,8 +16,8 @@ add_clang_library(clangTidyModernizeModu
ShrinkToFitCheck.cpp
UseAutoCheck.cpp
UseBoolLiteralsCheck.cpp
- UseDefaultCheck.cpp
UseEmplaceCheck.cpp
+ UseEqualsDefaultCheck.cpp
UseEqualsDeleteCheck.cpp
UseNullptrCheck.cpp
UseOverrideCheck.cpp
Modified: clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp?rev=288375&r1=288374&r2=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp Thu Dec 1 11:24:42 2016
@@ -22,8 +22,8 @@
#include "ShrinkToFitCheck.h"
#include "UseAutoCheck.h"
#include "UseBoolLiteralsCheck.h"
-#include "UseDefaultCheck.h"
#include "UseEmplaceCheck.h"
+#include "UseEqualsDefaultCheck.h"
#include "UseEqualsDeleteCheck.h"
#include "UseNullptrCheck.h"
#include "UseOverrideCheck.h"
@@ -56,8 +56,8 @@ public:
CheckFactories.registerCheck<UseAutoCheck>("modernize-use-auto");
CheckFactories.registerCheck<UseBoolLiteralsCheck>(
"modernize-use-bool-literals");
- CheckFactories.registerCheck<UseDefaultCheck>("modernize-use-default");
CheckFactories.registerCheck<UseEmplaceCheck>("modernize-use-emplace");
+ CheckFactories.registerCheck<UseEqualsDefaultCheck>("modernize-use-equals-default");
CheckFactories.registerCheck<UseEqualsDeleteCheck>(
"modernize-use-equals-delete");
CheckFactories.registerCheck<UseNullptrCheck>("modernize-use-nullptr");
Removed: clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp?rev=288374&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp (removed)
@@ -1,299 +0,0 @@
-//===--- UseDefaultCheck.cpp - clang-tidy----------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "UseDefaultCheck.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/ASTMatchers/ASTMatchFinder.h"
-#include "clang/Lex/Lexer.h"
-
-using namespace clang::ast_matchers;
-
-namespace clang {
-namespace tidy {
-namespace modernize {
-
-static const char SpecialFunction[] = "SpecialFunction";
-
-/// \brief Finds all the named non-static fields of \p Record.
-static std::set<const FieldDecl *>
-getAllNamedFields(const CXXRecordDecl *Record) {
- std::set<const FieldDecl *> Result;
- for (const auto *Field : Record->fields()) {
- // Static data members are not in this range.
- if (Field->isUnnamedBitfield())
- continue;
- Result.insert(Field);
- }
- return Result;
-}
-
-/// \brief Returns the names of the direct bases of \p Record, both virtual and
-/// non-virtual.
-static std::set<const Type *> getAllDirectBases(const CXXRecordDecl *Record) {
- std::set<const Type *> Result;
- for (auto Base : Record->bases()) {
- // CXXBaseSpecifier.
- const auto *BaseType = Base.getTypeSourceInfo()->getType().getTypePtr();
- Result.insert(BaseType);
- }
- return Result;
-}
-
-/// \brief Returns a matcher that matches member expressions where the base is
-/// the variable declared as \p Var and the accessed member is the one declared
-/// as \p Field.
-internal::Matcher<Expr> accessToFieldInVar(const FieldDecl *Field,
- const ValueDecl *Var) {
- return ignoringImpCasts(
- memberExpr(hasObjectExpression(declRefExpr(to(varDecl(equalsNode(Var))))),
- member(fieldDecl(equalsNode(Field)))));
-}
-
-/// \brief Check that the given constructor has copy signature and that it
-/// copy-initializes all its bases and members.
-static bool isCopyConstructorAndCanBeDefaulted(ASTContext *Context,
- const CXXConstructorDecl *Ctor) {
- // An explicitly-defaulted constructor cannot have default arguments.
- if (Ctor->getMinRequiredArguments() != 1)
- return false;
-
- const auto *Record = Ctor->getParent();
- const auto *Param = Ctor->getParamDecl(0);
-
- // Base classes and members that have to be copied.
- auto BasesToInit = getAllDirectBases(Record);
- auto FieldsToInit = getAllNamedFields(Record);
-
- // Ensure that all the bases are copied.
- for (const auto *Base : BasesToInit) {
- // The initialization of a base class should be a call to a copy
- // constructor of the base.
- if (match(
- cxxConstructorDecl(forEachConstructorInitializer(cxxCtorInitializer(
- isBaseInitializer(),
- withInitializer(cxxConstructExpr(allOf(
- hasType(equalsNode(Base)),
- hasDeclaration(cxxConstructorDecl(isCopyConstructor())),
- argumentCountIs(1),
- hasArgument(
- 0, declRefExpr(to(varDecl(equalsNode(Param))))))))))),
- *Ctor, *Context)
- .empty())
- return false;
- }
-
- // Ensure that all the members are copied.
- for (const auto *Field : FieldsToInit) {
- auto AccessToFieldInParam = accessToFieldInVar(Field, Param);
- // The initialization is a CXXConstructExpr for class types.
- if (match(
- cxxConstructorDecl(forEachConstructorInitializer(cxxCtorInitializer(
- isMemberInitializer(), forField(equalsNode(Field)),
- withInitializer(anyOf(
- AccessToFieldInParam,
- cxxConstructExpr(allOf(
- hasDeclaration(cxxConstructorDecl(isCopyConstructor())),
- argumentCountIs(1),
- hasArgument(0, AccessToFieldInParam)))))))),
- *Ctor, *Context)
- .empty())
- return false;
- }
-
- // Ensure that we don't do anything else, like initializing an indirect base.
- return Ctor->getNumCtorInitializers() ==
- BasesToInit.size() + FieldsToInit.size();
-}
-
-/// \brief Checks that the given method is an overloading of the assignment
-/// operator, has copy signature, returns a reference to "*this" and copies
-/// all its members and subobjects.
-static bool isCopyAssignmentAndCanBeDefaulted(ASTContext *Context,
- const CXXMethodDecl *Operator) {
- const auto *Record = Operator->getParent();
- const auto *Param = Operator->getParamDecl(0);
-
- // Base classes and members that have to be copied.
- auto BasesToInit = getAllDirectBases(Record);
- auto FieldsToInit = getAllNamedFields(Record);
-
- const auto *Compound = cast<CompoundStmt>(Operator->getBody());
-
- // The assignment operator definition has to end with the following return
- // statement:
- // return *this;
- if (Compound->body_empty() ||
- match(returnStmt(has(ignoringParenImpCasts(unaryOperator(
- hasOperatorName("*"), hasUnaryOperand(cxxThisExpr()))))),
- *Compound->body_back(), *Context)
- .empty())
- return false;
-
- // Ensure that all the bases are copied.
- for (const auto *Base : BasesToInit) {
- // Assignment operator of a base class:
- // Base::operator=(Other);
- //
- // Clang translates this into:
- // ((Base*)this)->operator=((Base)Other);
- //
- // So we are looking for a member call that fulfills:
- if (match(compoundStmt(has(ignoringParenImpCasts(cxxMemberCallExpr(allOf(
- // - The object is an implicit cast of 'this' to a pointer to
- // a base class.
- onImplicitObjectArgument(
- implicitCastExpr(hasImplicitDestinationType(
- pointsTo(type(equalsNode(Base)))),
- hasSourceExpression(cxxThisExpr()))),
- // - The called method is the operator=.
- callee(cxxMethodDecl(isCopyAssignmentOperator())),
- // - The argument is (an implicit cast to a Base of) the
- // argument taken by "Operator".
- argumentCountIs(1),
- hasArgument(0,
- declRefExpr(to(varDecl(equalsNode(Param)))))))))),
- *Compound, *Context)
- .empty())
- return false;
- }
-
- // Ensure that all the members are copied.
- for (const auto *Field : FieldsToInit) {
- // The assignment of data members:
- // Field = Other.Field;
- // Is a BinaryOperator in non-class types, and a CXXOperatorCallExpr
- // otherwise.
- auto LHS = memberExpr(hasObjectExpression(cxxThisExpr()),
- member(fieldDecl(equalsNode(Field))));
- auto RHS = accessToFieldInVar(Field, Param);
- if (match(
- compoundStmt(has(ignoringParenImpCasts(stmt(anyOf(
- binaryOperator(hasOperatorName("="), hasLHS(LHS), hasRHS(RHS)),
- cxxOperatorCallExpr(hasOverloadedOperatorName("="),
- argumentCountIs(2), hasArgument(0, LHS),
- hasArgument(1, RHS))))))),
- *Compound, *Context)
- .empty())
- return false;
- }
-
- // Ensure that we don't do anything else.
- return Compound->size() == BasesToInit.size() + FieldsToInit.size() + 1;
-}
-
-/// \brief Returns false if the body has any non-whitespace character.
-static bool bodyEmpty(const ASTContext *Context, const CompoundStmt *Body) {
- bool Invalid = false;
- StringRef Text = Lexer::getSourceText(
- CharSourceRange::getCharRange(Body->getLBracLoc().getLocWithOffset(1),
- Body->getRBracLoc()),
- Context->getSourceManager(), Context->getLangOpts(), &Invalid);
- return !Invalid && std::strspn(Text.data(), " \t\r\n") == Text.size();
-}
-
-void UseDefaultCheck::registerMatchers(MatchFinder *Finder) {
- if (getLangOpts().CPlusPlus) {
- // Destructor.
- Finder->addMatcher(cxxDestructorDecl(isDefinition()).bind(SpecialFunction),
- this);
- Finder->addMatcher(
- cxxConstructorDecl(
- isDefinition(),
- anyOf(
- // Default constructor.
- allOf(unless(hasAnyConstructorInitializer(isWritten())),
- parameterCountIs(0)),
- // Copy constructor.
- allOf(isCopyConstructor(),
- // Discard constructors that can be used as a copy
- // constructor because all the other arguments have
- // default values.
- parameterCountIs(1))))
- .bind(SpecialFunction),
- this);
- // Copy-assignment operator.
- Finder->addMatcher(
- cxxMethodDecl(isDefinition(), isCopyAssignmentOperator(),
- // isCopyAssignmentOperator() allows the parameter to be
- // passed by value, and in this case it cannot be
- // defaulted.
- hasParameter(0, hasType(lValueReferenceType())))
- .bind(SpecialFunction),
- this);
- }
-}
-
-void UseDefaultCheck::check(const MatchFinder::MatchResult &Result) {
- std::string SpecialFunctionName;
-
- // Both CXXConstructorDecl and CXXDestructorDecl inherit from CXXMethodDecl.
- const auto *SpecialFunctionDecl =
- Result.Nodes.getNodeAs<CXXMethodDecl>(SpecialFunction);
-
- // Discard explicitly deleted/defaulted special member functions and those
- // that are not user-provided (automatically generated).
- if (SpecialFunctionDecl->isDeleted() ||
- SpecialFunctionDecl->isExplicitlyDefaulted() ||
- SpecialFunctionDecl->isLateTemplateParsed() ||
- SpecialFunctionDecl->isTemplateInstantiation() ||
- !SpecialFunctionDecl->isUserProvided() || !SpecialFunctionDecl->hasBody())
- return;
-
- const auto *Body = dyn_cast<CompoundStmt>(SpecialFunctionDecl->getBody());
- if (!Body)
- return;
-
- // If there is code inside the body, don't warn.
- if (!SpecialFunctionDecl->isCopyAssignmentOperator() && !Body->body_empty())
- return;
-
- // If there are comments inside the body, don't do the change.
- bool ApplyFix = SpecialFunctionDecl->isCopyAssignmentOperator() ||
- bodyEmpty(Result.Context, Body);
-
- std::vector<FixItHint> RemoveInitializers;
-
- if (const auto *Ctor = dyn_cast<CXXConstructorDecl>(SpecialFunctionDecl)) {
- if (Ctor->getNumParams() == 0) {
- SpecialFunctionName = "default constructor";
- } else {
- if (!isCopyConstructorAndCanBeDefaulted(Result.Context, Ctor))
- return;
- SpecialFunctionName = "copy constructor";
- // If there are constructor initializers, they must be removed.
- for (const auto *Init : Ctor->inits()) {
- RemoveInitializers.emplace_back(
- FixItHint::CreateRemoval(Init->getSourceRange()));
- }
- }
- } else if (isa<CXXDestructorDecl>(SpecialFunctionDecl)) {
- SpecialFunctionName = "destructor";
- } else {
- if (!isCopyAssignmentAndCanBeDefaulted(Result.Context, SpecialFunctionDecl))
- return;
- SpecialFunctionName = "copy-assignment operator";
- }
-
- // The location of the body is more useful inside a macro as spelling and
- // expansion locations are reported.
- SourceLocation Location = SpecialFunctionDecl->getLocation();
- if (Location.isMacroID())
- Location = Body->getLocStart();
-
- auto Diag = diag(Location, "use '= default' to define a trivial " +
- SpecialFunctionName);
-
- if (ApplyFix)
- Diag << FixItHint::CreateReplacement(Body->getSourceRange(), "= default;")
- << RemoveInitializers;
-}
-
-} // namespace modernize
-} // namespace tidy
-} // namespace clang
Removed: clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.h?rev=288374&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.h (removed)
@@ -1,50 +0,0 @@
-//===--- UseDefaultCheck.h - clang-tidy--------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_DEFAULT_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_DEFAULT_H
-
-#include "../ClangTidy.h"
-
-namespace clang {
-namespace tidy {
-namespace modernize {
-
-/// \brief Replace default bodies of special member functions with '= default;'.
-/// \code
-/// struct A {
-/// A() {}
-/// ~A();
-/// };
-/// A::~A() {}
-/// \endcode
-/// Is converted to:
-/// \code
-/// struct A {
-/// A() = default;
-/// ~A();
-/// };
-/// A::~A() = default;
-/// \endcode
-///
-/// For the user-facing documentation see:
-/// http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-default.html
-class UseDefaultCheck : public ClangTidyCheck {
-public:
- UseDefaultCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {}
- void registerMatchers(ast_matchers::MatchFinder *Finder) override;
- void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
-};
-
-} // namespace modernize
-} // namespace tidy
-} // namespace clang
-
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_DEFAULT_H
Copied: clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.cpp (from r288258, clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.cpp?p2=clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.cpp&p1=clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp&r1=288258&r2=288375&rev=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.cpp Thu Dec 1 11:24:42 2016
@@ -1,4 +1,4 @@
-//===--- UseDefaultCheck.cpp - clang-tidy----------------------------------===//
+//===--- UseEqualsDefaultCheck.cpp - clang-tidy----------------------------===//
//
// The LLVM Compiler Infrastructure
//
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
-#include "UseDefaultCheck.h"
+#include "UseEqualsDefaultCheck.h"
#include "clang/AST/ASTContext.h"
#include "clang/ASTMatchers/ASTMatchFinder.h"
#include "clang/Lex/Lexer.h"
@@ -197,7 +197,7 @@ static bool bodyEmpty(const ASTContext *
return !Invalid && std::strspn(Text.data(), " \t\r\n") == Text.size();
}
-void UseDefaultCheck::registerMatchers(MatchFinder *Finder) {
+void UseEqualsDefaultCheck::registerMatchers(MatchFinder *Finder) {
if (getLangOpts().CPlusPlus) {
// Destructor.
Finder->addMatcher(cxxDestructorDecl(isDefinition()).bind(SpecialFunction),
@@ -229,7 +229,7 @@ void UseDefaultCheck::registerMatchers(M
}
}
-void UseDefaultCheck::check(const MatchFinder::MatchResult &Result) {
+void UseEqualsDefaultCheck::check(const MatchFinder::MatchResult &Result) {
std::string SpecialFunctionName;
// Both CXXConstructorDecl and CXXDestructorDecl inherit from CXXMethodDecl.
Copied: clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.h (from r288258, clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.h)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.h?p2=clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.h&p1=clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.h&r1=288258&r2=288375&rev=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/UseDefaultCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/UseEqualsDefaultCheck.h Thu Dec 1 11:24:42 2016
@@ -1,4 +1,4 @@
-//===--- UseDefaultCheck.h - clang-tidy--------------------------*- C++ -*-===//
+//===--- UseEqualsDefaultCheck.h - clang-tidy--------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -7,8 +7,8 @@
//
//===----------------------------------------------------------------------===//
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_DEFAULT_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_DEFAULT_H
+#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_EQUALS_DEFAULT_H
+#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_EQUALS_DEFAULT_H
#include "../ClangTidy.h"
@@ -34,10 +34,10 @@ namespace modernize {
/// \endcode
///
/// For the user-facing documentation see:
-/// http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-default.html
-class UseDefaultCheck : public ClangTidyCheck {
+/// http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-equals-default.html
+class UseEqualsDefaultCheck : public ClangTidyCheck {
public:
- UseDefaultCheck(StringRef Name, ClangTidyContext *Context)
+ UseEqualsDefaultCheck(StringRef Name, ClangTidyContext *Context)
: ClangTidyCheck(Name, Context) {}
void registerMatchers(ast_matchers::MatchFinder *Finder) override;
void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
@@ -47,4 +47,4 @@ public:
} // namespace tidy
} // namespace clang
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_DEFAULT_H
+#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_EQUALS_DEFAULT_H
Modified: clang-tools-extra/trunk/docs/ReleaseNotes.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/ReleaseNotes.rst?rev=288375&r1=288374&r2=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/ReleaseNotes.rst (original)
+++ clang-tools-extra/trunk/docs/ReleaseNotes.rst Thu Dec 1 11:24:42 2016
@@ -91,6 +91,9 @@ Improvements to clang-tidy
<http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-auto.html>`_ check
now warns about variable declarations that are initialized with a cast.
+- The modernize-use-default check has been renamed to `modernize-use-equals-default
+ <http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-equals-default.html>`_.
+
- New `modernize-use-equals-delete
<http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-equals-delete.html>`_ check
Modified: clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=288375&r1=288374&r2=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Thu Dec 1 11:24:42 2016
@@ -18,7 +18,7 @@ Clang-Tidy Checks
cert-err61-cpp (redirects to misc-throw-by-value-catch-by-reference) <cert-err61-cpp>
cert-fio38-c (redirects to misc-non-copyable-objects) <cert-fio38-c>
cert-flp30-c
- cert-msc30-c (redirects to cert-limited-randomness) <cert-msc30-c>
+ cert-msc30-c (redirects to cert-msc50-cpp) <cert-msc30-c>
cert-msc50-cpp
cert-oop11-cpp (redirects to misc-move-constructor-init) <cert-oop11-cpp>
cppcoreguidelines-interfaces-global-init
@@ -109,8 +109,8 @@ Clang-Tidy Checks
modernize-shrink-to-fit
modernize-use-auto
modernize-use-bool-literals
- modernize-use-default
modernize-use-emplace
+ modernize-use-equals-default
modernize-use-equals-delete
modernize-use-nullptr
modernize-use-override
Modified: clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-default.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-default.rst?rev=288375&r1=288374&r2=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-default.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-default.rst Thu Dec 1 11:24:42 2016
@@ -1,28 +1,10 @@
+:orphan:
.. title:: clang-tidy - modernize-use-default
+.. meta::
+ :http-equiv=refresh: 5;URL=modernize-use-equals-default.html
modernize-use-default
=====================
-This check replaces default bodies of special member functions with ``=
-default;``. The explicitly defaulted function declarations enable more
-opportunities in optimization, because the compiler might treat explicitly
-defaulted functions as trivial.
-
-.. code-block:: c++
-
- struct A {
- A() {}
- ~A();
- };
- A::~A() {}
-
- // becomes
-
- struct A {
- A() = default;
- ~A();
- };
- A::~A() = default;
-
-.. note::
- Move-constructor and move-assignment operator are not supported yet.
+This check has been renamed to
+`modernize-use-equals-default <modernize-use-equals-default.html>`_.
Copied: clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-equals-default.rst (from r288258, clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-default.rst)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-equals-default.rst?p2=clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-equals-default.rst&p1=clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-default.rst&r1=288258&r2=288375&rev=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-default.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-equals-default.rst Thu Dec 1 11:24:42 2016
@@ -1,7 +1,7 @@
-.. title:: clang-tidy - modernize-use-default
+.. title:: clang-tidy - modernize-use-equals-default
-modernize-use-default
-=====================
+modernize-use-equals-default
+============================
This check replaces default bodies of special member functions with ``=
default;``. The explicitly defaulted function declarations enable more
Removed: clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-copy.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-copy.cpp?rev=288374&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-copy.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-copy.cpp (removed)
@@ -1,497 +0,0 @@
-// RUN: %check_clang_tidy %s modernize-use-default %t -- -- -std=c++11 -fno-delayed-template-parsing -fexceptions
-
-// Out of line definition.
-struct OL {
- OL(const OL &);
- OL &operator=(const OL &);
- int Field;
-};
-OL::OL(const OL &Other) : Field(Other.Field) {}
-// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default' to define a trivial copy constructor [modernize-use-default]
-// CHECK-FIXES: OL::OL(const OL &Other) = default;
-OL &OL::operator=(const OL &Other) {
- Field = Other.Field;
- return *this;
-}
-// CHECK-MESSAGES: :[[@LINE-4]]:9: warning: use '= default' to define a trivial copy-assignment operator [modernize-use-default]
-// CHECK-FIXES: OL &OL::operator=(const OL &Other) = default;
-
-// Inline.
-struct IL {
- IL(const IL &Other) : Field(Other.Field) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: IL(const IL &Other) = default;
- IL &operator=(const IL &Other) {
- Field = Other.Field;
- return *this;
- }
- // CHECK-MESSAGES: :[[@LINE-4]]:7: warning: use '= default'
- // CHECK-FIXES: IL &operator=(const IL &Other) = default;
- int Field;
-};
-
-// Wrong type.
-struct WT {
- WT(const IL &Other) {}
- WT &operator=(const IL &);
-};
-WT &WT::operator=(const IL &Other) { return *this; }
-
-// Qualifiers.
-struct Qual {
- Qual(const Qual &Other) : Field(Other.Field), Volatile(Other.Volatile),
- Mutable(Other.Mutable), Reference(Other.Reference),
- Const(Other.Const) {}
- // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use '= default'
- // CHECK-FIXES: Qual(const Qual &Other)
- // CHECK-FIXES: = default;
-
- int Field;
- volatile char Volatile;
- mutable bool Mutable;
- const OL &Reference; // This makes this class non-assignable.
- const IL Const; // This also makes this class non-assignable.
- static int Static;
-};
-
-// Wrong init arguments.
-struct WI {
- WI(const WI &Other) : Field1(Other.Field1), Field2(Other.Field1) {}
- WI &operator=(const WI &);
- int Field1, Field2;
-};
-WI &WI::operator=(const WI &Other) {
- Field1 = Other.Field1;
- Field2 = Other.Field1;
- return *this;
-}
-
-// Missing field.
-struct MF {
- MF(const MF &Other) : Field1(Other.Field1), Field2(Other.Field2) {}
- MF &operator=(const MF &);
- int Field1, Field2, Field3;
-};
-MF &MF::operator=(const MF &Other) {
- Field1 = Other.Field1;
- Field2 = Other.Field2;
- return *this;
-}
-
-struct Comments {
- Comments(const Comments &Other)
- /* don't delete */ : /* this comment */ Field(Other.Field) {}
- // CHECK-MESSAGES: :[[@LINE-2]]:3: warning: use '= default'
- // CHECK-FIXES: /* don't delete */ = default;
- int Field;
-};
-
-struct MoreComments {
- MoreComments(const MoreComments &Other) /* this comment is OK */
- : Field(Other.Field) {}
- // CHECK-MESSAGES: :[[@LINE-2]]:3: warning: use '= default'
- // CHECK-FIXES: MoreComments(const MoreComments &Other) /* this comment is OK */
- // CHECK-FIXES-NEXT: = default;
- int Field;
-};
-
-struct ColonInComment {
- ColonInComment(const ColonInComment &Other) /* : */ : Field(Other.Field) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: ColonInComment(const ColonInComment &Other) /* : */ = default;
- int Field;
-};
-
-// No members or bases (in particular, no colon).
-struct Empty {
- Empty(const Empty &Other) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: Empty(const Empty &Other) = default;
- Empty &operator=(const Empty &);
-};
-Empty &Empty::operator=(const Empty &Other) { return *this; }
-// CHECK-MESSAGES: :[[@LINE-1]]:15: warning: use '= default'
-// CHECK-FIXES: Empty &Empty::operator=(const Empty &Other) = default;
-
-// Bit fields.
-struct BF {
- BF() = default;
- BF(const BF &Other) : Field1(Other.Field1), Field2(Other.Field2), Field3(Other.Field3),
- Field4(Other.Field4) {}
- // CHECK-MESSAGES: :[[@LINE-2]]:3: warning: use '= default'
- // CHECK-FIXES: BF(const BF &Other) {{$}}
- // CHECK-FIXES: = default;
- BF &operator=(const BF &);
-
- unsigned Field1 : 3;
- int : 7;
- char Field2 : 6;
- int : 0;
- int Field3 : 24;
- unsigned char Field4;
-};
-BF &BF::operator=(const BF &Other) {
- Field1 = Other.Field1;
- Field2 = Other.Field2;
- Field3 = Other.Field3;
- Field4 = Other.Field4;
- return *this;
-}
-// CHECK-MESSAGES: :[[@LINE-7]]:9: warning: use '= default'
-// CHECK-FIXES: BF &BF::operator=(const BF &Other) = default;
-
-// Base classes.
-struct BC : IL, OL, BF {
- BC(const BC &Other) : IL(Other), OL(Other), BF(Other) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: BC(const BC &Other) = default;
- BC &operator=(const BC &Other);
-};
-BC &BC::operator=(const BC &Other) {
- IL::operator=(Other);
- OL::operator=(Other);
- BF::operator=(Other);
- return *this;
-}
-// CHECK-MESSAGES: :[[@LINE-6]]:9: warning: use '= default'
-// CHECK-FIXES: BC &BC::operator=(const BC &Other) = default;
-
-// Base classes with member.
-struct BCWM : IL, OL {
- BCWM(const BCWM &Other) : IL(Other), OL(Other), Bf(Other.Bf) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: BCWM(const BCWM &Other) = default;
- BCWM &operator=(const BCWM &);
- BF Bf;
-};
-BCWM &BCWM::operator=(const BCWM &Other) {
- IL::operator=(Other);
- OL::operator=(Other);
- Bf = Other.Bf;
- return *this;
-}
-// CHECK-MESSAGES: :[[@LINE-6]]:13: warning: use '= default'
-// CHECK-FIXES: BCWM &BCWM::operator=(const BCWM &Other) = default;
-
-// Missing base class.
-struct MBC : IL, OL, BF {
- MBC(const MBC &Other) : IL(Other), OL(Other) {}
- MBC &operator=(const MBC &);
-};
-MBC &MBC::operator=(const MBC &Other) {
- IL::operator=(Other);
- OL::operator=(Other);
- return *this;
-}
-
-// Base classes, incorrect parameter.
-struct BCIP : BCWM, BF {
- BCIP(const BCIP &Other) : BCWM(Other), BF(Other.Bf) {}
- BCIP &operator=(const BCIP &);
-};
-BCIP &BCIP::operator=(const BCIP &Other) {
- BCWM::operator=(Other);
- BF::operator=(Other.Bf);
- return *this;
-}
-
-// Virtual base classes.
-struct VA : virtual OL {};
-struct VB : virtual OL {};
-struct VBC : VA, VB, virtual OL {
- // OL is the first thing that is going to be initialized, despite the fact
- // that it is the last in the list of bases, because it is virtual and there
- // is a virtual OL at the beginning of VA (which is the same).
- VBC(const VBC &Other) : OL(Other), VA(Other), VB(Other) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: VBC(const VBC &Other) = default;
- VBC &operator=(const VBC &Other);
-};
-VBC &VBC::operator=(const VBC &Other) {
- OL::operator=(Other);
- VA::operator=(Other);
- VB::operator=(Other);
- return *this;
-}
-// CHECK-MESSAGES: :[[@LINE-6]]:11: warning: use '= default'
-// CHECK-FIXES: VBC &VBC::operator=(const VBC &Other) = default;
-
-// Indirect base.
-struct IB : VBC {
- IB(const IB &Other) : OL(Other), VBC(Other) {}
- IB &operator=(const IB &);
-};
-IB &IB::operator=(const IB &Other) {
- OL::operator=(Other);
- VBC::operator=(Other);
- return *this;
-}
-
-// Class template.
-template <class T>
-struct Template {
- Template() = default;
- Template(const Template &Other) : Field(Other.Field) {}
- Template &operator=(const Template &Other);
- void foo(const T &t);
- int Field;
-};
-template <class T>
-Template<T> &Template<T>::operator=(const Template<T> &Other) {
- Field = Other.Field;
- return *this;
-}
-Template<int> T1;
-
-// Dependent types.
-template <class T>
-struct DT1 {
- DT1() = default;
- DT1(const DT1 &Other) : Field(Other.Field) {}
- DT1 &operator=(const DT1 &);
- T Field;
-};
-template <class T>
-DT1<T> &DT1<T>::operator=(const DT1<T> &Other) {
- Field = Other.Field;
- return *this;
-}
-DT1<int> Dt1;
-
-template <class T>
-struct DT2 {
- DT2() = default;
- DT2(const DT2 &Other) : Field(Other.Field), Dependent(Other.Dependent) {}
- DT2 &operator=(const DT2 &);
- T Field;
- typename T::TT Dependent;
-};
-template <class T>
-DT2<T> &DT2<T>::operator=(const DT2<T> &Other) {
- Field = Other.Field;
- Dependent = Other.Dependent;
- return *this;
-}
-struct T {
- typedef int TT;
-};
-DT2<T> Dt2;
-
-// Default arguments.
-struct DA {
- DA(int Int);
- DA(const DA &Other = DA(0)) : Field1(Other.Field1), Field2(Other.Field2) {}
- DA &operator=(const DA &);
- int Field1;
- char Field2;
-};
-// Overloaded operator= cannot have a default argument.
-DA &DA::operator=(const DA &Other) {
- Field1 = Other.Field1;
- Field2 = Other.Field2;
- return *this;
-}
-// CHECK-MESSAGES: :[[@LINE-5]]:9: warning: use '= default'
-// CHECK-FIXES: DA &DA::operator=(const DA &Other) = default;
-
-struct DA2 {
- // Can be used as copy-constructor but cannot be explicitly defaulted.
- DA2(const DA &Other, int Def = 0) {}
-};
-
-// Default initialization.
-struct DI {
- DI(const DI &Other) : Field1(Other.Field1), Field2(Other.Field2) {}
- int Field1;
- int Field2 = 0;
- int Fiedl3;
-};
-
-// Statement inside body.
-void foo();
-struct SIB {
- SIB(const SIB &Other) : Field(Other.Field) { foo(); }
- SIB &operator=(const SIB &);
- int Field;
-};
-SIB &SIB::operator=(const SIB &Other) {
- Field = Other.Field;
- foo();
- return *this;
-}
-
-// Comment inside body.
-struct CIB {
- CIB(const CIB &Other) : Field(Other.Field) { /* Don't erase this */
- }
- // CHECK-MESSAGES: :[[@LINE-2]]:3: warning: use '= default'
- CIB &operator=(const CIB &);
- int Field;
-};
-CIB &CIB::operator=(const CIB &Other) {
- Field = Other.Field;
- // FIXME: don't erase this comment.
- return *this;
-}
-// CHECK-MESSAGES: :[[@LINE-5]]:11: warning: use '= default'
-// CHECK-FIXES: CIB &CIB::operator=(const CIB &Other) = default;
-
-// Take non-const reference as argument.
-struct NCRef {
- NCRef(NCRef &Other) : Field1(Other.Field1), Field2(Other.Field2) {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: NCRef(NCRef &Other) = default;
- NCRef &operator=(NCRef &);
- int Field1, Field2;
-};
-NCRef &NCRef::operator=(NCRef &Other) {
- Field1 = Other.Field1;
- Field2 = Other.Field2;
- return *this;
-}
-// CHECK-MESSAGES: :[[@LINE-5]]:15: warning: use '= default'
-// CHECK-FIXES: NCRef &NCRef::operator=(NCRef &Other) = default;
-
-// Already defaulted.
-struct IAD {
- IAD(const IAD &Other) = default;
- IAD &operator=(const IAD &Other) = default;
-};
-
-struct OAD {
- OAD(const OAD &Other);
- OAD &operator=(const OAD &);
-};
-OAD::OAD(const OAD &Other) = default;
-OAD &OAD::operator=(const OAD &Other) = default;
-
-// Deleted.
-struct ID {
- ID(const ID &Other) = delete;
- ID &operator=(const ID &Other) = delete;
-};
-
-// Non-reference parameter.
-struct NRef {
- NRef &operator=(NRef Other);
- int Field1;
-};
-NRef &NRef::operator=(NRef Other) {
- Field1 = Other.Field1;
- return *this;
-}
-
-// RValue reference parameter.
-struct RVR {
- RVR(RVR &&Other) {}
- RVR &operator=(RVR &&);
-};
-RVR &RVR::operator=(RVR &&Other) { return *this; }
-
-// Similar function.
-struct SF {
- SF &foo(const SF &);
- int Field1;
-};
-SF &SF::foo(const SF &Other) {
- Field1 = Other.Field1;
- return *this;
-}
-
-// No return.
-struct NR {
- NR &operator=(const NR &);
-};
-NR &NR::operator=(const NR &Other) {}
-
-// Return misplaced.
-struct RM {
- RM &operator=(const RM &);
- int Field;
-};
-RM &RM::operator=(const RM &Other) {
- return *this;
- Field = Other.Field;
-}
-
-// Wrong return value.
-struct WRV {
- WRV &operator=(WRV &);
-};
-WRV &WRV::operator=(WRV &Other) {
- return Other;
-}
-
-// Wrong return type.
-struct WRT : IL {
- IL &operator=(const WRT &);
-};
-IL &WRT::operator=(const WRT &Other) {
- return *this;
-}
-
-// Try-catch.
-struct ITC {
- ITC(const ITC &Other)
- try : Field(Other.Field) {
- } catch (...) {
- }
- ITC &operator=(const ITC &Other) try {
- Field = Other.Field;
- } catch (...) {
- }
- int Field;
-};
-
-struct OTC {
- OTC(const OTC &);
- OTC &operator=(const OTC &);
- int Field;
-};
-OTC::OTC(const OTC &Other) try : Field(Other.Field) {
-} catch (...) {
-}
-OTC &OTC::operator=(const OTC &Other) try {
- Field = Other.Field;
-} catch (...) {
-}
-
-// FIXME: the check is not able to detect exception specification.
-// noexcept(true).
-struct NET {
- // This is the default.
- //NET(const NET &Other) noexcept {}
- NET &operator=(const NET &Other) noexcept;
-};
-//NET &NET::operator=(const NET &Other) noexcept { return *this; }
-
-// noexcept(false).
-struct NEF {
- // This is the default.
- //NEF(const NEF &Other) noexcept(false) {}
- NEF &operator=(const NEF &Other) noexcept(false);
-};
-//NEF &NEF::operator=(const NEF &Other) noexcept(false) { return *this; }
-
-#define STRUCT_WITH_COPY_CONSTRUCT(_base, _type) \
- struct _type { \
- _type(const _type &v) : value(v.value) {} \
- _base value; \
- };
-
-STRUCT_WITH_COPY_CONSTRUCT(unsigned char, Hex8CopyConstruct)
-// CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use '= default' to define a trivial copy constructor
-// CHECK-MESSAGES: :[[@LINE-6]]:44: note:
-
-#define STRUCT_WITH_COPY_ASSIGN(_base, _type) \
- struct _type { \
- _type &operator=(const _type &rhs) { \
- value = rhs.value; \
- return *this; \
- } \
- _base value; \
- };
-
-STRUCT_WITH_COPY_ASSIGN(unsigned char, Hex8CopyAssign)
-// CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use '= default' to define a trivial copy-assignment operator
-// CHECK-MESSAGES: :[[@LINE-9]]:40: note:
Removed: clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-delayed.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-delayed.cpp?rev=288374&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-delayed.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-delayed.cpp (removed)
@@ -1,8 +0,0 @@
-// RUN: clang-tidy %s -checks=-*,modernize-use-default -- -std=c++11 -fdelayed-template-parsing -fexceptions | count 0
-// Note: this test expects no diagnostics, but FileCheck cannot handle that,
-// hence the use of | count 0.
-
-template <typename Ty>
-struct S {
- S<Ty>& operator=(const S<Ty>&) { return *this; }
-};
Removed: clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp?rev=288374&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp (removed)
@@ -1,209 +0,0 @@
-// RUN: %check_clang_tidy %s modernize-use-default %t -- -- -std=c++11 -fno-delayed-template-parsing -fexceptions
-
-// Out of line definition.
-class OL {
-public:
- OL();
- ~OL();
-};
-
-OL::OL() {}
-// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default' to define a trivial default constructor [modernize-use-default]
-// CHECK-FIXES: OL::OL() = default;
-OL::~OL() {}
-// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default' to define a trivial destructor [modernize-use-default]
-// CHECK-FIXES: OL::~OL() = default;
-
-// Inline definitions.
-class IL {
-public:
- IL() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: IL() = default;
- ~IL() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: ~IL() = default;
-};
-
-// Non-empty body.
-void f();
-class NE {
-public:
- NE() { f(); }
- ~NE() { f(); }
-};
-
-// Initializer or arguments.
-class IA {
-public:
- // Constructor with initializer.
- IA() : Field(5) {}
- // Constructor with arguments.
- IA(int Arg1, int Arg2) {}
- int Field;
-};
-
-// Default member initializer
-class DMI {
-public:
- DMI() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: DMI() = default;
- int Field = 5;
-};
-
-// Class member
-class CM {
-public:
- CM() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: CM() = default;
- OL o;
-};
-
-// Private constructor/destructor.
-class Priv {
- Priv() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: Priv() = default;
- ~Priv() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: ~Priv() = default;
-};
-
-// struct.
-struct ST {
- ST() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: ST() = default;
- ~ST() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: ST() = default;
-};
-
-// Deleted constructor/destructor.
-class Del {
-public:
- Del() = delete;
- ~Del() = delete;
-};
-
-// Do not remove other keywords.
-class KW {
-public:
- explicit KW() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: use '= default'
- // CHECK-FIXES: explicit KW() = default;
- virtual ~KW() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: use '= default'
- // CHECK-FIXES: virtual ~KW() = default;
-};
-
-// Nested class.
-struct N {
- struct NN {
- NN() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default'
- // CHECK-FIXES: NN() = default;
- ~NN() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default'
- // CHECK-FIXES: ~NN() = default;
- };
- int Int;
-};
-
-// Class template.
-template <class T>
-class Temp {
-public:
- Temp() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: Temp() = default;
- ~Temp() {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: ~Temp() = default;
-};
-
-// Class template out of line with explicit instantiation.
-template <class T>
-class TempODef {
-public:
- TempODef();
- ~TempODef();
-};
-
-template <class T>
-TempODef<T>::TempODef() {}
-// CHECK-MESSAGES: :[[@LINE-1]]:14: warning: use '= default'
-// CHECK-FIXES: TempODef<T>::TempODef() = default;
-template <class T>
-TempODef<T>::~TempODef() {}
-// CHECK-MESSAGES: :[[@LINE-1]]:14: warning: use '= default'
-// CHECK-FIXES: TempODef<T>::~TempODef() = default;
-
-template class TempODef<int>;
-template class TempODef<double>;
-
-// Non user-provided constructor/destructor.
-struct Imp {
- int Int;
-};
-void g() {
- Imp *PtrImp = new Imp();
- PtrImp->~Imp();
- delete PtrImp;
-}
-
-// Already using default.
-struct IDef {
- IDef() = default;
- ~IDef() = default;
-};
-struct ODef {
- ODef();
- ~ODef();
-};
-ODef::ODef() = default;
-ODef::~ODef() = default;
-
-// Delegating constructor and overriden destructor.
-struct DC : KW {
- DC() : KW() {}
- ~DC() override {}
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use '= default'
- // CHECK-FIXES: ~DC() override = default;
-};
-
-struct Comments {
- Comments() {
- // Don't erase comments inside the body.
- }
- // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use '= default'
- ~Comments() {
- // Don't erase comments inside the body.
- }
- // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use '= default'
-};
-
-// Try-catch.
-struct ITC {
- ITC() try {} catch(...) {}
- ~ITC() try {} catch(...) {}
-};
-
-struct OTC {
- OTC();
- ~OTC();
-};
-OTC::OTC() try {} catch(...) {}
-OTC::~OTC() try {} catch(...) {}
-
-#define STRUCT_WITH_DEFAULT(_base, _type) \
- struct _type { \
- _type() {} \
- _base value; \
- };
-
-STRUCT_WITH_DEFAULT(unsigned char, Hex8Default)
-// CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use '= default' to define a trivial default constructor
-// CHECK-MESSAGES: :[[@LINE-6]]:13: note:
Copied: clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-copy.cpp (from r288258, clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-copy.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-copy.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-copy.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-copy.cpp&r1=288258&r2=288375&rev=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-copy.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-copy.cpp Thu Dec 1 11:24:42 2016
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s modernize-use-default %t -- -- -std=c++11 -fno-delayed-template-parsing -fexceptions
+// RUN: %check_clang_tidy %s modernize-use-equals-default %t -- -- -std=c++11 -fno-delayed-template-parsing -fexceptions
// Out of line definition.
struct OL {
@@ -7,13 +7,13 @@ struct OL {
int Field;
};
OL::OL(const OL &Other) : Field(Other.Field) {}
-// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default' to define a trivial copy constructor [modernize-use-default]
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default' to define a trivial copy constructor [modernize-use-equals-default]
// CHECK-FIXES: OL::OL(const OL &Other) = default;
OL &OL::operator=(const OL &Other) {
Field = Other.Field;
return *this;
}
-// CHECK-MESSAGES: :[[@LINE-4]]:9: warning: use '= default' to define a trivial copy-assignment operator [modernize-use-default]
+// CHECK-MESSAGES: :[[@LINE-4]]:9: warning: use '= default' to define a trivial copy-assignment operator [modernize-use-equals-default]
// CHECK-FIXES: OL &OL::operator=(const OL &Other) = default;
// Inline.
Copied: clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-delayed.cpp (from r288258, clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-delayed.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-delayed.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-delayed.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-delayed.cpp&r1=288258&r2=288375&rev=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-default-delayed.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default-delayed.cpp Thu Dec 1 11:24:42 2016
@@ -1,4 +1,4 @@
-// RUN: clang-tidy %s -checks=-*,modernize-use-default -- -std=c++11 -fdelayed-template-parsing -fexceptions | count 0
+// RUN: clang-tidy %s -checks=-*,modernize-use-equals-default -- -std=c++11 -fdelayed-template-parsing -fexceptions | count 0
// Note: this test expects no diagnostics, but FileCheck cannot handle that,
// hence the use of | count 0.
Copied: clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default.cpp (from r288258, clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp)
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp&r1=288258&r2=288375&rev=288375&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-default.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-equals-default.cpp Thu Dec 1 11:24:42 2016
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy %s modernize-use-default %t -- -- -std=c++11 -fno-delayed-template-parsing -fexceptions
+// RUN: %check_clang_tidy %s modernize-use-equals-default %t -- -- -std=c++11 -fno-delayed-template-parsing -fexceptions
// Out of line definition.
class OL {
@@ -8,10 +8,10 @@ public:
};
OL::OL() {}
-// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default' to define a trivial default constructor [modernize-use-default]
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default' to define a trivial default constructor [modernize-use-equals-default]
// CHECK-FIXES: OL::OL() = default;
OL::~OL() {}
-// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default' to define a trivial destructor [modernize-use-default]
+// CHECK-MESSAGES: :[[@LINE-1]]:5: warning: use '= default' to define a trivial destructor [modernize-use-equals-default]
// CHECK-FIXES: OL::~OL() = default;
// Inline definitions.
More information about the cfe-commits
mailing list