Skip to content

Commit 318f09f

Browse files
committed
Revert "cpp11-migrate: Write header replacements to disk"
This reverts commit 187204. It broke the freebsd bots: http://lab.llvm.org:8011/builders/clang-X86_64-freebsd/builds/9561 llvm-svn: 187227
1 parent 71befda commit 318f09f

File tree

16 files changed

+60
-466
lines changed

16 files changed

+60
-466
lines changed

clang-tools-extra/cpp11-migrate/Core/FileOverrides.cpp

Lines changed: 33 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -23,39 +23,28 @@
2323
#include "llvm/Support/Path.h"
2424
#include "llvm/Support/raw_ostream.h"
2525
#include "llvm/Support/system_error.h"
26-
#include <algorithm>
2726

2827
using namespace clang;
2928
using namespace clang::tooling;
3029

31-
void HeaderOverride::recordReplacements(
32-
llvm::StringRef TransformID, const clang::tooling::Replacements &Replaces) {
33-
TransformReplacements TR;
34-
TR.TransformID = TransformID;
35-
TR.GeneratedReplacements.resize(Replaces.size());
36-
std::copy(Replaces.begin(), Replaces.end(), TR.GeneratedReplacements.begin());
37-
TransformReplacementsDoc.Replacements.push_back(TR);
38-
}
39-
4030
SourceOverrides::SourceOverrides(llvm::StringRef MainFileName,
4131
bool TrackChanges)
4232
: MainFileName(MainFileName), TrackChanges(TrackChanges) {}
4333

44-
void SourceOverrides::applyReplacements(tooling::Replacements &Replaces,
45-
llvm::StringRef TransformName) {
34+
void
35+
SourceOverrides::applyReplacements(clang::tooling::Replacements &Replaces) {
4636
llvm::IntrusiveRefCntPtr<clang::DiagnosticOptions> DiagOpts(
4737
new DiagnosticOptions());
4838
DiagnosticsEngine Diagnostics(
4939
llvm::IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()),
5040
DiagOpts.getPtr());
5141
FileManager Files((FileSystemOptions()));
5242
SourceManager SM(Diagnostics, Files);
53-
applyReplacements(Replaces, SM, TransformName);
43+
applyReplacements(Replaces, SM);
5444
}
5545

56-
void SourceOverrides::applyReplacements(tooling::Replacements &Replaces,
57-
SourceManager &SM,
58-
llvm::StringRef TransformName) {
46+
void SourceOverrides::applyReplacements(clang::tooling::Replacements &Replaces,
47+
clang::SourceManager &SM) {
5948
applyOverrides(SM);
6049

6150
Rewriter Rewrites(SM, LangOptions());
@@ -67,6 +56,12 @@ void SourceOverrides::applyReplacements(tooling::Replacements &Replaces,
6756
if (!Success)
6857
llvm::errs() << "error: failed to apply some replacements.";
6958

59+
applyRewrites(Rewrites);
60+
if (TrackChanges)
61+
adjustChangedRanges(Replaces);
62+
}
63+
64+
void SourceOverrides::applyRewrites(Rewriter &Rewrites) {
7065
std::string ResultBuf;
7166

7267
for (Rewriter::buffer_iterator I = Rewrites.buffer_begin(),
@@ -94,50 +89,36 @@ void SourceOverrides::applyReplacements(tooling::Replacements &Replaces,
9489
// will be stored as well for later output to disk. Applying replacements
9590
// in memory will always be necessary as the source goes down the transform
9691
// pipeline.
92+
9793
HeaderOverride &HeaderOv = Headers[FileName];
94+
HeaderOv.FileOverride.swap(ResultBuf);
9895
// "Create" HeaderOverride if not already existing
99-
if (HeaderOv.getFileName().empty())
100-
HeaderOv = HeaderOverride(FileName);
101-
102-
HeaderOv.swapContentOverride(ResultBuf);
96+
if (HeaderOv.FileName.empty())
97+
HeaderOv.FileName = FileName;
10398
}
99+
}
104100

105-
// Separate replacements to header files
101+
void SourceOverrides::adjustChangedRanges(const Replacements &Replaces) {
102+
// Start by grouping replacements by file name
106103
Replacements MainFileReplaces;
107-
ReplacementsMap HeadersReplaces;
108-
for (Replacements::const_iterator I = Replaces.begin(), E = Replaces.end();
109-
I != E; ++I) {
104+
llvm::StringMap<Replacements> HeadersReplaces;
105+
106+
for (Replacements::iterator I = Replaces.begin(), E = Replaces.end(); I != E;
107+
++I) {
110108
llvm::StringRef ReplacementFileName = I->getFilePath();
111109

112-
if (ReplacementFileName == MainFileName) {
110+
if (ReplacementFileName == MainFileName)
113111
MainFileReplaces.insert(*I);
114-
continue;
115-
}
116-
117-
HeadersReplaces[ReplacementFileName].insert(*I);
112+
else
113+
HeadersReplaces[ReplacementFileName].insert(*I);
118114
}
119115

120-
// Record all replacements to headers.
121-
for (ReplacementsMap::const_iterator I = HeadersReplaces.begin(),
122-
E = HeadersReplaces.end();
123-
I != E; ++I) {
124-
HeaderOverride &HeaderOv = Headers[I->getKey()];
125-
HeaderOv.recordReplacements(TransformName, I->getValue());
126-
}
127-
128-
if (TrackChanges)
129-
adjustChangedRanges(MainFileReplaces, HeadersReplaces);
130-
}
131-
132-
void
133-
SourceOverrides::adjustChangedRanges(const Replacements &MainFileReplaces,
134-
const ReplacementsMap &HeadersReplaces) {
135-
// Adjust the changed ranges for each individual file
136-
MainFileChanges.adjustChangedRanges(MainFileReplaces);
137-
for (ReplacementsMap::const_iterator I = HeadersReplaces.begin(),
138-
E = HeadersReplaces.end();
116+
// Then adjust the changed ranges for each individual file
117+
MainFileChanges.adjustChangedRanges(Replaces);
118+
for (llvm::StringMap<Replacements>::iterator I = HeadersReplaces.begin(),
119+
E = HeadersReplaces.end();
139120
I != E; ++I) {
140-
Headers[I->getKey()].adjustChangedRanges(I->getValue());
121+
Headers[I->getKey()].Changes.adjustChangedRanges(I->getValue());
141122
}
142123
}
143124

@@ -150,11 +131,11 @@ void SourceOverrides::applyOverrides(SourceManager &SM) const {
150131

151132
for (HeaderOverrides::const_iterator I = Headers.begin(), E = Headers.end();
152133
I != E; ++I) {
153-
assert(!I->second.getContentOverride().empty() &&
134+
assert(!I->second.FileOverride.empty() &&
154135
"Header override should not be empty!");
155136
SM.overrideFileContents(
156-
FM.getFile(I->second.getFileName()),
157-
llvm::MemoryBuffer::getMemBuffer(I->second.getContentOverride()));
137+
FM.getFile(I->second.FileName),
138+
llvm::MemoryBuffer::getMemBuffer(I->second.FileOverride));
158139
}
159140
}
160141

clang-tools-extra/cpp11-migrate/Core/FileOverrides.h

Lines changed: 7 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#ifndef CPP11_MIGRATE_FILE_OVERRIDES_H
1717
#define CPP11_MIGRATE_FILE_OVERRIDES_H
1818

19-
#include "Core/ReplacementsYaml.h"
2019
#include "clang/Tooling/Refactoring.h"
2120
#include "llvm/ADT/StringMap.h"
2221

@@ -59,52 +58,13 @@ class ChangedRanges {
5958
};
6059

6160
/// \brief Container for storing override information for a single headers.
62-
class HeaderOverride {
63-
public:
64-
/// \brief Constructors.
65-
/// @{
61+
struct HeaderOverride {
6662
HeaderOverride() {}
67-
HeaderOverride(llvm::StringRef FileName) {
68-
TransformReplacementsDoc.FileName = FileName;
69-
}
70-
/// @}
71-
72-
/// \brief Getter for FileName.
73-
llvm::StringRef getFileName() const {
74-
return TransformReplacementsDoc.FileName;
75-
}
76-
77-
/// \brief Accessor for ContentOverride.
78-
/// @{
79-
llvm::StringRef getContentOverride() const { return ContentOverride; }
80-
void setContentOverride(const llvm::StringRef S) { ContentOverride = S; }
81-
/// @}
82-
83-
/// \brief Getter for Changes.
84-
const ChangedRanges &getChanges() const { return Changes; }
63+
HeaderOverride(llvm::StringRef FileName) : FileName(FileName) {}
8564

86-
/// \brief Swaps the content of ContentOverride with \param S
87-
void swapContentOverride(std::string &S) { ContentOverride.swap(S); }
88-
89-
/// \brief Getter for TransformReplacementsDoc.
90-
const TransformDocument &getTransformReplacementsDoc() const {
91-
return TransformReplacementsDoc;
92-
}
93-
94-
/// \brief Stores the replacements made by a transform to the header this
95-
/// object represents.
96-
void recordReplacements(llvm::StringRef TransformID,
97-
const clang::tooling::Replacements &Replaces);
98-
99-
/// \brief Helper function to adjust the changed ranges.
100-
void adjustChangedRanges(const clang::tooling::Replacements &Replaces) {
101-
Changes.adjustChangedRanges(Replaces);
102-
}
103-
104-
private:
105-
std::string ContentOverride;
65+
std::string FileName;
66+
std::string FileOverride;
10667
ChangedRanges Changes;
107-
TransformDocument TransformReplacementsDoc;
10868
};
10969

11070
/// \brief Container mapping header file names to override information.
@@ -140,10 +100,8 @@ class SourceOverrides {
140100
/// \param Replaces The replacements to apply.
141101
/// \param SM A user provided SourceManager to be used when applying rewrites.
142102
void applyReplacements(clang::tooling::Replacements &Replaces,
143-
clang::SourceManager &SM,
144-
llvm::StringRef TransformName);
145-
void applyReplacements(clang::tooling::Replacements &Replaces,
146-
llvm::StringRef TransformName);
103+
clang::SourceManager &SM);
104+
void applyReplacements(clang::tooling::Replacements &Replaces);
147105

148106
/// \brief Convenience function for applying this source's overrides to
149107
/// the given SourceManager.
@@ -160,16 +118,13 @@ class SourceOverrides {
160118
/// @}
161119

162120
private:
163-
typedef llvm::StringMap<clang::tooling::Replacements> ReplacementsMap;
164-
165121
/// \brief Flatten the Rewriter buffers of \p Rewrite and store results as
166122
/// file content overrides.
167123
void applyRewrites(clang::Rewriter &Rewrite);
168124

169125
/// \brief Adjust the changed ranges to reflect the parts of the files that
170126
/// have been replaced.
171-
void adjustChangedRanges(const clang::tooling::Replacements &Replaces,
172-
const ReplacementsMap &HeadersReplaces);
127+
void adjustChangedRanges(const clang::tooling::Replacements &Replaces);
173128

174129
const std::string MainFileName;
175130
std::string MainFileOverride;

clang-tools-extra/cpp11-migrate/Core/Reformatting.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ void Reformatter::reformatChanges(SourceOverrides &Overrides,
4747
I != E; ++I) {
4848
const HeaderOverride &Header = I->getValue();
4949
const tooling::Replacements &HeaderReplaces =
50-
reformatSingleFile(Header.getFileName(), Header.getChanges(), SM);
50+
reformatSingleFile(Header.FileName, Header.Changes, SM);
5151
Replaces.insert(HeaderReplaces.begin(), HeaderReplaces.end());
5252
}
53-
Overrides.applyReplacements(Replaces, SM, "reformatter");
53+
Overrides.applyReplacements(Replaces, SM);
5454
}
5555

5656
tooling::Replacements Reformatter::reformatSingleFile(

clang-tools-extra/cpp11-migrate/Core/ReplacementsYaml.h

Lines changed: 0 additions & 115 deletions
This file was deleted.

clang-tools-extra/cpp11-migrate/Core/Transform.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ bool Transform::handleBeginSource(CompilerInstance &CI, StringRef Filename) {
117117
void Transform::handleEndSource() {
118118
if (!getReplacements().empty()) {
119119
SourceOverrides &SO = Overrides->getOrCreate(CurrentSource);
120-
SO.applyReplacements(getReplacements(), getName());
120+
SO.applyReplacements(getReplacements());
121121
}
122122

123123
if (Options().EnableTiming)

0 commit comments

Comments
 (0)