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 1010//
1111//===----------------------------------------------------------------------===//
1212
13+ @_spi ( ExperimentalLanguageFeatures)
1314import SwiftSyntax
1415import SwiftSyntaxMacros
1516
@@ -71,12 +72,24 @@ public struct AddAsyncMacro: PeerMacro {
7172 let returnType = completionHandlerParameter. parameters. first? . type
7273
7374 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
7989 }
90+ } else {
91+ successReturnType = returnType
92+ }
8093
8194 // Remove completionHandler and comma from the previous parameter
8295 var newParameterList = funcDecl. signature. parameterClause. parameters
You can’t perform that action at this time.
0 commit comments