@@ -5109,7 +5109,7 @@ class ScopedDeclCollector : private SourceEntityWalker {
5109
5109
// / the code the user intended. In most cases the refactoring will continue,
5110
5110
// / with any unhandled decls wrapped in placeholders instead.
5111
5111
class AsyncConverter : private SourceEntityWalker {
5112
- ASTContext &Context ;
5112
+ SourceFile *SF ;
5113
5113
SourceManager &SM;
5114
5114
DiagnosticEngine &DiagEngine;
5115
5115
@@ -5162,11 +5162,11 @@ class AsyncConverter : private SourceEntityWalker {
5162
5162
5163
5163
public:
5164
5164
// / Convert a function
5165
- AsyncConverter (ASTContext &Context , SourceManager &SM,
5165
+ AsyncConverter (SourceFile *SF , SourceManager &SM,
5166
5166
DiagnosticEngine &DiagEngine, AbstractFunctionDecl *FD,
5167
5167
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) {
5170
5170
Placeholders.insert (TopHandler.getHandler ());
5171
5171
ScopedDecls.collect (FD);
5172
5172
@@ -5176,21 +5176,21 @@ class AsyncConverter : private SourceEntityWalker {
5176
5176
}
5177
5177
5178
5178
// / 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) {
5184
5182
ScopedDecls.collect (CE);
5185
5183
5186
5184
// Create the initial scope, can be more accurate than the general
5187
5185
// \c ScopedDeclCollector as there is a starting point.
5188
5186
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);
5191
5189
addNewScope (UsedDecls);
5192
5190
}
5193
5191
5192
+ ASTContext &getASTContext () const { return SF->getASTContext (); }
5193
+
5194
5194
bool convert () {
5195
5195
assert (Buffer.empty () && " AsyncConverter can only be used once" );
5196
5196
@@ -5948,7 +5948,7 @@ class AsyncConverter : private SourceEntityWalker {
5948
5948
// / Returns a unique name using \c Name as base that doesn't clash with any
5949
5949
// / other names in the current scope.
5950
5950
Identifier createUniqueName (StringRef Name) {
5951
- Identifier Ident = Context .getIdentifier (Name);
5951
+ Identifier Ident = getASTContext () .getIdentifier (Name);
5952
5952
5953
5953
auto &CurrentNames = ScopedNames.back ();
5954
5954
if (CurrentNames.count (Ident)) {
@@ -5959,7 +5959,7 @@ class AsyncConverter : private SourceEntityWalker {
5959
5959
do {
5960
5960
UniquedName = Name;
5961
5961
UniquedName.append (std::to_string (UniqueId));
5962
- Ident = Context .getIdentifier (UniquedName);
5962
+ Ident = getASTContext () .getIdentifier (UniquedName);
5963
5963
UniqueId++;
5964
5964
} while (CurrentNames.count (Ident));
5965
5965
}
@@ -6246,7 +6246,7 @@ bool RefactoringActionConvertCallToAsyncAlternative::performChange() {
6246
6246
if (!Scopes.empty ())
6247
6247
Scope = cast<BraceStmt>(Scopes.back ().get <Stmt *>());
6248
6248
6249
- AsyncConverter Converter (Ctx , SM, DiagEngine, CE, Scope, *CursorInfo. SF );
6249
+ AsyncConverter Converter (TheFile , SM, DiagEngine, CE, Scope);
6250
6250
if (!Converter.convert ())
6251
6251
return true ;
6252
6252
@@ -6274,7 +6274,7 @@ bool RefactoringActionConvertToAsync::performChange() {
6274
6274
" Should not run performChange when refactoring is not applicable" );
6275
6275
6276
6276
auto HandlerDesc = AsyncHandlerParamDesc::find (FD, /* ignoreName=*/ true );
6277
- AsyncConverter Converter (Ctx , SM, DiagEngine, FD, HandlerDesc);
6277
+ AsyncConverter Converter (TheFile , SM, DiagEngine, FD, HandlerDesc);
6278
6278
if (!Converter.convert ())
6279
6279
return true ;
6280
6280
@@ -6311,14 +6311,14 @@ bool RefactoringActionAddAsyncAlternative::performChange() {
6311
6311
assert (HandlerDesc.isValid () &&
6312
6312
" Should not run performChange when refactoring is not applicable" );
6313
6313
6314
- AsyncConverter Converter (Ctx , SM, DiagEngine, FD, HandlerDesc);
6314
+ AsyncConverter Converter (TheFile , SM, DiagEngine, FD, HandlerDesc);
6315
6315
if (!Converter.convert ())
6316
6316
return true ;
6317
6317
6318
6318
EditConsumer.accept (SM, FD->getAttributeInsertionLoc (false ),
6319
6319
" @available(*, deprecated, message: \" Prefer async "
6320
6320
" alternative instead\" )\n " );
6321
- AsyncConverter LegacyBodyCreator (Ctx , SM, DiagEngine, FD, HandlerDesc);
6321
+ AsyncConverter LegacyBodyCreator (TheFile , SM, DiagEngine, FD, HandlerDesc);
6322
6322
if (LegacyBodyCreator.createLegacyBody ()) {
6323
6323
LegacyBodyCreator.replace (FD->getBody (), EditConsumer);
6324
6324
}
0 commit comments