[swift-evolution] generic typealias inside generic type
Vladimir.S
svabox at gmail.com
Mon Jun 20 08:06:44 CDT 2016
On 19.06.2016 7:52, Chris Lattner wrote:
>
>> 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.
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
>
>
More information about the swift-evolution
mailing list