3
3
struct OtherGeneric < U> { }
4
4
5
5
struct Generic < T> {
6
- // FIXME: Should work with 'T' as well
7
6
typealias NonGeneric = Int where T == Int
7
+ typealias FakeGeneric = T where T == Int
8
8
9
9
typealias Unbound = OtherGeneric where T == Int
10
10
typealias Generic = OtherGeneric where T == Int
11
11
}
12
12
13
13
extension Generic where T == Int {
14
- // FIXME: Should work with 'T' as well
15
14
typealias NonGenericInExtension = Int
15
+ typealias FakeGenericInExtension = T
16
16
17
17
typealias UnboundInExtension = OtherGeneric
18
18
typealias GenericInExtension = OtherGeneric
19
19
}
20
20
21
21
func use( _: Generic . NonGeneric ,
22
+ _: Generic . FakeGeneric ,
22
23
_: Generic . Unbound < String > ,
23
24
_: Generic . Generic < String > ,
24
25
_: Generic . NonGenericInExtension ,
@@ -28,16 +29,20 @@ func use(_: Generic.NonGeneric,
28
29
// FIXME: Get these working too
29
30
#if false
30
31
let _ = Generic . NonGeneric. self
32
+ let _ = Generic . FakeGeneric. self
31
33
let _ = Generic . Unbound< String> . self
32
34
let _ = Generic . Generic< String> . self
33
35
34
36
let _ = Generic . NonGenericInExtension. self
37
+ let _ = Generic . FakeGenericInExtension. self
35
38
let _ = Generic . UnboundInExtension< String> . self
36
39
let _ = Generic . GenericInExtension< String> . self
40
+ #endif
37
41
38
42
let _: Generic . NonGeneric = 123
43
+ let _: Generic . FakeGeneric = 123
39
44
let _: Generic . NonGenericInExtension = 123
40
- #endif
45
+ let _ : Generic . FakeGenericInExtension = 123
41
46
42
47
let _: Generic . Unbound = OtherGeneric < String > ( )
43
48
let _: Generic . Generic = OtherGeneric < String > ( )
@@ -48,11 +53,13 @@ func use(_: Generic.NonGeneric,
48
53
49
54
struct Use {
50
55
let a1 : Generic . NonGeneric
51
- let b1 : Generic . Unbound < String >
52
- let c1 : Generic . Generic < String >
56
+ let b1 : Generic . FakeGeneric
57
+ let c1 : Generic . Unbound < String >
58
+ let d1 : Generic . Generic < String >
53
59
let a2 : Generic . NonGenericInExtension
54
- let b2 : Generic . UnboundInExtension < String >
55
- let c2 : Generic . GenericInExtension < String >
60
+ let b2 : Generic . FakeGenericInExtension
61
+ let c2 : Generic . UnboundInExtension < String >
62
+ let d2 : Generic . GenericInExtension < String >
56
63
}
57
64
58
65
extension Generic . NonGeneric { }
0 commit comments