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

Reply via email to