Skip to content

Commit e534cc1

Browse files
committed
Update syntax_macro_definitions.swift
1 parent 132a67d commit e534cc1

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

test/Macros/Inputs/syntax_macro_definitions.swift

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import SwiftDiagnostics
22
import SwiftOperators
3-
import SwiftSyntax
3+
@_spi(ExperimentalLanguageFeatures) import SwiftSyntax
44
import 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

0 commit comments

Comments
 (0)