Skip to content

Commit d4de773

Browse files
committed
Unified: More nested types tests
1 parent 8166515 commit d4de773

2 files changed

Lines changed: 907 additions & 807 deletions

File tree

‎unified/ql/test/library-tests/type-inference/nested_types.swift‎

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,13 @@ class Outer<TOuter> {
115115
let d = p2.0.getInner() // $ target=Outer.Inner.getInner field=Tuple2.0 type=d:Int
116116
}
117117

118+
typealias Unbound = Holder.InnerAlias
119+
120+
func f4(x: Outer<String>.Unbound<Int>) {
121+
let outer = x.getOuter() // $ target=Outer.Inner.getOuter type=outer:String
122+
let inner = x.getInner() // $ target=Outer.Inner.getInner type=inner:Int
123+
}
124+
118125
enum E { case empty }
119126
}
120127

@@ -272,3 +279,31 @@ func f(_ x: G<String>.InnerAlias<Bool>) {
272279
let outer = x.getOuter() // $ target=Outer.Inner.getOuter type=outer:String
273280
let inner = x.getInner() // $ target=Outer.Inner.getInner type=inner:Bool
274281
}
282+
283+
class Base2<T> {
284+
struct Nested {
285+
var x: T
286+
287+
func getX() -> T {
288+
return x // $ field=Base2.Nested.x
289+
}
290+
}
291+
}
292+
class Sub: Base2<String> {
293+
typealias Element = Nested
294+
295+
typealias Element2 = Sub.Nested
296+
}
297+
class SubSub: Sub {
298+
func f(
299+
x1: Sub.Element, // $ MISSING: type=x1@Base2.Nested<(parent:Nested)>:Sub
300+
x2: Element, // $ type=x2@Base2.Nested<(parent:Nested)>:SubSub
301+
x3: Element2, // $ type=x3@Base2.Nested<(parent:Nested)>:Sub
302+
x4: SubSub.Element2 // $ type=x4@Base2.Nested<(parent:Nested)>:Sub
303+
) {
304+
let a = x1.getX() // $ target=Base2.Nested.getX $ MISSING: type=a:String -- this is an instance of variance sub typing
305+
let b = x2.getX() // $ target=Base2.Nested.getX $ MISSING: type=b:String -- this is an instance of variance sub typing
306+
let c = x3.getX() // $ target=Base2.Nested.getX $ MISSING: type=c:String -- this is an instance of variance sub typing
307+
let d = x4.getX() // $ target=Base2.Nested.getX $ MISSING: type=d:String -- this is an instance of variance sub typing
308+
}
309+
}

0 commit comments

Comments
 (0)