omtcyfz created this revision. omtcyfz added reviewers: alexfh, klimek. omtcyfz added a subscriber: cfe-commits.
As Alexander pointed out, LLVM Coding Standards are more conservative about using `auto`, i.e. it should be used in the following situations: * When the type is //obvious//, i.e. explicitly mentioned in the same expression. For example `if (const clang::FieldDecl *FieldDecl = Initializer->getMember())` * When the type is totally non-obvious and one iterates over something. For example `for (const auto &CurrDecl : Context.getTranslationUnitDecl()->decls())`. Otherwise the type should be explicitly stated. https://reviews.llvm.org/D23397 Files: clang-rename/RenamingAction.cpp clang-rename/USRFinder.cpp clang-rename/USRFindingAction.cpp clang-rename/USRLocFinder.cpp
Index: clang-rename/USRLocFinder.cpp =================================================================== --- clang-rename/USRLocFinder.cpp +++ clang-rename/USRLocFinder.cpp @@ -67,7 +67,7 @@ // Expression visitors: bool VisitDeclRefExpr(const DeclRefExpr *Expr) { - const auto *Decl = Expr->getFoundDecl(); + const NamedDecl *Decl = Expr->getFoundDecl(); if (USRSet.find(getUSRForDecl(Decl)) != USRSet.end()) { const SourceManager &Manager = Decl->getASTContext().getSourceManager(); @@ -79,7 +79,7 @@ } bool VisitMemberExpr(const MemberExpr *Expr) { - const auto *Decl = Expr->getFoundDecl().getDecl(); + const NamedDecl *Decl = Expr->getFoundDecl().getDecl(); if (USRSet.find(getUSRForDecl(Decl)) != USRSet.end()) { const SourceManager &Manager = Decl->getASTContext().getSourceManager(); SourceLocation Location = Manager.getSpellingLoc(Expr->getMemberLoc()); @@ -116,7 +116,8 @@ // Namespace traversal: void handleNestedNameSpecifierLoc(NestedNameSpecifierLoc NameLoc) { while (NameLoc) { - const auto *Decl = NameLoc.getNestedNameSpecifier()->getAsNamespace(); + const NamespaceDecl *Decl = + NameLoc.getNestedNameSpecifier()->getAsNamespace(); if (Decl && USRSet.find(getUSRForDecl(Decl)) != USRSet.end()) { checkAndAddLocation(NameLoc.getLocalBeginLoc()); } @@ -126,9 +127,10 @@ private: void checkAndAddLocation(SourceLocation Loc) { - const auto BeginLoc = Loc; - const auto EndLoc = Lexer::getLocForEndOfToken( - BeginLoc, 0, Context.getSourceManager(), Context.getLangOpts()); + const SourceLocation BeginLoc = Loc, + EndLoc = Lexer::getLocForEndOfToken( + BeginLoc, 0, Context.getSourceManager(), + Context.getLangOpts()); StringRef TokenName = Lexer::getSourceText(CharSourceRange::getTokenRange(BeginLoc, EndLoc), Context.getSourceManager(), Context.getLangOpts()); Index: clang-rename/USRFindingAction.cpp =================================================================== --- clang-rename/USRFindingAction.cpp +++ clang-rename/USRFindingAction.cpp @@ -116,14 +116,14 @@ void addUSRsOfOverridenFunctions(const CXXMethodDecl *MethodDecl) { USRSet.insert(getUSRForDecl(MethodDecl)); - for (auto &OverriddenMethod : MethodDecl->overridden_methods()) { + for (const auto &OverriddenMethod : MethodDecl->overridden_methods()) { // Recursively visit each OverridenMethod. addUSRsOfOverridenFunctions(OverriddenMethod); } } bool checkIfOverriddenFunctionAscends(const CXXMethodDecl *MethodDecl) { - for (auto &OverriddenMethod : MethodDecl->overridden_methods()) { + for (const auto &OverriddenMethod : MethodDecl->overridden_methods()) { if (USRSet.find(getUSRForDecl(OverriddenMethod)) != USRSet.end()) { return true; } @@ -143,10 +143,11 @@ struct NamedDeclFindingConsumer : public ASTConsumer { void HandleTranslationUnit(ASTContext &Context) override { - const auto &SourceMgr = Context.getSourceManager(); + const SourceManager &SourceMgr = Context.getSourceManager(); // The file we look for the USR in will always be the main source file. - const auto Point = SourceMgr.getLocForStartOfFile(SourceMgr.getMainFileID()) - .getLocWithOffset(SymbolOffset); + const SourceLocation Point = + SourceMgr.getLocForStartOfFile(SourceMgr.getMainFileID()) + .getLocWithOffset(SymbolOffset); if (!Point.isValid()) return; const NamedDecl *FoundDecl = nullptr; Index: clang-rename/USRFinder.cpp =================================================================== --- clang-rename/USRFinder.cpp +++ clang-rename/USRFinder.cpp @@ -60,23 +60,24 @@ // Expression visitors: bool VisitDeclRefExpr(const DeclRefExpr *Expr) { - const auto *Decl = Expr->getFoundDecl(); + const NamedDecl *Decl = Expr->getFoundDecl(); return setResult(Decl, Expr->getLocation(), Decl->getNameAsString().length()); } bool VisitMemberExpr(const MemberExpr *Expr) { - const auto *Decl = Expr->getFoundDecl().getDecl(); + const NamedDecl *Decl = Expr->getFoundDecl().getDecl(); return setResult(Decl, Expr->getMemberLoc(), Decl->getNameAsString().length()); } // Other visitors: bool VisitTypeLoc(const TypeLoc Loc) { - const auto TypeBeginLoc = Loc.getBeginLoc(); - const auto TypeEndLoc = Lexer::getLocForEndOfToken( - TypeBeginLoc, 0, Context.getSourceManager(), Context.getLangOpts()); + const SourceLocation TypeBeginLoc = Loc.getBeginLoc(), + TypeEndLoc = Lexer::getLocForEndOfToken( + TypeBeginLoc, 0, Context.getSourceManager(), + Context.getLangOpts()); if (const auto *TemplateTypeParm = dyn_cast<TemplateTypeParmType>(Loc.getType())) { return setResult(TemplateTypeParm->getDecl(), TypeBeginLoc, TypeEndLoc); @@ -117,7 +118,8 @@ // \returns false on success and sets Result. void handleNestedNameSpecifierLoc(NestedNameSpecifierLoc NameLoc) { while (NameLoc) { - const auto *Decl = NameLoc.getNestedNameSpecifier()->getAsNamespace(); + const NamespaceDecl *Decl = + NameLoc.getNestedNameSpecifier()->getAsNamespace(); setResult(Decl, NameLoc.getLocalBeginLoc(), NameLoc.getLocalEndLoc()); NameLoc = NameLoc.getPrefix(); } @@ -173,14 +175,13 @@ const NamedDecl *getNamedDeclAt(const ASTContext &Context, const SourceLocation Point) { - const auto SearchFile = Context.getSourceManager().getFilename(Point); + StringRef SearchFile = Context.getSourceManager().getFilename(Point); NamedDeclFindingASTVisitor Visitor(Point, Context); // We only want to search the decls that exist in the same file as the point. - auto Decls = Context.getTranslationUnitDecl()->decls(); - for (auto &CurrDecl : Decls) { - const auto FileLoc = CurrDecl->getLocStart(); - const auto FileName = Context.getSourceManager().getFilename(FileLoc); + for (const auto &CurrDecl : Context.getTranslationUnitDecl()->decls()) { + const SourceLocation FileLoc = CurrDecl->getLocStart(); + StringRef FileName = Context.getSourceManager().getFilename(FileLoc); // FIXME: Add test. if (FileName == SearchFile) { Visitor.TraverseDecl(CurrDecl); Index: clang-rename/RenamingAction.cpp =================================================================== --- clang-rename/RenamingAction.cpp +++ clang-rename/RenamingAction.cpp @@ -52,26 +52,27 @@ void HandleOneRename(ASTContext &Context, const std::string &NewName, const std::string &PrevName, const std::vector<std::string> &USRs) { - const auto &SourceMgr = Context.getSourceManager(); + const SourceManager &SourceMgr = Context.getSourceManager(); std::vector<SourceLocation> RenamingCandidates; std::vector<SourceLocation> NewCandidates; NewCandidates = getLocationsOfUSRs(USRs, PrevName, Context.getTranslationUnitDecl()); RenamingCandidates.insert(RenamingCandidates.end(), NewCandidates.begin(), NewCandidates.end()); - auto PrevNameLen = PrevName.length(); + unsigned PrevNameLen = PrevName.length(); for (const auto &Loc : RenamingCandidates) { if (PrintLocations) { FullSourceLoc FullLoc(Loc, SourceMgr); errs() << "clang-rename: renamed at: " << SourceMgr.getFilename(Loc) << ":" << FullLoc.getSpellingLineNumber() << ":" << FullLoc.getSpellingColumnNumber() << "\n"; } // FIXME: better error handling. - auto Replace = tooling::Replacement(SourceMgr, Loc, PrevNameLen, NewName); - auto Err = FileToReplaces[Replace.getFilePath()].add(Replace); + tooling::Replacement Replace = + tooling::Replacement(SourceMgr, Loc, PrevNameLen, NewName); + llvm::Error Err = FileToReplaces[Replace.getFilePath()].add(Replace); if (Err) llvm::errs() << "Renaming failed in " << Replace.getFilePath() << "! " << llvm::toString(std::move(Err)) << "\n";
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits