Skip to content

Commit 1737494

Browse files
authored
Merge pull request #39013 from apple/cherry-rdar82158389
[5.5][Refactoring] Do not try to unique '_'
2 parents c6ef23b + 76e7be0 commit 1737494

File tree

2 files changed

+49
-3
lines changed

2 files changed

+49
-3
lines changed

lib/IDE/Refactoring.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7255,7 +7255,7 @@ class AsyncConverter : private SourceEntityWalker {
72557255
/*Success=*/true);
72567256

72577257
addAwaitCall(CE, ArgList.ref(), Blocks.SuccessBlock, SuccessParams,
7258-
InlinePatterns, HandlerDesc, /*AddDeclarations*/ true);
7258+
InlinePatterns, HandlerDesc, /*AddDeclarations=*/true);
72597259
printOutOfLineBindingPatterns(Blocks.SuccessBlock, InlinePatterns);
72607260
convertNodes(Blocks.SuccessBlock.nodesToPrint());
72617261
clearNames(SuccessParams);
@@ -7266,7 +7266,8 @@ class AsyncConverter : private SourceEntityWalker {
72667266

72677267
// Always use the ErrParam name if none is bound.
72687268
prepareNames(Blocks.ErrorBlock, llvm::makeArrayRef(ErrParam),
7269-
ErrInlinePatterns, HandlerDesc.Type != HandlerType::RESULT);
7269+
ErrInlinePatterns,
7270+
/*AddIfMissing=*/HandlerDesc.Type != HandlerType::RESULT);
72707271
preparePlaceholdersAndUnwraps(HandlerDesc, SuccessParams, ErrParam,
72717272
/*Success=*/false);
72727273

@@ -7547,7 +7548,7 @@ class AsyncConverter : private SourceEntityWalker {
75477548
void addCatch(const ParamDecl *ErrParam) {
75487549
OS << "\n" << tok::r_brace << " " << tok::kw_catch << " ";
75497550
auto ErrName = newNameFor(ErrParam, false);
7550-
if (!ErrName.empty()) {
7551+
if (!ErrName.empty() && ErrName != "_") {
75517552
OS << tok::kw_let << " " << ErrName << " ";
75527553
}
75537554
OS << tok::l_brace;
@@ -7631,6 +7632,8 @@ class AsyncConverter : private SourceEntityWalker {
76317632
/// other names in the current scope.
76327633
Identifier createUniqueName(StringRef Name) {
76337634
Identifier Ident = getASTContext().getIdentifier(Name);
7635+
if (Name == "_")
7636+
return Ident;
76347637

76357638
auto &CurrentNames = Scopes.back().Names;
76367639
if (CurrentNames.count(Ident)) {

test/refactoring/ConvertAsync/convert_function.swift

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,3 +635,46 @@ func twoCompletionHandlerCalls(completion: @escaping (String?, Error?) -> Void)
635635
// TWO-COMPLETION-HANDLER-CALLS-NEXT: return res
636636
// TWO-COMPLETION-HANDLER-CALLS-NEXT: return res
637637
// TWO-COMPLETION-HANDLER-CALLS-NEXT: }
638+
639+
// RUN: %refactor-check-compiles -convert-to-async -dump-text -source-filename %s -pos=%(line+1):1 | %FileCheck -check-prefix=NESTED-IGNORED %s
640+
func nestedIgnored() throws {
641+
simple { _ in
642+
print("done")
643+
simple { _ in
644+
print("done")
645+
}
646+
}
647+
}
648+
// NESTED-IGNORED: func nestedIgnored() async throws {
649+
// NESTED-IGNORED-NEXT: let _ = await simple()
650+
// NESTED-IGNORED-NEXT: print("done")
651+
// NESTED-IGNORED-NEXT: let _ = await simple()
652+
// NESTED-IGNORED-NEXT: print("done")
653+
// NESTED-IGNORED-NEXT: }
654+
655+
// RUN: %refactor-check-compiles -convert-to-async -dump-text -source-filename %s -pos=%(line+1):1 | %FileCheck -check-prefix=IGNORED-ERR %s
656+
func nestedIgnoredErr() throws {
657+
simpleErr(arg: "") { str, _ in
658+
if str == nil {
659+
print("error")
660+
}
661+
662+
simpleErr(arg: "") { str, _ in
663+
if str == nil {
664+
print("error")
665+
}
666+
}
667+
}
668+
}
669+
// IGNORED-ERR: func nestedIgnoredErr() async throws {
670+
// IGNORED-ERR-NEXT: do {
671+
// IGNORED-ERR-NEXT: let str = try await simpleErr(arg: "")
672+
// IGNORED-ERR-NEXT: do {
673+
// IGNORED-ERR-NEXT: let str1 = try await simpleErr(arg: "")
674+
// IGNORED-ERR-NEXT: } catch {
675+
// IGNORED-ERR-NEXT: print("error")
676+
// IGNORED-ERR-NEXT: }
677+
// IGNORED-ERR-NEXT: } catch {
678+
// IGNORED-ERR-NEXT: print("error")
679+
// IGNORED-ERR-NEXT: }
680+
// IGNORED-ERR-NEXT: }

0 commit comments

Comments
 (0)