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 1
1
import SwiftDiagnostics
2
2
import SwiftOperators
3
- import SwiftSyntax
3
+ @ _spi ( ExperimentalLanguageFeatures ) import SwiftSyntax
4
4
import SwiftSyntaxBuilder
5
5
@_spi ( ExperimentalLanguageFeature) import SwiftSyntaxMacros
6
6
@@ -946,12 +946,25 @@ public struct AddAsyncMacro: PeerMacro {
946
946
let returnType = completionHandlerParameter. parameters. first? . type
947
947
948
948
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
954
964
}
965
+ } else {
966
+ successReturnType = returnType
967
+ }
955
968
956
969
// Remove completionHandler and comma from the previous parameter
957
970
var newParameterList = funcDecl. signature. parameterClause. parameters
You can’t perform that action at this time.
0 commit comments