One question about your extension. Will the where
clauses be ignored again or does it only happen with the same type constraint?
Reference thread: What kind of magic behavior is this?
Edit:
// error: Type 'S' does not conform to protocol 'Identifiable'
// FIXIT: Do you want to add protocol stubs?
struct S: Identifiable {}
// After FIXIT:
struct S: Identifiable {
var id: ObjectIdentifier
}
So the inference rules yet again mess with the associated type here. We could avoid this wrong fixit if we'd add another extension:
extension Identifiable where ID == Never {
var id: ID { fatalError() }
}