Skip to content

Commit 9b8d9e2

Browse files
authored
Merge pull request #38981 from apple/skip-underscore
[Refactoring] Do not try to unique '_'
2 parents 259cf54 + 6a79964 commit 9b8d9e2

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
@@ -7214,7 +7214,7 @@ class AsyncConverter : private SourceEntityWalker {
72147214
/*Success=*/true);
72157215

72167216
addAwaitCall(CE, ArgList.ref(), Blocks.SuccessBlock, SuccessParams,
7217-
InlinePatterns, HandlerDesc, /*AddDeclarations*/ true);
7217+
InlinePatterns, HandlerDesc, /*AddDeclarations=*/true);
72187218
printOutOfLineBindingPatterns(Blocks.SuccessBlock, InlinePatterns);
72197219
convertNodes(Blocks.SuccessBlock.nodesToPrint());
72207220
clearNames(SuccessParams);
@@ -7225,7 +7225,8 @@ class AsyncConverter : private SourceEntityWalker {
72257225

72267226
// Always use the ErrParam name if none is bound.
72277227
prepareNames(Blocks.ErrorBlock, llvm::makeArrayRef(ErrParam),
7228-
ErrInlinePatterns, HandlerDesc.Type != HandlerType::RESULT);
7228+
ErrInlinePatterns,
7229+
/*AddIfMissing=*/HandlerDesc.Type != HandlerType::RESULT);
72297230
preparePlaceholdersAndUnwraps(HandlerDesc, SuccessParams, ErrParam,
72307231
/*Success=*/false);
72317232

@@ -7506,7 +7507,7 @@ class AsyncConverter : private SourceEntityWalker {
75067507
void addCatch(const ParamDecl *ErrParam) {
75077508
OS << "\n" << tok::r_brace << " " << tok::kw_catch << " ";
75087509
auto ErrName = newNameFor(ErrParam, false);
7509-
if (!ErrName.empty()) {
7510+
if (!ErrName.empty() && ErrName != "_") {
75107511
OS << tok::kw_let << " " << ErrName << " ";
75117512
}
75127513
OS << tok::l_brace;
@@ -7590,6 +7591,8 @@ class AsyncConverter : private SourceEntityWalker {
75907591
/// other names in the current scope.
75917592
Identifier createUniqueName(StringRef Name) {
75927593
Identifier Ident = getASTContext().getIdentifier(Name);
7594+
if (Name == "_")
7595+
return Ident;
75937596

75947597
auto &CurrentNames = Scopes.back().Names;
75957598
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)