@@ -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.
51115111class 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
51635163public:
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