Hi,
When using Generics with Protocols I get a compilation error depending on
whether or not conformance to a protocol is defined in the same file or not.
Error:
Type 'Car.ItemID' (aka 'CarID') does not conform to protocol 'P2'
I have 2 swift files:
- CarID.swift
- CreateCars.swift
Observations:
- I get the error when extension CarID : P2 {} is defined in CarID.swift
- I don’t get the error when extension CarID : P2 {} is defined in
CreateCars.swift as shown in the comments below.
Tested On:
- Xcode 9.0 (9A235) - GM
- Command Line project / iOS project
CarID.swift:
import Foundation
protocol P1 {
associatedtype ItemID
}
class Car : P1 {
typealias ItemID = CarID
}
//extension CarID : P2 {} //Error wouldn't occur if this line is uncommented
and the line in CarID.swift is commented out
protocol P2 {}
class CreateItems<Something : P1>
where Something.ItemID : P2 {}
class CreateCars : CreateItems<Car> {} //Error: Type 'Car.ItemID' (aka 'CarID')
does not conform to protocol 'P2'
extension CreateCars {}
CreateCars.swift:
import Foundation
class CarID {}
extension CarID : P2 {} //If this line is moved to CreateCars.swift the error
vanishes away
Thanks and regards,
Muthu
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users