Merge pull request #37713 from hamishknight/im-walkin-here

This commit is contained in:
Hamish Knight
2021-06-01 11:57:08 +01:00
committed by GitHub
2 changed files with 22 additions and 4 deletions

View File

@@ -18,6 +18,7 @@
#include "swift/Basic/LLVM.h"
#include "swift/Basic/SourceLoc.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/Support/SaveAndRestore.h"
namespace clang {
class Module;
@@ -189,10 +190,7 @@ private:
/// Utility that lets us keep track of an ASTWalker when walking.
bool performWalk(ASTWalker &W, llvm::function_ref<bool(void)> DoWalk) {
Walker = &W;
SWIFT_DEFER {
Walker = nullptr;
};
llvm::SaveAndRestore<ASTWalker *> SV(Walker, &W);
return DoWalk();
}
};

View File

@@ -289,3 +289,23 @@ func testReturnHandling3(_ completion: (String?, Error?) -> Void) {
// RETURN-HANDLING3: func testReturnHandling3() async throws -> String {
// RETURN-HANDLING3-NEXT: {{^}} return (<#completion#>("", nil)){{$}}
// RETURN-HANDLING3-NEXT: }
// RUN: %refactor -convert-to-async -dump-text -source-filename %s -pos=%(line+1):1 | %FileCheck -check-prefix=RDAR78693050 %s
func rdar78693050(_ completion: () -> Void) {
simple { str in
print(str)
}
if .random() {
return completion()
}
completion()
}
// RDAR78693050: func rdar78693050() async {
// RDAR78693050-NEXT: let str = await simple()
// RDAR78693050-NEXT: print(str)
// RDAR78693050-NEXT: if .random() {
// RDAR78693050-NEXT: return
// RDAR78693050-NEXT: }
// RDAR78693050-NEXT: return
// RDAR78693050-NEXT: }