Files
swift-mirror/test/IDE/complete_async_context.swift
Rintaro Ishizaki 9a6770e770 [CodeCompletion] Remove warning for 'async in non-concurrency context'
This warnings don't give much benefits for developers. Code completion
UI tends to show them unusable. But usually, developers can modify the
context to accept async calls, e.g. by wrapping it with `Task { }`

rdar://126737530
2024-05-15 12:55:05 -07:00

64 lines
2.8 KiB
Swift

// RUN: %batch-code-completion
// REQUIRES: concurrency
func funcThrows() throws {
fatalError()
}
func asyncThrows() async throws {
fatalError()
}
func asyncRethrows(fn : () async throws -> Int) async rethrows -> Int {
fatalError()
}
func asyncRethrows(fn : () async throws -> String) async rethrows -> String {
fatalError()
}
func invoke<T>(fn : () async throws -> T) async rethrows -> T {
fatalError()
}
func invokeAuto<T>(_ val : @autoclosure () async throws -> T) async rethrows -> T {
fatalError()
}
func normalTask() async -> Int {
fatalError()
}
func throwingTask() async throws -> String {
fatalError()
}
// CHECK_syncContext-DAG: Decl[FreeFunction]/CurrModule: funcThrows()[' throws'][#Void#];
// CHECK_syncContext-DAG: Decl[FreeFunction]/CurrModule: asyncRethrows({#fn: () async throws -> Int##() async throws -> Int#})[' async'][' rethrows'][#Int#];
// CHECK_syncContext-DAG: Decl[FreeFunction]/CurrModule: asyncRethrows({#fn: () async throws -> String##() async throws -> String#})[' async'][' rethrows'][#String#];
// CHECK_syncContext-DAG: Decl[FreeFunction]/CurrModule: invokeAuto({#(val): T#})[' async'][' rethrows'][#T#];
// CHECK_syncContext-DAG: Decl[FreeFunction]/CurrModule: throwingTask()[' async'][' throws'][#String#];
// CHECK_syncContext-DAG: Decl[FreeFunction]/CurrModule: invoke({#fn: () async throws -> T##() async throws -> T#})[' async'][' rethrows'][#T#];
// CHECK_syncContext-DAG: Decl[FreeFunction]/CurrModule: normalTask()[' async'][#Int#];
// CHECK_asyncContext-DAG: Decl[FreeFunction]/CurrModule: funcThrows()[' throws'][#Void#];
// CHECK_asyncContext-DAG: Decl[FreeFunction]/CurrModule: asyncRethrows({#fn: () async throws -> Int##() async throws -> Int#})[' async'][' rethrows'][#Int#];
// CHECK_asyncContext-DAG: Decl[FreeFunction]/CurrModule: asyncRethrows({#fn: () async throws -> String##() async throws -> String#})[' async'][' rethrows'][#String#];
// CHECK_asyncContext-DAG: Decl[FreeFunction]/CurrModule: invokeAuto({#(val): T#})[' async'][' rethrows'][#T#];
// CHECK_asyncContext-DAG: Decl[FreeFunction]/CurrModule: throwingTask()[' async'][' throws'][#String#];
// CHECK_asyncContext-DAG: Decl[FreeFunction]/CurrModule: invoke({#fn: () async throws -> T##() async throws -> T#})[' async'][' rethrows'][#T#];
// CHECK_asyncContext-DAG: Decl[FreeFunction]/CurrModule: normalTask()[' async'][#Int#];
func syncFunc() {
#^CHECK_syncFunc?check=CHECK_syncContext^#
}
func syncClosure() async {
func handleSyncClosure<T>(_: () -> T) {}
handleSyncClosure {
#^CHECK_syncClosure?check=CHECK_syncContext^#
}
}
func syncClosure() {
func handleAsyncClosure<T>(_: () async -> T) async {}
handleAsyncClosure {
#^CHECK_asyncClosure?check=CHECK_asyncContext^#
}
}
func asyncFunc() async {
#^CHECK_asyncFunc?check=CHECK_asyncContext^#
}