[swift-evolution] generic typealias inside generic type

Chris Lattner clattner at apple.com
Sat Jun 18 23:52:51 CDT 2016


> On Jun 17, 2016, at 11:06 AM, Vladimir.S via swift-evolution <swift-evolution at swift.org> 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.

-Chris



More information about the swift-evolution mailing list