File tree Expand file tree Collapse file tree 1 file changed +18
-5
lines changed
Examples/Sources/MacroExamples/Implementation/Peer Expand file tree Collapse file tree 1 file changed +18
-5
lines changed Original file line number Diff line number Diff line change 10
10
//
11
11
//===----------------------------------------------------------------------===//
12
12
13
+ @_spi ( ExperimentalLanguageFeatures)
13
14
import SwiftSyntax
14
15
import SwiftSyntaxMacros
15
16
@@ -71,12 +72,24 @@ public struct AddAsyncMacro: PeerMacro {
71
72
let returnType = completionHandlerParameter. parameters. first? . type
72
73
73
74
let isResultReturn = returnType? . children ( viewMode: . all) . first? . description == " Result "
74
- let successReturnType =
75
- if isResultReturn {
76
- returnType!. as ( IdentifierTypeSyntax . self) !. genericArgumentClause? . arguments. first!. argument
77
- } else {
78
- returnType
75
+ let successReturnType : TypeSyntax ?
76
+
77
+ if isResultReturn {
78
+ let argument = returnType!. as ( IdentifierTypeSyntax . self) !. genericArgumentClause? . arguments. first!. argument
79
+
80
+ switch argument {
81
+ case . some( . type( let type) ) :
82
+ successReturnType = type
83
+
84
+ case . some( . expr( _) ) :
85
+ fatalError ( " expression not available here " )
86
+
87
+ case . none:
88
+ successReturnType = nil
79
89
}
90
+ } else {
91
+ successReturnType = returnType
92
+ }
80
93
81
94
// Remove completionHandler and comma from the previous parameter
82
95
var newParameterList = funcDecl. signature. parameterClause. parameters
You can’t perform that action at this time.
0 commit comments