Author: alexfh Date: Mon Aug 31 08:17:43 2015 New Revision: 246437 URL: http://llvm.org/viewvc/llvm-project?rev=246437&view=rev Log: [clang-tidy] Move misc-use-override and readability-shrink-to-fit to "modernize/"
These checks are focusing on migrating the code from C++98/03 to C++11, so they belong to the modernize module. Added: clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.cpp - copied, changed from r246432, clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.h - copied, changed from r246432, clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.h clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.cpp - copied, changed from r246432, clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.cpp clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.h - copied, changed from r246432, clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.h clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-shrink-to-fit.rst - copied unchanged from r246432, clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-override.rst - copied, changed from r246432, clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst clang-tools-extra/trunk/test/clang-tidy/modernize-shrink-to-fit.cpp - copied, changed from r246432, clang-tools-extra/trunk/test/clang-tidy/readability-shrink-to-fit.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-use-override-cxx98.cpp - copied, changed from r246432, clang-tools-extra/trunk/test/clang-tidy/misc-use-override-cxx98.cpp clang-tools-extra/trunk/test/clang-tidy/modernize-use-override.cpp - copied, changed from r246432, clang-tools-extra/trunk/test/clang-tidy/misc-use-override.cpp Removed: clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.cpp clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.h clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.h clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst clang-tools-extra/trunk/test/clang-tidy/misc-use-override-cxx98.cpp clang-tools-extra/trunk/test/clang-tidy/misc-use-override.cpp clang-tools-extra/trunk/test/clang-tidy/readability-shrink-to-fit.cpp Modified: clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp clang-tools-extra/trunk/clang-tidy/readability/CMakeLists.txt clang-tools-extra/trunk/clang-tidy/readability/ReadabilityTidyModule.cpp clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst clang-tools-extra/trunk/docs/clang-tidy/index.rst clang-tools-extra/trunk/test/clang-tidy/clang-tidy-diff.cpp clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp Modified: clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt?rev=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/misc/CMakeLists.txt Mon Aug 31 08:17:43 2015 @@ -19,7 +19,6 @@ add_clang_library(clangTidyMiscModule UnusedParametersCheck.cpp UnusedRAIICheck.cpp UniqueptrResetReleaseCheck.cpp - UseOverrideCheck.cpp LINK_LIBS clangAST Modified: clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp?rev=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/MiscTidyModule.cpp Mon Aug 31 08:17:43 2015 @@ -27,7 +27,6 @@ #include "UnusedAliasDeclsCheck.h" #include "UnusedParametersCheck.h" #include "UnusedRAIICheck.h" -#include "UseOverrideCheck.h" namespace clang { namespace tidy { @@ -68,7 +67,6 @@ public: CheckFactories.registerCheck<UnusedParametersCheck>( "misc-unused-parameters"); CheckFactories.registerCheck<UnusedRAIICheck>("misc-unused-raii"); - CheckFactories.registerCheck<UseOverrideCheck>("misc-use-override"); } }; Removed: clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.cpp?rev=246436&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.cpp (removed) @@ -1,197 +0,0 @@ -//===--- UseOverrideCheck.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 "UseOverrideCheck.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 misc { - -void UseOverrideCheck::registerMatchers(MatchFinder *Finder) { - // Only register the matcher for C++11. - if (getLangOpts().CPlusPlus11) - Finder->addMatcher(methodDecl(isOverride()).bind("method"), this); -} - -// Re-lex the tokens to get precise locations to insert 'override' and remove -// 'virtual'. -static SmallVector<Token, 16> -ParseTokens(CharSourceRange Range, const MatchFinder::MatchResult &Result) { - const SourceManager &Sources = *Result.SourceManager; - std::pair<FileID, unsigned> LocInfo = - Sources.getDecomposedLoc(Range.getBegin()); - StringRef File = Sources.getBufferData(LocInfo.first); - const char *TokenBegin = File.data() + LocInfo.second; - Lexer RawLexer(Sources.getLocForStartOfFile(LocInfo.first), - Result.Context->getLangOpts(), File.begin(), TokenBegin, - File.end()); - SmallVector<Token, 16> Tokens; - Token Tok; - while (!RawLexer.LexFromRawLexer(Tok)) { - if (Tok.is(tok::semi) || Tok.is(tok::l_brace)) - break; - if (Sources.isBeforeInTranslationUnit(Range.getEnd(), Tok.getLocation())) - break; - if (Tok.is(tok::raw_identifier)) { - IdentifierInfo &Info = Result.Context->Idents.get(StringRef( - Sources.getCharacterData(Tok.getLocation()), Tok.getLength())); - Tok.setIdentifierInfo(&Info); - Tok.setKind(Info.getTokenID()); - } - Tokens.push_back(Tok); - } - return Tokens; -} - -static StringRef GetText(const Token &Tok, const SourceManager &Sources) { - return StringRef(Sources.getCharacterData(Tok.getLocation()), - Tok.getLength()); -} - -void UseOverrideCheck::check(const MatchFinder::MatchResult &Result) { - const FunctionDecl *Method = Result.Nodes.getStmtAs<FunctionDecl>("method"); - const SourceManager &Sources = *Result.SourceManager; - - assert(Method != nullptr); - if (Method->getInstantiatedFromMemberFunction() != nullptr) - Method = Method->getInstantiatedFromMemberFunction(); - - if (Method->isImplicit() || Method->getLocation().isMacroID() || - Method->isOutOfLine()) - return; - - bool HasVirtual = Method->isVirtualAsWritten(); - bool HasOverride = Method->getAttr<OverrideAttr>(); - bool HasFinal = Method->getAttr<FinalAttr>(); - - bool OnlyVirtualSpecified = HasVirtual && !HasOverride && !HasFinal; - unsigned KeywordCount = HasVirtual + HasOverride + HasFinal; - - if (!OnlyVirtualSpecified && KeywordCount == 1) - return; // Nothing to do. - - std::string Message; - - if (OnlyVirtualSpecified) { - Message = - "prefer using 'override' or (rarely) 'final' instead of 'virtual'"; - } else if (KeywordCount == 0) { - Message = "annotate this function with 'override' or (rarely) 'final'"; - } else { - StringRef Redundant = - HasVirtual ? (HasOverride && HasFinal ? "'virtual' and 'override' are" - : "'virtual' is") - : "'override' is"; - StringRef Correct = HasFinal ? "'final'" : "'override'"; - - Message = - (llvm::Twine(Redundant) + - " redundant since the function is already declared " + Correct).str(); - } - - DiagnosticBuilder Diag = diag(Method->getLocation(), Message); - - CharSourceRange FileRange = Lexer::makeFileCharRange( - CharSourceRange::getTokenRange(Method->getSourceRange()), Sources, - Result.Context->getLangOpts()); - - if (!FileRange.isValid()) - return; - - // FIXME: Instead of re-lexing and looking for specific macros such as - // 'ABSTRACT', properly store the location of 'virtual' and '= 0' in each - // FunctionDecl. - SmallVector<Token, 16> Tokens = ParseTokens(FileRange, Result); - - // Add 'override' on inline declarations that don't already have it. - if (!HasFinal && !HasOverride) { - SourceLocation InsertLoc; - StringRef ReplacementText = "override "; - - for (Token T : Tokens) { - if (T.is(tok::kw___attribute)) { - InsertLoc = T.getLocation(); - break; - } - } - - if (Method->hasAttrs()) { - for (const clang::Attr *A : Method->getAttrs()) { - if (!A->isImplicit()) { - SourceLocation Loc = - Sources.getExpansionLoc(A->getRange().getBegin()); - if (!InsertLoc.isValid() || - Sources.isBeforeInTranslationUnit(Loc, InsertLoc)) - InsertLoc = Loc; - } - } - } - - if (InsertLoc.isInvalid() && Method->doesThisDeclarationHaveABody() && - Method->getBody() && !Method->isDefaulted()) { - // For methods with inline definition, add the override keyword at the - // end of the declaration of the function, but prefer to put it on the - // same line as the declaration if the beginning brace for the start of - // the body falls on the next line. - Token LastNonCommentToken; - for (Token T : Tokens) { - if (!T.is(tok::comment)) { - LastNonCommentToken = T; - } - } - InsertLoc = LastNonCommentToken.getEndLoc(); - ReplacementText = " override"; - } - - if (!InsertLoc.isValid()) { - // For declarations marked with "= 0" or "= [default|delete]", the end - // location will point until after those markings. Therefore, the override - // keyword shouldn't be inserted at the end, but before the '='. - if (Tokens.size() > 2 && (GetText(Tokens.back(), Sources) == "0" || - Tokens.back().is(tok::kw_default) || - Tokens.back().is(tok::kw_delete)) && - GetText(Tokens[Tokens.size() - 2], Sources) == "=") { - InsertLoc = Tokens[Tokens.size() - 2].getLocation(); - } else if (GetText(Tokens.back(), Sources) == "ABSTRACT") { - InsertLoc = Tokens.back().getLocation(); - } - } - - if (!InsertLoc.isValid()) { - InsertLoc = FileRange.getEnd(); - ReplacementText = " override"; - } - Diag << FixItHint::CreateInsertion(InsertLoc, ReplacementText); - } - - if (HasFinal && HasOverride) { - SourceLocation OverrideLoc = Method->getAttr<OverrideAttr>()->getLocation(); - Diag << FixItHint::CreateRemoval( - CharSourceRange::getTokenRange(OverrideLoc, OverrideLoc)); - } - - if (HasVirtual) { - for (Token Tok : Tokens) { - if (Tok.is(tok::kw_virtual)) { - Diag << FixItHint::CreateRemoval(CharSourceRange::getTokenRange( - Tok.getLocation(), Tok.getLocation())); - break; - } - } - } -} - -} // namespace misc -} // namespace tidy -} // namespace clang Removed: clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.h?rev=246436&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.h (original) +++ clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.h (removed) @@ -1,32 +0,0 @@ -//===--- UseOverrideCheck.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_MISC_USEOVERRIDECHECK_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_USEOVERRIDECHECK_H - -#include "../ClangTidy.h" - -namespace clang { -namespace tidy { -namespace misc { - -/// Use C++11's `override` and remove `virtual` where applicable. -class UseOverrideCheck : public ClangTidyCheck { -public: - UseOverrideCheck(StringRef Name, ClangTidyContext *Context) - : ClangTidyCheck(Name, Context) {} - void registerMatchers(ast_matchers::MatchFinder *Finder) override; - void check(const ast_matchers::MatchFinder::MatchResult &Result) override; -}; - -} // namespace misc -} // namespace tidy -} // namespace clang - -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_USEOVERRIDECHECK_H 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=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt Mon Aug 31 08:17:43 2015 @@ -6,8 +6,10 @@ add_clang_library(clangTidyModernizeModu ModernizeTidyModule.cpp PassByValueCheck.cpp ReplaceAutoPtrCheck.cpp + ShrinkToFitCheck.cpp UseAutoCheck.cpp UseNullptrCheck.cpp + UseOverrideCheck.cpp LINK_LIBS clangAST 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=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp Mon Aug 31 08:17:43 2015 @@ -13,8 +13,10 @@ #include "LoopConvertCheck.h" #include "PassByValueCheck.h" #include "ReplaceAutoPtrCheck.h" +#include "ShrinkToFitCheck.h" #include "UseAutoCheck.h" #include "UseNullptrCheck.h" +#include "UseOverrideCheck.h" using namespace clang::ast_matchers; @@ -29,8 +31,10 @@ public: CheckFactories.registerCheck<PassByValueCheck>("modernize-pass-by-value"); CheckFactories.registerCheck<ReplaceAutoPtrCheck>( "modernize-replace-auto-ptr"); + CheckFactories.registerCheck<ShrinkToFitCheck>("modernize-shrink-to-fit"); CheckFactories.registerCheck<UseAutoCheck>("modernize-use-auto"); CheckFactories.registerCheck<UseNullptrCheck>("modernize-use-nullptr"); + CheckFactories.registerCheck<UseOverrideCheck>("modernize-use-override"); } ClangTidyOptions getModuleOptions() override { Copied: clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.cpp (from r246432, clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp) URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.cpp?p2=clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.cpp&p1=clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp&r1=246432&r2=246437&rev=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.cpp Mon Aug 31 08:17:43 2015 @@ -33,7 +33,7 @@ AST_MATCHER(NamedDecl, stlShrinkableCont } // namespace namespace tidy { -namespace readability { +namespace modernize { void ShrinkToFitCheck::registerMatchers(MatchFinder *Finder) { // Swap as a function need not to be considered, because rvalue can not @@ -99,6 +99,6 @@ void ShrinkToFitCheck::check(const Match << Hint; } -} // namespace readability +} // namespace modernize } // namespace tidy } // namespace clang Copied: clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.h (from r246432, clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.h) URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.h?p2=clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.h&p1=clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.h&r1=246432&r2=246437&rev=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.h (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/ShrinkToFitCheck.h Mon Aug 31 08:17:43 2015 @@ -7,14 +7,14 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_SHRINKTOFITCHECK_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_SHRINKTOFITCHECK_H +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_SHRINKTOFITCHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_SHRINKTOFITCHECK_H #include "../ClangTidy.h" namespace clang { namespace tidy { -namespace readability { +namespace modernize { /// Replace copy and swap tricks on shrinkable containers with the /// `shrink_to_fit()` method call. @@ -30,8 +30,8 @@ public: void check(const ast_matchers::MatchFinder::MatchResult &Result) override; }; -} // namespace readability +} // namespace modernize } // namespace tidy } // namespace clang -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_SHRINKTOFITCHECK_H +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_SHRINKTOFITCHECK_H Copied: clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.cpp (from r246432, clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.cpp) URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.cpp?p2=clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.cpp&p1=clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.cpp&r1=246432&r2=246437&rev=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.cpp Mon Aug 31 08:17:43 2015 @@ -16,7 +16,7 @@ using namespace clang::ast_matchers; namespace clang { namespace tidy { -namespace misc { +namespace modernize { void UseOverrideCheck::registerMatchers(MatchFinder *Finder) { // Only register the matcher for C++11. @@ -192,6 +192,6 @@ void UseOverrideCheck::check(const Match } } -} // namespace misc +} // namespace modernize } // namespace tidy } // namespace clang Copied: clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.h (from r246432, clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.h) URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.h?p2=clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.h&p1=clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.h&r1=246432&r2=246437&rev=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/UseOverrideCheck.h (original) +++ clang-tools-extra/trunk/clang-tidy/modernize/UseOverrideCheck.h Mon Aug 31 08:17:43 2015 @@ -7,14 +7,14 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_USEOVERRIDECHECK_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_USEOVERRIDECHECK_H +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USEOVERRIDECHECK_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USEOVERRIDECHECK_H #include "../ClangTidy.h" namespace clang { namespace tidy { -namespace misc { +namespace modernize { /// Use C++11's `override` and remove `virtual` where applicable. class UseOverrideCheck : public ClangTidyCheck { @@ -25,8 +25,8 @@ public: void check(const ast_matchers::MatchFinder::MatchResult &Result) override; }; -} // namespace misc +} // namespace modernize } // namespace tidy } // namespace clang -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MISC_USEOVERRIDECHECK_H +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USEOVERRIDECHECK_H Modified: clang-tools-extra/trunk/clang-tidy/readability/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/CMakeLists.txt?rev=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/CMakeLists.txt (original) +++ clang-tools-extra/trunk/clang-tidy/readability/CMakeLists.txt Mon Aug 31 08:17:43 2015 @@ -11,7 +11,6 @@ add_clang_library(clangTidyReadabilityMo ReadabilityTidyModule.cpp RedundantStringCStrCheck.cpp RedundantSmartptrGetCheck.cpp - ShrinkToFitCheck.cpp SimplifyBooleanExprCheck.cpp LINK_LIBS Modified: clang-tools-extra/trunk/clang-tidy/readability/ReadabilityTidyModule.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/ReadabilityTidyModule.cpp?rev=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/ReadabilityTidyModule.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/readability/ReadabilityTidyModule.cpp Mon Aug 31 08:17:43 2015 @@ -18,7 +18,6 @@ #include "NamedParameterCheck.h" #include "RedundantSmartptrGetCheck.h" #include "RedundantStringCStrCheck.h" -#include "ShrinkToFitCheck.h" #include "SimplifyBooleanExprCheck.h" namespace clang { @@ -44,8 +43,6 @@ public: "readability-redundant-smartptr-get"); CheckFactories.registerCheck<RedundantStringCStrCheck>( "readability-redundant-string-cstr"); - CheckFactories.registerCheck<ShrinkToFitCheck>( - "readability-shrink-to-fit"); CheckFactories.registerCheck<SimplifyBooleanExprCheck>( "readability-simplify-boolean-expr"); } Removed: clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp?rev=246436&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp (original) +++ clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.cpp (removed) @@ -1,104 +0,0 @@ -//===--- ShrinkToFitCheck.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 "ShrinkToFitCheck.h" -#include "clang/AST/ASTContext.h" -#include "clang/ASTMatchers/ASTMatchFinder.h" -#include "clang/Lex/Lexer.h" -#include "llvm/ADT/StringRef.h" - -using namespace clang::ast_matchers; - -namespace clang { -namespace { -bool isShrinkableContainer(llvm::StringRef ClassName) { - static const char *Shrinkables[] = { - "std::basic_string", - "std::deque", - "std::vector" - }; - return std::binary_search(std::begin(Shrinkables), std::end(Shrinkables), - ClassName); -} - -AST_MATCHER(NamedDecl, stlShrinkableContainer) { - return isShrinkableContainer(Node.getQualifiedNameAsString()); -} -} // namespace - -namespace tidy { -namespace readability { - -void ShrinkToFitCheck::registerMatchers(MatchFinder *Finder) { - // Swap as a function need not to be considered, because rvalue can not - // be bound to a non-const reference. - const auto ShrinkableAsMember = - memberExpr(member(valueDecl().bind("ContainerDecl"))); - const auto ShrinkableAsDecl = - declRefExpr(hasDeclaration(valueDecl().bind("ContainerDecl"))); - const auto CopyCtorCall = constructExpr( - hasArgument(0, anyOf(ShrinkableAsMember, ShrinkableAsDecl, - unaryOperator(has(ShrinkableAsMember)), - unaryOperator(has(ShrinkableAsDecl))))); - const auto SwapParam = expr(anyOf( - memberExpr(member(equalsBoundNode("ContainerDecl"))), - declRefExpr(hasDeclaration(equalsBoundNode("ContainerDecl"))), - unaryOperator(has(memberExpr(member(equalsBoundNode("ContainerDecl"))))), - unaryOperator( - has(declRefExpr(hasDeclaration(equalsBoundNode("ContainerDecl"))))))); - - Finder->addMatcher( - memberCallExpr(on(hasType(namedDecl(stlShrinkableContainer()))), - callee(methodDecl(hasName("swap"))), - has(memberExpr(hasDescendant(CopyCtorCall))), - hasArgument(0, SwapParam.bind("ContainerToShrink")), - unless(isInTemplateInstantiation())) - .bind("CopyAndSwapTrick"), - this); -} - -void ShrinkToFitCheck::check(const MatchFinder::MatchResult &Result) { - const LangOptions &Opts = Result.Context->getLangOpts(); - - if (!Opts.CPlusPlus11) - return; - - const auto *MemberCall = - Result.Nodes.getNodeAs<CXXMemberCallExpr>("CopyAndSwapTrick"); - const auto *Container = Result.Nodes.getNodeAs<Expr>("ContainerToShrink"); - FixItHint Hint; - - if (!MemberCall->getLocStart().isMacroID()) { - std::string ReplacementText; - if (const auto *UnaryOp = llvm::dyn_cast<UnaryOperator>(Container)) { - ReplacementText = - Lexer::getSourceText(CharSourceRange::getTokenRange( - UnaryOp->getSubExpr()->getSourceRange()), - *Result.SourceManager, Opts); - ReplacementText += "->shrink_to_fit()"; - } else { - ReplacementText = Lexer::getSourceText( - CharSourceRange::getTokenRange(Container->getSourceRange()), - *Result.SourceManager, Opts); - ReplacementText += ".shrink_to_fit()"; - } - - Hint = FixItHint::CreateReplacement(MemberCall->getSourceRange(), - ReplacementText); - } - - diag(MemberCall->getLocStart(), "the shrink_to_fit method should be used " - "to reduce the capacity of a shrinkable " - "container") - << Hint; -} - -} // namespace readability -} // namespace tidy -} // namespace clang Removed: clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.h URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.h?rev=246436&view=auto ============================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.h (original) +++ clang-tools-extra/trunk/clang-tidy/readability/ShrinkToFitCheck.h (removed) @@ -1,37 +0,0 @@ -//===--- ShrinkToFitCheck.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_READABILITY_SHRINKTOFITCHECK_H -#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_SHRINKTOFITCHECK_H - -#include "../ClangTidy.h" - -namespace clang { -namespace tidy { -namespace readability { - -/// Replace copy and swap tricks on shrinkable containers with the -/// `shrink_to_fit()` method call. -/// -/// The `shrink_to_fit()` method is more readable and more effective than -/// the copy and swap trick to reduce the capacity of a shrinkable container. -/// Note that, the `shrink_to_fit()` method is only available in C++11 and up. -class ShrinkToFitCheck : public ClangTidyCheck { -public: - ShrinkToFitCheck(StringRef Name, ClangTidyContext *Context) - : ClangTidyCheck(Name, Context) {} - void registerMatchers(ast_matchers::MatchFinder *Finder) override; - void check(const ast_matchers::MatchFinder::MatchResult &Result) override; -}; - -} // namespace readability -} // namespace tidy -} // namespace clang - -#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_READABILITY_SHRINKTOFITCHECK_H 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=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (original) +++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Mon Aug 31 08:17:43 2015 @@ -38,10 +38,11 @@ List of clang-tidy Checks misc-unused-alias-decls misc-unused-parameters misc-unused-raii - misc-use-override modernize-loop-convert modernize-pass-by-value + modernize-shrink-to-fit modernize-use-nullptr + modernize-use-override readability-braces-around-statements readability-container-size-empty readability-else-after-return @@ -50,5 +51,4 @@ List of clang-tidy Checks readability-named-parameter readability-redundant-smartptr-get readability-redundant-string-cstr - readability-shrink-to-fit - readability-simplify-boolean-expr \ No newline at end of file + readability-simplify-boolean-expr Removed: clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst?rev=246436&view=auto ============================================================================== --- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst (original) +++ clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst (removed) @@ -1,5 +0,0 @@ -misc-use-override -================= - - -Use C++11's ``override`` and remove ``virtual`` where applicable. Copied: clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-override.rst (from r246432, clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst) URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-override.rst?p2=clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-override.rst&p1=clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst&r1=246432&r2=246437&rev=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/docs/clang-tidy/checks/misc-use-override.rst (original) +++ clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-override.rst Mon Aug 31 08:17:43 2015 @@ -1,5 +1,5 @@ -misc-use-override -================= +modernize-use-override +====================== Use C++11's ``override`` and remove ``virtual`` where applicable. Removed: clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst?rev=246436&view=auto ============================================================================== --- clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst (original) +++ clang-tools-extra/trunk/docs/clang-tidy/checks/readability-shrink-to-fit.rst (removed) @@ -1,10 +0,0 @@ -readability-shrink-to-fit -========================= - - -Replace copy and swap tricks on shrinkable containers with the -``shrink_to_fit()`` method call. - -The ``shrink_to_fit()`` method is more readable and more effective than -the copy and swap trick to reduce the capacity of a shrinkable container. -Note that, the ``shrink_to_fit()`` method is only available in C++11 and up. Modified: clang-tools-extra/trunk/docs/clang-tidy/index.rst URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/index.rst?rev=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/docs/clang-tidy/index.rst (original) +++ clang-tools-extra/trunk/docs/clang-tidy/index.rst Mon Aug 31 08:17:43 2015 @@ -53,8 +53,14 @@ There are currently the following groups * Checks related to the Google coding conventions have names starting with ``google-``. -* Checks with names starting with ``misc-`` don't relate to any particular - coding style. +* Checks named ``modernize-*`` advocate the usage of modern (currently "modern" + means "C++11") language constructs. + +* The ``readability-`` checks target readability-related issues that don't + relate to any particular coding style. + +* Checks with names starting with ``misc-`` the checks that we didn't have a + better category for. * Clang static analyzer checks are named starting with ``clang-analyzer-``. @@ -494,8 +500,8 @@ The script provides multiple configurati * The default set of checks can be overridden using the ``-checks`` argument, taking the identical format as :program:`clang-tidy` does. For example - ``-checks=-*,misc-use-override`` will run the ``misc-use-override`` - checker only. + ``-checks=-*,modernize-use-override`` will run the ``modernize-use-override`` + check only. * To restrict the files examined you can provide one or more regex arguments that the file names are matched against. Modified: clang-tools-extra/trunk/test/clang-tidy/clang-tidy-diff.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/clang-tidy-diff.cpp?rev=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/clang-tidy-diff.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/clang-tidy-diff.cpp Mon Aug 31 08:17:43 2015 @@ -1,6 +1,6 @@ // RUN: sed 's/placeholder_for_f/f/' %s > %t.cpp -// RUN: clang-tidy -checks=-*,misc-use-override %t.cpp -- -std=c++11 | FileCheck -check-prefix=CHECK-SANITY %s -// RUN: not diff -U0 %s %t.cpp | %python %S/../../clang-tidy/tool/clang-tidy-diff.py -checks=-*,misc-use-override -- -std=c++11 2>&1 | FileCheck %s +// RUN: clang-tidy -checks=-*,modernize-use-override %t.cpp -- -std=c++11 | FileCheck -check-prefix=CHECK-SANITY %s +// RUN: not diff -U0 %s %t.cpp | %python %S/../../clang-tidy/tool/clang-tidy-diff.py -checks=-*,modernize-use-override -- -std=c++11 2>&1 | FileCheck %s struct A { virtual void f() {} virtual void g() {} Modified: clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp?rev=246437&r1=246436&r2=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/diagnostic.cpp Mon Aug 31 08:17:43 2015 @@ -1,7 +1,7 @@ -// RUN: clang-tidy -checks='-*,misc-use-override' %s.nonexistent.cpp -- | FileCheck -check-prefix=CHECK1 %s +// RUN: clang-tidy -checks='-*,modernize-use-override' %s.nonexistent.cpp -- | FileCheck -check-prefix=CHECK1 %s // RUN: clang-tidy -checks='-*,clang-diagnostic-*,google-explicit-constructor' %s -- -fan-unknown-option | FileCheck -check-prefix=CHECK2 %s // RUN: clang-tidy -checks='-*,google-explicit-constructor,clang-diagnostic-literal-conversion' %s -- -fan-unknown-option | FileCheck -check-prefix=CHECK3 %s -// RUN: clang-tidy -checks='-*,misc-use-override,clang-diagnostic-macro-redefined' %s -- -DMACRO_FROM_COMMAND_LINE | FileCheck -check-prefix=CHECK4 %s +// RUN: clang-tidy -checks='-*,modernize-use-override,clang-diagnostic-macro-redefined' %s -- -DMACRO_FROM_COMMAND_LINE | FileCheck -check-prefix=CHECK4 %s // CHECK1-NOT: warning // CHECK2-NOT: warning Removed: clang-tools-extra/trunk/test/clang-tidy/misc-use-override-cxx98.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-use-override-cxx98.cpp?rev=246436&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/misc-use-override-cxx98.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/misc-use-override-cxx98.cpp (removed) @@ -1,19 +0,0 @@ -// RUN: %python %S/check_clang_tidy.py %s misc-use-override %t -- -std=c++98 - -struct Base { - virtual ~Base() {} - virtual void a(); - virtual void b(); -}; - -struct SimpleCases : public Base { -public: - virtual ~SimpleCases(); - // CHECK-FIXES: {{^}} virtual ~SimpleCases(); - - void a(); - // CHECK-FIXES: {{^}} void a(); - - virtual void b(); - // CHECK-FIXES: {{^}} virtual void b(); -}; Removed: clang-tools-extra/trunk/test/clang-tidy/misc-use-override.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/misc-use-override.cpp?rev=246436&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/misc-use-override.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/misc-use-override.cpp (removed) @@ -1,274 +0,0 @@ -// RUN: %python %S/check_clang_tidy.py %s misc-use-override %t - -#define ABSTRACT = 0 - -#define OVERRIDE override -#define VIRTUAL virtual -#define NOT_VIRTUAL -#define NOT_OVERRIDE - -#define MUST_USE_RESULT __attribute__((warn_unused_result)) -#define UNUSED __attribute__((unused)) - -struct MUST_USE_RESULT MustUseResultObject {}; - -struct Base { - virtual ~Base() {} - virtual void a(); - virtual void b(); - virtual void c(); - virtual void d(); - virtual void d2(); - virtual void e() = 0; - virtual void f() = 0; - virtual void g() = 0; - - virtual void j() const; - virtual MustUseResultObject k(); - virtual bool l() MUST_USE_RESULT UNUSED; - virtual bool n() MUST_USE_RESULT UNUSED; - - virtual void m(); - virtual void m2(); - virtual void o() __attribute__((unused)); - - virtual void r() &; - virtual void rr() &&; - - virtual void cv() const volatile; - virtual void cv2() const volatile; -}; - -struct SimpleCases : public Base { -public: - virtual ~SimpleCases(); - // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: prefer using 'override' or (rarely) 'final' instead of 'virtual' - // CHECK-FIXES: {{^}} ~SimpleCases() override; - - void a(); - // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: annotate this - // CHECK-FIXES: {{^}} void a() override; - - void b() override; - // CHECK-MESSAGES-NOT: warning: - // CHECK-FIXES: {{^}} void b() override; - - virtual void c(); - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void c() override; - - virtual void d() override; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant since the function is already declared 'override' - // CHECK-FIXES: {{^}} void d() override; - - virtual void d2() final; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant since the function is already declared 'final' - // CHECK-FIXES: {{^}} void d2() final; - - virtual void e() = 0; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void e() override = 0; - - virtual void f()=0; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void f()override =0; - - virtual void g() ABSTRACT; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void g() override ABSTRACT; - - virtual void j() const; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void j() const override; - - virtual MustUseResultObject k(); // Has an implicit attribute. - // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: prefer using - // CHECK-FIXES: {{^}} MustUseResultObject k() override; - - virtual bool l() MUST_USE_RESULT UNUSED; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} bool l() override MUST_USE_RESULT UNUSED; - - virtual bool n() UNUSED MUST_USE_RESULT; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} bool n() override UNUSED MUST_USE_RESULT; - - void m() override final; - // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: 'override' is redundant since the function is already declared 'final' - // CHECK-FIXES: {{^}} void m() final; - - virtual void m2() override final; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' and 'override' are redundant since the function is already declared 'final' - // CHECK-FIXES: {{^}} void m2() final; - - virtual void o() __attribute__((unused)); - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void o() override __attribute__((unused)); -}; - -// CHECK-MESSAGES-NOT: warning: - -void SimpleCases::c() {} -// CHECK-FIXES: {{^}}void SimpleCases::c() {} - -SimpleCases::~SimpleCases() {} -// CHECK-FIXES: {{^}}SimpleCases::~SimpleCases() {} - -struct DefaultedDestructor : public Base { - DefaultedDestructor() {} - virtual ~DefaultedDestructor() = default; - // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: prefer using - // CHECK-FIXES: {{^}} ~DefaultedDestructor() override = default; -}; - -struct FinalSpecified : public Base { -public: - virtual ~FinalSpecified() final; - // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: 'virtual' is redundant since the function is already declared 'final' - // CHECK-FIXES: {{^}} ~FinalSpecified() final; - - void b() final; - // CHECK-MESSAGES-NOT: warning: - // CHECK-FIXES: {{^}} void b() final; - - virtual void d() final; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant - // CHECK-FIXES: {{^}} void d() final; - - virtual void e() final = 0; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant - // CHECK-FIXES: {{^}} void e() final = 0; - - virtual void j() const final; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant - // CHECK-FIXES: {{^}} void j() const final; - - virtual bool l() final MUST_USE_RESULT UNUSED; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant - // CHECK-FIXES: {{^}} bool l() final MUST_USE_RESULT UNUSED; -}; - -struct InlineDefinitions : public Base { -public: - virtual ~InlineDefinitions() {} - // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: prefer using - // CHECK-FIXES: {{^}} ~InlineDefinitions() override {} - - void a() {} - // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: annotate this - // CHECK-FIXES: {{^}} void a() override {} - - void b() override {} - // CHECK-MESSAGES-NOT: warning: - // CHECK-FIXES: {{^}} void b() override {} - - virtual void c() - {} - // CHECK-MESSAGES: :[[@LINE-2]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void c() override - - virtual void d() override {} - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant - // CHECK-FIXES: {{^}} void d() override {} - - virtual void j() const - {} - // CHECK-MESSAGES: :[[@LINE-2]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void j() const override - - virtual MustUseResultObject k() {} // Has an implicit attribute. - // CHECK-MESSAGES: :[[@LINE-1]]:31: warning: prefer using - // CHECK-FIXES: {{^}} MustUseResultObject k() override {} - - virtual bool l() MUST_USE_RESULT UNUSED {} - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} bool l() override MUST_USE_RESULT UNUSED {} - - virtual void r() & - {} - // CHECK-MESSAGES: :[[@LINE-2]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void r() & override - - virtual void rr() && - {} - // CHECK-MESSAGES: :[[@LINE-2]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void rr() && override - - virtual void cv() const volatile - {} - // CHECK-MESSAGES: :[[@LINE-2]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void cv() const volatile override - - virtual void cv2() const volatile // some comment - {} - // CHECK-MESSAGES: :[[@LINE-2]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void cv2() const volatile override // some comment -}; - -struct Macros : public Base { - // Tests for 'virtual' and 'override' being defined through macros. Basically - // give up for now. - NOT_VIRTUAL void a() NOT_OVERRIDE; - // CHECK-MESSAGES: :[[@LINE-1]]:20: warning: annotate this - // CHECK-FIXES: {{^}} NOT_VIRTUAL void a() override NOT_OVERRIDE; - - VIRTUAL void b() NOT_OVERRIDE; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} VIRTUAL void b() override NOT_OVERRIDE; - - NOT_VIRTUAL void c() OVERRIDE; - // CHECK-MESSAGES-NOT: warning: - // CHECK-FIXES: {{^}} NOT_VIRTUAL void c() OVERRIDE; - - VIRTUAL void d() OVERRIDE; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' is redundant - // CHECK-FIXES: {{^}} VIRTUAL void d() OVERRIDE; - -#define FUNC(return_type, name) return_type name() - FUNC(void, e); - // CHECK-FIXES: {{^}} FUNC(void, e); - -#define F virtual void f(); - F - // CHECK-FIXES: {{^}} F - - VIRTUAL void g() OVERRIDE final; - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: 'virtual' and 'override' are redundant - // CHECK-FIXES: {{^}} VIRTUAL void g() final; -}; - -// Tests for templates. -template <typename T> struct TemplateBase { - virtual void f(T t); -}; - -template <typename T> struct DerivedFromTemplate : public TemplateBase<T> { - virtual void f(T t); - // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer using - // CHECK-FIXES: {{^}} void f(T t) override; -}; -void f() { DerivedFromTemplate<int>().f(2); } - -template <class C> -struct UnusedMemberInstantiation : public C { - virtual ~UnusedMemberInstantiation() {} - // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: prefer using - // CHECK-FIXES: {{^}} ~UnusedMemberInstantiation() override {} -}; -struct IntantiateWithoutUse : public UnusedMemberInstantiation<Base> {}; - -struct Base2 { - virtual ~Base2() {} - virtual void a(); -}; - -// The OverrideAttr isn't propagated to specializations in all cases. Make sure -// we don't add "override" a second time. -template <int I> -struct MembersOfSpecializations : public Base2 { - void a() override; - // CHECK-MESSAGES-NOT: warning: - // CHECK-FIXES: {{^}} void a() override; -}; -template <> void MembersOfSpecializations<3>::a() {} -void ff() { MembersOfSpecializations<3>().a(); }; Copied: clang-tools-extra/trunk/test/clang-tidy/modernize-shrink-to-fit.cpp (from r246432, clang-tools-extra/trunk/test/clang-tidy/readability-shrink-to-fit.cpp) URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-shrink-to-fit.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/modernize-shrink-to-fit.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/readability-shrink-to-fit.cpp&r1=246432&r2=246437&rev=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/readability-shrink-to-fit.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-shrink-to-fit.cpp Mon Aug 31 08:17:43 2015 @@ -1,4 +1,4 @@ -// RUN: %python %S/check_clang_tidy.py %s readability-shrink-to-fit %t +// RUN: %python %S/check_clang_tidy.py %s modernize-shrink-to-fit %t namespace std { template <typename T> struct vector { void swap(vector &other); }; @@ -8,7 +8,7 @@ void f() { std::vector<int> v; std::vector<int>(v).swap(v); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the shrink_to_fit method should be used to reduce the capacity of a shrinkable container [readability-shrink-to-fit] + // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the shrink_to_fit method should be used to reduce the capacity of a shrinkable container [modernize-shrink-to-fit] // CHECK-FIXES: {{^ }}v.shrink_to_fit();{{$}} std::vector<int> &vref = v; Copied: clang-tools-extra/trunk/test/clang-tidy/modernize-use-override-cxx98.cpp (from r246432, clang-tools-extra/trunk/test/clang-tidy/misc-use-override-cxx98.cpp) URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-override-cxx98.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/modernize-use-override-cxx98.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/misc-use-override-cxx98.cpp&r1=246432&r2=246437&rev=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/misc-use-override-cxx98.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-override-cxx98.cpp Mon Aug 31 08:17:43 2015 @@ -1,4 +1,4 @@ -// RUN: %python %S/check_clang_tidy.py %s misc-use-override %t -- -std=c++98 +// RUN: %python %S/check_clang_tidy.py %s modernize-use-override %t -- -std=c++98 struct Base { virtual ~Base() {} Copied: clang-tools-extra/trunk/test/clang-tidy/modernize-use-override.cpp (from r246432, clang-tools-extra/trunk/test/clang-tidy/misc-use-override.cpp) URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-override.cpp?p2=clang-tools-extra/trunk/test/clang-tidy/modernize-use-override.cpp&p1=clang-tools-extra/trunk/test/clang-tidy/misc-use-override.cpp&r1=246432&r2=246437&rev=246437&view=diff ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/misc-use-override.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-override.cpp Mon Aug 31 08:17:43 2015 @@ -1,4 +1,4 @@ -// RUN: %python %S/check_clang_tidy.py %s misc-use-override %t +// RUN: %python %S/check_clang_tidy.py %s modernize-use-override %t #define ABSTRACT = 0 @@ -42,7 +42,7 @@ struct Base { struct SimpleCases : public Base { public: virtual ~SimpleCases(); - // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: prefer using 'override' or (rarely) 'final' instead of 'virtual' + // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: prefer using 'override' or (rarely) 'final' instead of 'virtual' [modernize-use-override] // CHECK-FIXES: {{^}} ~SimpleCases() override; void a(); Removed: clang-tools-extra/trunk/test/clang-tidy/readability-shrink-to-fit.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/readability-shrink-to-fit.cpp?rev=246436&view=auto ============================================================================== --- clang-tools-extra/trunk/test/clang-tidy/readability-shrink-to-fit.cpp (original) +++ clang-tools-extra/trunk/test/clang-tidy/readability-shrink-to-fit.cpp (removed) @@ -1,74 +0,0 @@ -// RUN: %python %S/check_clang_tidy.py %s readability-shrink-to-fit %t - -namespace std { -template <typename T> struct vector { void swap(vector &other); }; -} - -void f() { - std::vector<int> v; - - std::vector<int>(v).swap(v); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the shrink_to_fit method should be used to reduce the capacity of a shrinkable container [readability-shrink-to-fit] - // CHECK-FIXES: {{^ }}v.shrink_to_fit();{{$}} - - std::vector<int> &vref = v; - std::vector<int>(vref).swap(vref); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the shrink_to_fit method should - // CHECK-FIXES: {{^ }}vref.shrink_to_fit();{{$}} - - std::vector<int> *vptr = &v; - std::vector<int>(*vptr).swap(*vptr); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the shrink_to_fit method should - // CHECK-FIXES: {{^ }}vptr->shrink_to_fit();{{$}} -} - -struct X { - std::vector<int> v; - void f() { - std::vector<int>(v).swap(v); - // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: the shrink_to_fit method should - // CHECK-FIXES: {{^ }}v.shrink_to_fit();{{$}} - - std::vector<int> *vptr = &v; - std::vector<int>(*vptr).swap(*vptr); - // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: the shrink_to_fit method should - // CHECK-FIXES: {{^ }}vptr->shrink_to_fit();{{$}} - } -}; - -template <typename T> void g() { - std::vector<int> v; - std::vector<int>(v).swap(v); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the shrink_to_fit method should - // CHECK-FIXES: {{^ }}v.shrink_to_fit();{{$}} - - std::vector<T> v2; - std::vector<T>(v2).swap(v2); - // CHECK-FIXES: {{^ }}std::vector<T>(v2).swap(v2);{{$}} -} - -template <typename T> void g2() { - std::vector<int> v; - std::vector<int>(v).swap(v); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the shrink_to_fit method should - // CHECK-FIXES: {{^ }}v.shrink_to_fit();{{$}} - - T v3; - T(v3).swap(v3); - // CHECK-FIXES: {{^ }}T(v3).swap(v3);{{$}} -} - -#define COPY_AND_SWAP_INT_VEC(x) std::vector<int>(x).swap(x) -// CHECK-FIXES: #define COPY_AND_SWAP_INT_VEC(x) std::vector<int>(x).swap(x) - -void h() { - g<int>(); - g<double>(); - g<bool>(); - g2<std::vector<int>>(); - std::vector<int> v; - COPY_AND_SWAP_INT_VEC(v); - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: the shrink_to_fit method should - // CHECK-FIXES: {{^ }}COPY_AND_SWAP_INT_VEC(v);{{$}} -} - _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits