11//
22// Created by Helge Heß.
3- // Copyright © 2023 ZeeZide GmbH.
3+ // Copyright © 2023-2025 ZeeZide GmbH.
44//
55
66import SwiftSyntax
@@ -62,14 +62,18 @@ extension TypeSyntax {
6262 }
6363 if let id = opt. wrappedType. as ( IdentifierTypeSyntax . self) {
6464 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
6771 }
6872 return id. isKnownFoundationPropertyType
6973 }
7074 // E.g. this is not representable: `String??`, this is `String?`.
7175 // 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.
7377 return false
7478 }
7579
@@ -80,11 +84,16 @@ extension TypeSyntax {
8084 }
8185
8286 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
8695 }
87-
96+
8897 return self . isKnownAttributePropertyType
8998 }
9099
@@ -144,7 +153,10 @@ extension IdentifierTypeSyntax {
144153
145154 switch name {
146155 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
148160 default :
149161 return false
150162 }
@@ -176,12 +188,12 @@ extension IdentifierTypeSyntax {
176188 if name == " Optional " { // recurse
177189 guard let generic = genericArgumentClause,
178190 let genericArgument = generic. arguments. first,
179- generic. arguments. count != 1 else
191+ generic. arguments. count != 1 ,
192+ case . type( let typeSyntax) = genericArgument. argument else
180193 {
181194 return false
182195 }
183- return genericArgument. argument
184- . isKnownRelationshipPropertyType ( checkOptional: false )
196+ return typeSyntax. isKnownRelationshipPropertyType ( checkOptional: false )
185197 }
186198
187199 if toOneRelationshipTypes. contains ( name) {
0 commit comments