@@ -31,32 +31,37 @@ extension LiveViewMacro: ExpressionMacro {
31
31
case 1 :
32
32
registries = " typealias Registries = \( addons. first!) "
33
33
default :
34
- func multiRegistry( _ addons: some RandomAccessCollection < SimpleTypeIdentifierSyntax > ) -> SimpleTypeIdentifierSyntax {
34
+ func multiRegistry( _ addons: some RandomAccessCollection < IdentifierTypeSyntax > ) -> IdentifierTypeSyntax {
35
35
switch addons. count {
36
36
case 2 :
37
- return SimpleTypeIdentifierSyntax (
37
+ return IdentifierTypeSyntax (
38
38
name: " _MultiRegistry " ,
39
39
genericArgumentClause: . init( arguments: . init( [
40
- . init( argumentType : addons. first!, trailingComma: . commaToken( ) ) ,
41
- . init( argumentType : addons. last!)
40
+ . init( argument : addons. first!, trailingComma: . commaToken( ) ) ,
41
+ . init( argument : addons. last!)
42
42
] ) )
43
43
)
44
44
default :
45
- return SimpleTypeIdentifierSyntax (
45
+ return IdentifierTypeSyntax (
46
46
name: " _MultiRegistry " ,
47
47
genericArgumentClause: . init( arguments: . init( [
48
- . init( argumentType : addons. first!, trailingComma: . commaToken( ) ) ,
49
- . init( argumentType : multiRegistry ( addons. dropFirst ( ) ) )
48
+ . init( argument : addons. first!, trailingComma: . commaToken( ) ) ,
49
+ . init( argument : multiRegistry ( addons. dropFirst ( ) ) )
50
50
] ) )
51
51
)
52
52
}
53
53
}
54
54
registries = " typealias Registries = \( multiRegistry ( addons) ) "
55
55
}
56
56
57
- let liveViewArguments = node. argumentList
58
- . removingLast ( )
59
- . replacing ( childAt: node. argumentList. count - 2 , with: node. argumentList. removingLast ( ) . last!. with ( \. trailingComma, nil ) )
57
+ var liveViewArguments = LabeledExprListSyntax (
58
+ node. argumentList
59
+ . dropLast ( )
60
+ )
61
+ liveViewArguments = liveViewArguments. with (
62
+ \. [ liveViewArguments. index ( liveViewArguments. startIndex, offsetBy: node. argumentList. count - 2 ) ] ,
63
+ node. argumentList. dropLast ( ) . last!. with ( \. trailingComma, nil )
64
+ )
60
65
61
66
return """
62
67
{ () -> AnyView in
@@ -69,13 +74,13 @@ extension LiveViewMacro: ExpressionMacro {
69
74
"""
70
75
}
71
76
72
- private static func transformAddon( _ element: ArrayElementSyntax ) throws -> SimpleTypeIdentifierSyntax {
73
- guard let registry = element. expression. as ( MemberAccessExprSyntax . self) ? . base? . as ( SpecializeExprSyntax . self) ,
74
- let name = registry. expression. as ( IdentifierExprSyntax . self)
77
+ private static func transformAddon( _ element: ArrayElementSyntax ) throws -> IdentifierTypeSyntax {
78
+ guard let registry = element. expression. as ( MemberAccessExprSyntax . self) ? . base? . as ( GenericSpecializationExprSyntax . self) ,
79
+ let name = registry. expression. as ( DeclReferenceExprSyntax . self)
75
80
else { throw LiveViewMacroError . invalidAddonElement }
76
- return SimpleTypeIdentifierSyntax (
77
- name: name. identifier ,
78
- genericArgumentClause: . init( . init( arguments: . init( [ . init( argumentType : SimpleTypeIdentifierSyntax ( name: . identifier( " Self " ) ) ) ] ) ) )
81
+ return IdentifierTypeSyntax (
82
+ name: name. baseName ,
83
+ genericArgumentClause: . init( . init( arguments: . init( [ . init( argument : IdentifierTypeSyntax ( name: . identifier( " Self " ) ) ) ] ) ) )
79
84
)
80
85
}
81
86
}
0 commit comments