diff options
| -rw-r--r-- | clang-tools-extra/clang-rename/RenamingAction.cpp | 3 | ||||
| -rw-r--r-- | clang-tools-extra/clang-rename/USRLocFinder.cpp | 22 | ||||
| -rw-r--r-- | clang-tools-extra/clang-rename/USRLocFinder.h | 18 | ||||
| -rw-r--r-- | clang-tools-extra/clang-rename/tool/ClangRename.cpp | 12 | ||||
| -rw-r--r-- | clang-tools-extra/test/clang-rename/NoNewName.cpp | 20 | 
5 files changed, 47 insertions, 28 deletions
diff --git a/clang-tools-extra/clang-rename/RenamingAction.cpp b/clang-tools-extra/clang-rename/RenamingAction.cpp index ac04ae1633e..720190f6562 100644 --- a/clang-tools-extra/clang-rename/RenamingAction.cpp +++ b/clang-tools-extra/clang-rename/RenamingAction.cpp @@ -49,7 +49,8 @@ public:      std::vector<SourceLocation> NewCandidates;      for (const auto &USR : USRs) { -      NewCandidates = getLocationsOfUSR(USR, PrevName, Context.getTranslationUnitDecl()); +      NewCandidates = getLocationsOfUSR(USR, PrevName, +                                        Context.getTranslationUnitDecl());        RenamingCandidates.insert(RenamingCandidates.end(), NewCandidates.begin(),                                  NewCandidates.end());        NewCandidates.clear(); diff --git a/clang-tools-extra/clang-rename/USRLocFinder.cpp b/clang-tools-extra/clang-rename/USRLocFinder.cpp index 878c4babd28..02982b7a2be 100644 --- a/clang-tools-extra/clang-rename/USRLocFinder.cpp +++ b/clang-tools-extra/clang-rename/USRLocFinder.cpp @@ -34,8 +34,8 @@ namespace {  class USRLocFindingASTVisitor      : public clang::RecursiveASTVisitor<USRLocFindingASTVisitor> {  public: -  explicit USRLocFindingASTVisitor(StringRef USR, StringRef PrevName) : USR(USR), PrevName(PrevName) { -  } +  explicit USRLocFindingASTVisitor(StringRef USR, StringRef PrevName) +      : USR(USR), PrevName(PrevName) {}    // Declaration visitors: @@ -60,8 +60,7 @@ public:    bool VisitCXXConstructorDecl(clang::CXXConstructorDecl *ConstructorDecl) {      const ASTContext &Context = ConstructorDecl->getASTContext(); -    for (clang::CXXConstructorDecl::init_const_iterator it = ConstructorDecl->init_begin(); it != ConstructorDecl->init_end(); ++it) { -      const clang::CXXCtorInitializer* Initializer = *it; +    for (auto &Initializer : ConstructorDecl->inits()) {        if (Initializer->getSourceOrder() == -1) {          // Ignore implicit initializers.          continue; @@ -71,9 +70,12 @@ public:          if (getUSRForDecl(FieldDecl) == USR) {            // The initializer refers to a field that is to be renamed.            SourceLocation Location = Initializer->getSourceLocation(); -          StringRef TokenName = Lexer::getSourceText(CharSourceRange::getTokenRange(Location), Context.getSourceManager(), Context.getLangOpts()); +          StringRef TokenName = Lexer::getSourceText( +              CharSourceRange::getTokenRange(Location), +              Context.getSourceManager(), Context.getLangOpts());            if (TokenName == PrevName) { -            // The token of the source location we find actually has the old name. +            // The token of the source location we find actually has the old +            // name.              LocationsFound.push_back(Initializer->getSourceLocation());            }          } @@ -183,14 +185,15 @@ private:    bool handleCXXNamedCastExpr(clang::CXXNamedCastExpr *Expr) {      clang::QualType Type = Expr->getType();      // See if this a cast of a pointer. -    const RecordDecl* Decl = Type->getPointeeCXXRecordDecl(); +    const RecordDecl *Decl = Type->getPointeeCXXRecordDecl();      if (!Decl) {        // See if this is a cast of a reference.        Decl = Type->getAsCXXRecordDecl();      }      if (Decl && getUSRForDecl(Decl) == USR) { -      SourceLocation Location = Expr->getTypeInfoAsWritten()->getTypeLoc().getBeginLoc(); +      SourceLocation Location = +          Expr->getTypeInfoAsWritten()->getTypeLoc().getBeginLoc();        LocationsFound.push_back(Location);      } @@ -205,8 +208,7 @@ private:  };  } // namespace -std::vector<SourceLocation> getLocationsOfUSR(StringRef USR, -                                              StringRef PrevName, +std::vector<SourceLocation> getLocationsOfUSR(StringRef USR, StringRef PrevName,                                                Decl *Decl) {    USRLocFindingASTVisitor visitor(USR, PrevName); diff --git a/clang-tools-extra/clang-rename/USRLocFinder.h b/clang-tools-extra/clang-rename/USRLocFinder.h index d3782a9c45d..e70af59a06f 100644 --- a/clang-tools-extra/clang-rename/USRLocFinder.h +++ b/clang-tools-extra/clang-rename/USRLocFinder.h @@ -16,23 +16,19 @@  #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_RENAME_USR_LOC_FINDER_H  #define LLVM_CLANG_TOOLS_EXTRA_CLANG_RENAME_USR_LOC_FINDER_H +#include "clang/AST/AST.h" +#include "llvm/ADT/StringRef.h"  #include <string>  #include <vector> -#include "llvm/ADT/StringRef.h" -  namespace clang { - -class Decl; -class SourceLocation; -  namespace rename {  // FIXME: make this an AST matcher. Wouldn't that be awesome??? I agree! -std::vector<SourceLocation> getLocationsOfUSR(llvm::StringRef usr, -                                              llvm::StringRef PrevName, -                                              Decl *decl); -} -} +std::vector<SourceLocation> +getLocationsOfUSR(llvm::StringRef USR, llvm::StringRef PrevName, Decl *Decl); + +} // namespace rename +} // namespace clang  #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_RENAME_USR_LOC_FINDER_H diff --git a/clang-tools-extra/clang-rename/tool/ClangRename.cpp b/clang-tools-extra/clang-rename/tool/ClangRename.cpp index 06f719abfb9..e3bdfcd7704 100644 --- a/clang-tools-extra/clang-rename/tool/ClangRename.cpp +++ b/clang-tools-extra/clang-rename/tool/ClangRename.cpp @@ -36,7 +36,6 @@  #include "clang/Tooling/Tooling.h"  #include "llvm/ADT/IntrusiveRefCntPtr.h"  #include "llvm/Support/Host.h" -#include <cstdlib>  #include <string>  using namespace llvm; @@ -83,7 +82,7 @@ ExportFixes(  #define CLANG_RENAME_VERSION "0.0.1"  static void PrintVersion() { -  outs() << "clang-rename version " << CLANG_RENAME_VERSION << "\n"; +  outs() << "clang-rename version " << CLANG_RENAME_VERSION << '\n';  }  using namespace clang; @@ -101,7 +100,6 @@ int main(int argc, const char **argv) {    if (NewName.empty()) {      errs() << "clang-rename: no new name provided.\n\n"; -    cl::PrintHelpMessage();      exit(1);    } @@ -115,12 +113,14 @@ int main(int argc, const char **argv) {    const auto &USRs = USRAction.getUSRs();    const auto &PrevName = USRAction.getUSRSpelling(); -  if (PrevName.empty()) +  if (PrevName.empty()) {      // An error should have already been printed.      exit(1); +  } -  if (PrintName) -    errs() << "clang-rename: found name: " << PrevName << "\n"; +  if (PrintName) { +    errs() << "clang-rename: found name: " << PrevName << '\n'; +  }    // Perform the renaming.    rename::RenamingAction RenameAction(NewName, PrevName, USRs, diff --git a/clang-tools-extra/test/clang-rename/NoNewName.cpp b/clang-tools-extra/test/clang-rename/NoNewName.cpp new file mode 100644 index 00000000000..a706f4263e1 --- /dev/null +++ b/clang-tools-extra/test/clang-rename/NoNewName.cpp @@ -0,0 +1,20 @@ +// This test is a copy of ConstCastExpr.cpp with a single change: +// -new-name hasn't been passed to clang-rename, so this test should give an +// error. +// RUN: not clang-rename -offset=133 %s 2>&1 | FileCheck %s +// CHECK: clang-rename: no new name provided. + +class Cla { +public: +  int getValue() { +    return 0; +  } +}; + +int main() { +  const Cla *C = new Cla(); +  const_cast<Cla *>(C)->getValue(); +} + +// Use grep -FUbo 'Cla' <file> to get the correct offset of foo when changing +// this file.  | 

