1
1
//
2
2
// Created by Helge Heß.
3
- // Copyright © 2023 ZeeZide GmbH.
3
+ // Copyright © 2023-2025 ZeeZide GmbH.
4
4
//
5
5
6
6
import SwiftSyntax
@@ -62,14 +62,18 @@ extension TypeSyntax {
62
62
}
63
63
if let id = opt. wrappedType. as ( IdentifierTypeSyntax . self) {
64
64
if id. isKnownRelationshipPropertyType {
65
- let element = id. genericArgumentClause? . arguments. first? . argument
66
- return element? . isKnownAttributePropertyType ?? false
65
+ guard let argument = id. genericArgumentClause? . arguments. first,
66
+ case . type( let typeSyntax) = argument. argument else
67
+ {
68
+ return false
69
+ }
70
+ return typeSyntax. isKnownAttributePropertyType
67
71
}
68
72
return id. isKnownFoundationPropertyType
69
73
}
70
74
// E.g. this is not representable: `String??`, this is `String?`.
71
75
// But Double? or Int? is not representable
72
- // I.e. nesting of Optional's are not representable.
76
+ // I.e. nestings of Optional's are not representable.
73
77
return false
74
78
}
75
79
@@ -80,11 +84,16 @@ extension TypeSyntax {
80
84
}
81
85
82
86
if let id = self . as ( IdentifierTypeSyntax . self) ,
83
- id. isKnownFoundationGenericPropertyType {
84
- let arg = id. genericArgumentClause? . arguments. first? . argument
85
- return arg? . isKnownAttributePropertyType ?? false
87
+ id. isKnownFoundationGenericPropertyType
88
+ {
89
+ guard let arg = id. genericArgumentClause? . arguments. first,
90
+ case . type( let typeSyntax) = arg. argument else
91
+ {
92
+ return false
93
+ }
94
+ return typeSyntax. isKnownAttributePropertyType
86
95
}
87
-
96
+
88
97
return self . isKnownAttributePropertyType
89
98
}
90
99
@@ -144,7 +153,10 @@ extension IdentifierTypeSyntax {
144
153
145
154
switch name {
146
155
case " Array " , " Optional " , " Set " :
147
- return genericArgument. argument. isKnownAttributePropertyType
156
+ guard case . type( let typeSyntax) = genericArgument. argument else {
157
+ return false
158
+ }
159
+ return typeSyntax. isKnownAttributePropertyType
148
160
default :
149
161
return false
150
162
}
@@ -176,12 +188,12 @@ extension IdentifierTypeSyntax {
176
188
if name == " Optional " { // recurse
177
189
guard let generic = genericArgumentClause,
178
190
let genericArgument = generic. arguments. first,
179
- generic. arguments. count != 1 else
191
+ generic. arguments. count != 1 ,
192
+ case . type( let typeSyntax) = genericArgument. argument else
180
193
{
181
194
return false
182
195
}
183
- return genericArgument. argument
184
- . isKnownRelationshipPropertyType ( checkOptional: false )
196
+ return typeSyntax. isKnownRelationshipPropertyType ( checkOptional: false )
185
197
}
186
198
187
199
if toOneRelationshipTypes. contains ( name) {
0 commit comments