summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/cpp11-migrate/UseNullptr
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2013-08-30 22:09:03 +0000
committerMichael Gottesman <mgottesman@apple.com>2013-08-30 22:09:03 +0000
commit92d9cb4dd1fcf633e264cbacbcdcd1b5c6f10714 (patch)
treeaba42a41d482498dd4f83c88fb5c1b1aebea25ab /clang-tools-extra/cpp11-migrate/UseNullptr
parent79917a913e20d964708e89a721197febc60e8391 (diff)
downloadbcm5719-llvm-92d9cb4dd1fcf633e264cbacbcdcd1b5c6f10714.tar.gz
bcm5719-llvm-92d9cb4dd1fcf633e264cbacbcdcd1b5c6f10714.zip
Revert "cpp11-migrate: Fixing autoconf build after adding libclangReplace dependency"
Revert "cpp11-migrate: Refactor for driver model of operation" This reverts commit r189691. This reverts commit r189689. This was breaking the phase 1 OS X build for ~2 hours. https://smooshbase.apple.com/buildbot-internal/builders/phase1%20-%20sanity/builds/9559 I reverted the latter commit since I think the latter depended on the former. llvm-svn: 189700
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/UseNullptr')
-rw-r--r--clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp33
-rw-r--r--clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.h6
-rw-r--r--clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.cpp5
-rw-r--r--clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.h2
4 files changed, 25 insertions, 21 deletions
diff --git a/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp b/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp
index 23a8fd3a476..e170801a034 100644
--- a/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp
+++ b/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.cpp
@@ -47,7 +47,7 @@ bool isReplaceableRange(SourceLocation StartLoc, SourceLocation EndLoc,
/// \brief Replaces the provided range with the text "nullptr", but only if
/// the start and end location are both in main file.
/// Returns true if and only if a replacement was made.
-void ReplaceWithNullptr(Transform &Owner, SourceManager &SM,
+void ReplaceWithNullptr(tooling::Replacements &Replace, SourceManager &SM,
SourceLocation StartLoc, SourceLocation EndLoc) {
CharSourceRange Range(SourceRange(StartLoc, EndLoc), true);
// Add a space if nullptr follows an alphanumeric character. This happens
@@ -55,11 +55,9 @@ void ReplaceWithNullptr(Transform &Owner, SourceManager &SM,
// parentheses and right beside a return statement.
SourceLocation PreviousLocation = StartLoc.getLocWithOffset(-1);
if (isAlphanumeric(*FullSourceLoc(PreviousLocation, SM).getCharacterData()))
- Owner.addReplacementForCurrentTU(
- tooling::Replacement(SM, Range, " nullptr"));
+ Replace.insert(tooling::Replacement(SM, Range, " nullptr"));
else
- Owner.addReplacementForCurrentTU(
- tooling::Replacement(SM, Range, "nullptr"));
+ Replace.insert(tooling::Replacement(SM, Range, "nullptr"));
}
/// \brief Returns the name of the outermost macro.
@@ -155,9 +153,10 @@ private:
/// ambiguities.
class CastSequenceVisitor : public RecursiveASTVisitor<CastSequenceVisitor> {
public:
- CastSequenceVisitor(ASTContext &Context, const UserMacroNames &UserNullMacros,
- unsigned &AcceptedChanges, Transform &Owner)
- : SM(Context.getSourceManager()), Context(Context),
+ CastSequenceVisitor(tooling::Replacements &R, ASTContext &Context,
+ const UserMacroNames &UserNullMacros,
+ unsigned &AcceptedChanges, const Transform &Owner)
+ : Replace(R), SM(Context.getSourceManager()), Context(Context),
UserNullMacros(UserNullMacros), AcceptedChanges(AcceptedChanges),
Owner(Owner), FirstSubExpr(0), PruneSubtree(false) {}
@@ -197,7 +196,7 @@ public:
FileLocEnd = SM.getFileLoc(EndLoc);
if (isReplaceableRange(FileLocStart, FileLocEnd, SM, Owner) &&
allArgUsesValid(C)) {
- ReplaceWithNullptr(Owner, SM, FileLocStart, FileLocEnd);
+ ReplaceWithNullptr(Replace, SM, FileLocStart, FileLocEnd);
++AcceptedChanges;
}
return skipSubTree();
@@ -221,7 +220,7 @@ public:
if (!isReplaceableRange(StartLoc, EndLoc, SM, Owner)) {
return skipSubTree();
}
- ReplaceWithNullptr(Owner, SM, StartLoc, EndLoc);
+ ReplaceWithNullptr(Replace, SM, StartLoc, EndLoc);
++AcceptedChanges;
return skipSubTree();
@@ -418,19 +417,21 @@ private:
}
private:
+ tooling::Replacements &Replace;
SourceManager &SM;
ASTContext &Context;
const UserMacroNames &UserNullMacros;
unsigned &AcceptedChanges;
- Transform &Owner;
+ const Transform &Owner;
Expr *FirstSubExpr;
bool PruneSubtree;
};
} // namespace
-NullptrFixer::NullptrFixer(unsigned &AcceptedChanges, RiskLevel,
- Transform &Owner)
- : AcceptedChanges(AcceptedChanges), Owner(Owner) {
+NullptrFixer::NullptrFixer(clang::tooling::Replacements &Replace,
+ unsigned &AcceptedChanges, RiskLevel,
+ const Transform &Owner)
+ : Replace(Replace), AcceptedChanges(AcceptedChanges), Owner(Owner) {
if (!UserNullMacroNames.empty()) {
llvm::StringRef S = UserNullMacroNames;
S.split(UserNullMacros, ",");
@@ -444,7 +445,7 @@ void NullptrFixer::run(const ast_matchers::MatchFinder::MatchResult &Result) {
// Given an implicit null-ptr cast or an explicit cast with an implicit
// null-to-pointer cast within use CastSequenceVisitor to identify sequences
// of explicit casts that can be converted into 'nullptr'.
- CastSequenceVisitor Visitor(*Result.Context, UserNullMacros, AcceptedChanges,
- Owner);
+ CastSequenceVisitor Visitor(Replace, *Result.Context, UserNullMacros,
+ AcceptedChanges, Owner);
Visitor.TraverseStmt(const_cast<CastExpr *>(NullCast));
}
diff --git a/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.h b/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.h
index 02da6b76db0..f647d8e4d65 100644
--- a/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.h
+++ b/clang-tools-extra/cpp11-migrate/UseNullptr/NullptrActions.h
@@ -27,15 +27,17 @@ typedef llvm::SmallVector<llvm::StringRef, 1> UserMacroNames;
///
class NullptrFixer : public clang::ast_matchers::MatchFinder::MatchCallback {
public:
- NullptrFixer(unsigned &AcceptedChanges, RiskLevel, Transform &Owner);
+ NullptrFixer(clang::tooling::Replacements &Replace, unsigned &AcceptedChanges,
+ RiskLevel, const Transform &Owner);
/// \brief Entry point to the callback called when matches are made.
virtual void run(const clang::ast_matchers::MatchFinder::MatchResult &Result);
private:
+ clang::tooling::Replacements &Replace;
unsigned &AcceptedChanges;
UserMacroNames UserNullMacros;
- Transform &Owner;
+ const Transform &Owner;
};
#endif // CPP11_MIGRATE_NULLPTR_ACTIONS_H
diff --git a/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.cpp b/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.cpp
index e07ee6682ee..afeec4a10af 100644
--- a/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.cpp
+++ b/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.cpp
@@ -24,7 +24,7 @@ using clang::ast_matchers::MatchFinder;
using namespace clang::tooling;
using namespace clang;
-int UseNullptrTransform::apply(const FileOverrides &InputStates,
+int UseNullptrTransform::apply(FileOverrides &InputStates,
const CompilationDatabase &Database,
const std::vector<std::string> &SourcePaths) {
ClangTool UseNullptrTool(Database, SourcePaths);
@@ -32,7 +32,8 @@ int UseNullptrTransform::apply(const FileOverrides &InputStates,
unsigned AcceptedChanges = 0;
MatchFinder Finder;
- NullptrFixer Fixer(AcceptedChanges, Options().MaxRiskLevel, /*Owner=*/ *this);
+ NullptrFixer Fixer(getReplacements(), AcceptedChanges, Options().MaxRiskLevel,
+ /*Owner=*/ *this);
Finder.addMatcher(makeCastSequenceMatcher(), &Fixer);
diff --git a/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.h b/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.h
index ed90f9a5bbc..873ffab0702 100644
--- a/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.h
+++ b/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.h
@@ -28,7 +28,7 @@ public:
: Transform("UseNullptr", Options) {}
/// \see Transform::run().
- virtual int apply(const FileOverrides &InputStates,
+ virtual int apply(FileOverrides &InputStates,
const clang::tooling::CompilationDatabase &Database,
const std::vector<std::string> &SourcePaths) LLVM_OVERRIDE;
};
OpenPOWER on IntegriCloud