Джерело
BW Swift | Ось таку багу зловив та зарепортив. Swift компілятор не справляється з...
1 120 Охват/переглядів
2025-07-21 04:16
Повідомлення №1912
🐞 Ось таку багу зловив та зарепортив. Swift компілятор не справляється з generic KeyPath.https://github.com/swiftlang/swift/issues/83197Цілью було отримати компайл тайм сейфті, групування по категоріям та автокомпліт.Навіть в простому варіанті падаєenum Resources { enum Category { }}struct Utils { static func resource<ResourceCategory>(_ type: KeyPath<Resources.Type, ResourceCategory.Type>) -> ResourceCategory.Type { Resources.self[keyPath: type] }}func testResourceGetter() { // 👇 This line crashes the compiler. let resource = Utils.resource(\.Category)}
Робочій код був (мав бути) такийstruct Resource { let name: String}enum Resources { enum Category { static let nestedResource = Resource(name: "test") }}struct Utils { static func resource<ResourceCategory>( _ type: KeyPath<Resources.Type, ResourceCategory.Type>, resource: KeyPath<ResourceCategory.Type, Resource> ) -> Resource { ResourceCategory.self[keyPath: resource] }}func testResourceGetter() { // 👇 This line crashes the compiler. let resource = Utils.resource(\.Category, resource: \.nestedResource)}