On 19.06.2016 7:52, Chris Lattner wrote:
On Jun 17, 2016, at 11:06 AM, Vladimir.S via swift-evolution
<[email protected]> wrote:
Please consider this code:
struct Foo<T> {
typealias Group<Key,Value> = (key:Key, group:[Value])
func bar<U,V>(u: U, v: V) -> Foo<Group<U,V>> {
return Foo<Group<U,V>>()
}
}
It will not compile:
cannot specialize non-generic type '(key: Key, group: [Value])'
But this will work as expected:
typealias Group<Key,Value> = (key:Key, group:[Value])
struct Foo<T> {
func bar<U,V>(u: U, v: V) -> Foo<Group<U,V>> {
return Foo<Group<U,V>>()
}
}
Shouldn't we be able to work with Group typealias inside Foo<T> without
problems as it has no any relationship to generic type T ? Or I'm missing something?
Yes, this should work, it is a bug in the compiler.
Btw, should we be able to refer such nested type (outside the Foo
declaration) just as Foo.Group<K,V> i.e. without providing generic type for
Foo like Foo<Int>.Group<K,V> ?
-Chris
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution