Skip to content

Commit 3a7a880

Browse files
committed
[Refactoring] Store SourceFile on AsyncConverter
1 parent a2ce02a commit 3a7a880

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

lib/IDE/Refactoring.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5109,7 +5109,7 @@ class ScopedDeclCollector : private SourceEntityWalker {
51095109
/// the code the user intended. In most cases the refactoring will continue,
51105110
/// with any unhandled decls wrapped in placeholders instead.
51115111
class AsyncConverter : private SourceEntityWalker {
5112-
ASTContext &Context;
5112+
SourceFile *SF;
51135113
SourceManager &SM;
51145114
DiagnosticEngine &DiagEngine;
51155115

@@ -5162,11 +5162,11 @@ class AsyncConverter : private SourceEntityWalker {
51625162

51635163
public:
51645164
/// Convert a function
5165-
AsyncConverter(ASTContext &Context, SourceManager &SM,
5165+
AsyncConverter(SourceFile *SF, SourceManager &SM,
51665166
DiagnosticEngine &DiagEngine, AbstractFunctionDecl *FD,
51675167
const AsyncHandlerParamDesc &TopHandler)
5168-
: Context(Context), SM(SM), DiagEngine(DiagEngine),
5169-
StartNode(FD), TopHandler(TopHandler), OS(Buffer) {
5168+
: SF(SF), SM(SM), DiagEngine(DiagEngine), StartNode(FD),
5169+
TopHandler(TopHandler), OS(Buffer) {
51705170
Placeholders.insert(TopHandler.getHandler());
51715171
ScopedDecls.collect(FD);
51725172

@@ -5176,21 +5176,21 @@ class AsyncConverter : private SourceEntityWalker {
51765176
}
51775177

51785178
/// Convert a call
5179-
AsyncConverter(ASTContext &Context, SourceManager &SM,
5180-
DiagnosticEngine &DiagEngine, CallExpr *CE, BraceStmt *Scope,
5181-
SourceFile &SF)
5182-
: Context(Context), SM(SM), DiagEngine(DiagEngine),
5183-
StartNode(CE), OS(Buffer) {
5179+
AsyncConverter(SourceFile *SF, SourceManager &SM,
5180+
DiagnosticEngine &DiagEngine, CallExpr *CE, BraceStmt *Scope)
5181+
: SF(SF), SM(SM), DiagEngine(DiagEngine), StartNode(CE), OS(Buffer) {
51845182
ScopedDecls.collect(CE);
51855183

51865184
// Create the initial scope, can be more accurate than the general
51875185
// \c ScopedDeclCollector as there is a starting point.
51885186
llvm::DenseSet<const Decl *> UsedDecls;
5189-
DeclCollector::collect(Scope, SF, UsedDecls);
5190-
ReferenceCollector::collect(StartNode, Scope, SF, UsedDecls);
5187+
DeclCollector::collect(Scope, *SF, UsedDecls);
5188+
ReferenceCollector::collect(StartNode, Scope, *SF, UsedDecls);
51915189
addNewScope(UsedDecls);
51925190
}
51935191

5192+
ASTContext &getASTContext() const { return SF->getASTContext(); }
5193+
51945194
bool convert() {
51955195
assert(Buffer.empty() && "AsyncConverter can only be used once");
51965196

@@ -5948,7 +5948,7 @@ class AsyncConverter : private SourceEntityWalker {
59485948
/// Returns a unique name using \c Name as base that doesn't clash with any
59495949
/// other names in the current scope.
59505950
Identifier createUniqueName(StringRef Name) {
5951-
Identifier Ident = Context.getIdentifier(Name);
5951+
Identifier Ident = getASTContext().getIdentifier(Name);
59525952

59535953
auto &CurrentNames = ScopedNames.back();
59545954
if (CurrentNames.count(Ident)) {
@@ -5959,7 +5959,7 @@ class AsyncConverter : private SourceEntityWalker {
59595959
do {
59605960
UniquedName = Name;
59615961
UniquedName.append(std::to_string(UniqueId));
5962-
Ident = Context.getIdentifier(UniquedName);
5962+
Ident = getASTContext().getIdentifier(UniquedName);
59635963
UniqueId++;
59645964
} while (CurrentNames.count(Ident));
59655965
}
@@ -6246,7 +6246,7 @@ bool RefactoringActionConvertCallToAsyncAlternative::performChange() {
62466246
if (!Scopes.empty())
62476247
Scope = cast<BraceStmt>(Scopes.back().get<Stmt *>());
62486248

6249-
AsyncConverter Converter(Ctx, SM, DiagEngine, CE, Scope, *CursorInfo.SF);
6249+
AsyncConverter Converter(TheFile, SM, DiagEngine, CE, Scope);
62506250
if (!Converter.convert())
62516251
return true;
62526252

@@ -6274,7 +6274,7 @@ bool RefactoringActionConvertToAsync::performChange() {
62746274
"Should not run performChange when refactoring is not applicable");
62756275

62766276
auto HandlerDesc = AsyncHandlerParamDesc::find(FD, /*ignoreName=*/true);
6277-
AsyncConverter Converter(Ctx, SM, DiagEngine, FD, HandlerDesc);
6277+
AsyncConverter Converter(TheFile, SM, DiagEngine, FD, HandlerDesc);
62786278
if (!Converter.convert())
62796279
return true;
62806280

@@ -6311,14 +6311,14 @@ bool RefactoringActionAddAsyncAlternative::performChange() {
63116311
assert(HandlerDesc.isValid() &&
63126312
"Should not run performChange when refactoring is not applicable");
63136313

6314-
AsyncConverter Converter(Ctx, SM, DiagEngine, FD, HandlerDesc);
6314+
AsyncConverter Converter(TheFile, SM, DiagEngine, FD, HandlerDesc);
63156315
if (!Converter.convert())
63166316
return true;
63176317

63186318
EditConsumer.accept(SM, FD->getAttributeInsertionLoc(false),
63196319
"@available(*, deprecated, message: \"Prefer async "
63206320
"alternative instead\")\n");
6321-
AsyncConverter LegacyBodyCreator(Ctx, SM, DiagEngine, FD, HandlerDesc);
6321+
AsyncConverter LegacyBodyCreator(TheFile, SM, DiagEngine, FD, HandlerDesc);
63226322
if (LegacyBodyCreator.createLegacyBody()) {
63236323
LegacyBodyCreator.replace(FD->getBody(), EditConsumer);
63246324
}

0 commit comments

Comments
 (0)