File tree Expand file tree Collapse file tree 1 file changed +19
-6
lines changed
Expand file tree Collapse file tree 1 file changed +19
-6
lines changed Original file line number Diff line number Diff line change 11import SwiftDiagnostics
22import SwiftOperators
3- import SwiftSyntax
3+ @ _spi ( ExperimentalLanguageFeatures ) import SwiftSyntax
44import SwiftSyntaxBuilder
55@_spi ( ExperimentalLanguageFeature) import SwiftSyntaxMacros
66
@@ -946,12 +946,25 @@ public struct AddAsyncMacro: PeerMacro {
946946 let returnType = completionHandlerParameter. parameters. first? . type
947947
948948 let isResultReturn = returnType? . children ( viewMode: . all) . first? . description == " Result "
949- let successReturnType =
950- if isResultReturn {
951- returnType!. as ( IdentifierTypeSyntax . self) !. genericArgumentClause? . arguments. first!. argument
952- } else {
953- returnType
949+
950+ let successReturnType : TypeSyntax ?
951+
952+ if isResultReturn {
953+ let argument = returnType!. as ( IdentifierTypeSyntax . self) !. genericArgumentClause? . arguments. first!. argument
954+
955+ switch argument {
956+ case . some( . type( let type) ) :
957+ successReturnType = type
958+
959+ case . some( . expr( _) ) :
960+ fatalError ( " expression not available here " )
961+
962+ case . none:
963+ successReturnType = nil
954964 }
965+ } else {
966+ successReturnType = returnType
967+ }
955968
956969 // Remove completionHandler and comma from the previous parameter
957970 var newParameterList = funcDecl. signature. parameterClause. parameters
You can’t perform that action at this time.
0 commit comments