=== tests/cases/compiler/complexClassRelationships.ts === // There should be no errors in this file class Derived extends Base { >Derived : Derived, Symbol(Derived, Decl(complexClassRelationships.ts, 0, 0)) >Base : Base, Symbol(Base, Decl(complexClassRelationships.ts, 11, 1)) public static createEmpty(): Derived { >createEmpty : () => Derived, Symbol(Derived.createEmpty, Decl(complexClassRelationships.ts, 1, 28)) >Derived : Derived, Symbol(Derived, Decl(complexClassRelationships.ts, 0, 0)) var item = new Derived(); >item : Derived, Symbol(item, Decl(complexClassRelationships.ts, 3, 11)) >new Derived() : Derived >Derived : typeof Derived, Symbol(Derived, Decl(complexClassRelationships.ts, 0, 0)) return item; >item : Derived, Symbol(item, Decl(complexClassRelationships.ts, 3, 11)) } } class BaseCollection { >BaseCollection : BaseCollection, Symbol(BaseCollection, Decl(complexClassRelationships.ts, 6, 1)) >T : T, Symbol(T, Decl(complexClassRelationships.ts, 7, 21)) >Base : Base, Symbol(Base, Decl(complexClassRelationships.ts, 11, 1)) constructor(f: () => T) { >f : () => T, Symbol(f, Decl(complexClassRelationships.ts, 8, 16)) >T : T, Symbol(T, Decl(complexClassRelationships.ts, 7, 21)) (item: Thing) => { return [item.Components]; }; >(item: Thing) => { return [item.Components]; } : (item: Thing) => ComponentCollection[] >item : Thing, Symbol(item, Decl(complexClassRelationships.ts, 9, 9)) >Thing : Thing, Symbol(Thing, Decl(complexClassRelationships.ts, 14, 1)) >[item.Components] : ComponentCollection[] >item.Components : ComponentCollection, Symbol(Thing.Components, Decl(complexClassRelationships.ts, 16, 13)) >item : Thing, Symbol(item, Decl(complexClassRelationships.ts, 9, 9)) >Components : ComponentCollection, Symbol(Thing.Components, Decl(complexClassRelationships.ts, 16, 13)) } } class Base { >Base : Base, Symbol(Base, Decl(complexClassRelationships.ts, 11, 1)) ownerCollection: BaseCollection; >ownerCollection : BaseCollection, Symbol(ownerCollection, Decl(complexClassRelationships.ts, 12, 12)) >BaseCollection : BaseCollection, Symbol(BaseCollection, Decl(complexClassRelationships.ts, 6, 1)) >Base : Base, Symbol(Base, Decl(complexClassRelationships.ts, 11, 1)) } class Thing { >Thing : Thing, Symbol(Thing, Decl(complexClassRelationships.ts, 14, 1)) public get Components(): ComponentCollection { return null } >Components : ComponentCollection, Symbol(Components, Decl(complexClassRelationships.ts, 16, 13)) >ComponentCollection : ComponentCollection, Symbol(ComponentCollection, Decl(complexClassRelationships.ts, 18, 1)) >null : null } class ComponentCollection { >ComponentCollection : ComponentCollection, Symbol(ComponentCollection, Decl(complexClassRelationships.ts, 18, 1)) >T : T, Symbol(T, Decl(complexClassRelationships.ts, 20, 26)) private static sortComponents(p: Foo) { >sortComponents : (p: Foo) => GenericType, Symbol(ComponentCollection.sortComponents, Decl(complexClassRelationships.ts, 20, 30)) >p : Foo, Symbol(p, Decl(complexClassRelationships.ts, 21, 34)) >Foo : Foo, Symbol(Foo, Decl(complexClassRelationships.ts, 24, 1)) return p.prop1; >p.prop1 : GenericType, Symbol(Foo.prop1, Decl(complexClassRelationships.ts, 26, 11)) >p : Foo, Symbol(p, Decl(complexClassRelationships.ts, 21, 34)) >prop1 : GenericType, Symbol(Foo.prop1, Decl(complexClassRelationships.ts, 26, 11)) } } class Foo { >Foo : Foo, Symbol(Foo, Decl(complexClassRelationships.ts, 24, 1)) public get prop1() { >prop1 : GenericType, Symbol(prop1, Decl(complexClassRelationships.ts, 26, 11)) return new GenericType(this); >new GenericType(this) : GenericType >GenericType : typeof GenericType, Symbol(GenericType, Decl(complexClassRelationships.ts, 36, 1)) >this : Foo, Symbol(Foo, Decl(complexClassRelationships.ts, 24, 1)) } public populate() { >populate : () => void, Symbol(populate, Decl(complexClassRelationships.ts, 29, 5)) this.prop2; >this.prop2 : BaseCollection, Symbol(prop2, Decl(complexClassRelationships.ts, 32, 5)) >this : Foo, Symbol(Foo, Decl(complexClassRelationships.ts, 24, 1)) >prop2 : BaseCollection, Symbol(prop2, Decl(complexClassRelationships.ts, 32, 5)) } public get prop2(): BaseCollection { >prop2 : BaseCollection, Symbol(prop2, Decl(complexClassRelationships.ts, 32, 5)) >BaseCollection : BaseCollection, Symbol(BaseCollection, Decl(complexClassRelationships.ts, 6, 1)) >Derived : Derived, Symbol(Derived, Decl(complexClassRelationships.ts, 0, 0)) return new BaseCollection(Derived.createEmpty); >new BaseCollection(Derived.createEmpty) : BaseCollection >BaseCollection : typeof BaseCollection, Symbol(BaseCollection, Decl(complexClassRelationships.ts, 6, 1)) >Derived : Derived, Symbol(Derived, Decl(complexClassRelationships.ts, 0, 0)) >Derived.createEmpty : () => Derived, Symbol(Derived.createEmpty, Decl(complexClassRelationships.ts, 1, 28)) >Derived : typeof Derived, Symbol(Derived, Decl(complexClassRelationships.ts, 0, 0)) >createEmpty : () => Derived, Symbol(Derived.createEmpty, Decl(complexClassRelationships.ts, 1, 28)) } } class GenericType { >GenericType : GenericType, Symbol(GenericType, Decl(complexClassRelationships.ts, 36, 1)) >T : T, Symbol(T, Decl(complexClassRelationships.ts, 38, 18)) constructor(parent: FooBase) { } >parent : FooBase, Symbol(parent, Decl(complexClassRelationships.ts, 39, 16)) >FooBase : FooBase, Symbol(FooBase, Decl(complexClassRelationships.ts, 40, 1)) } class FooBase { >FooBase : FooBase, Symbol(FooBase, Decl(complexClassRelationships.ts, 40, 1)) public populate() { >populate : () => void, Symbol(populate, Decl(complexClassRelationships.ts, 42, 15)) } }