=== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/constructorFunctionTypeIsAssignableToBaseType2.ts === // the constructor function itself does not need to be a subtype of the base type constructor function class Base { >Base : Base, Symbol(Base, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 0, 0)) static foo: { >foo : { bar: Object; }, Symbol(Base.foo, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 2, 12)) bar: Object; >bar : Object, Symbol(bar, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 3, 17)) >Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11)) } constructor(x: Object) { >x : Object, Symbol(x, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 6, 16)) >Object : Object, Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11)) } } class Derived extends Base { >Derived : Derived, Symbol(Derived, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 8, 1)) >Base : Base, Symbol(Base, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 0, 0)) // ok static foo: { >foo : { bar: number; }, Symbol(Derived.foo, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 10, 28)) bar: number; >bar : number, Symbol(bar, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 12, 17)) } constructor(x: number) { >x : number, Symbol(x, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 16, 16)) super(x); >super(x) : void >super : typeof Base, Symbol(Base, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 0, 0)) >x : number, Symbol(x, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 16, 16)) } } class Derived2 extends Base { >Derived2 : Derived2, Symbol(Derived2, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 19, 1)) >Base : Base, Symbol(Base, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 0, 0)) static foo: { >foo : { bar: number; }, Symbol(Derived2.foo, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 21, 29)) bar: number; >bar : number, Symbol(bar, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 22, 17)) } // ok, not enforcing assignability relation on this constructor(x: any) { >x : any, Symbol(x, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 27, 16)) super(x); >super(x) : void >super : typeof Base, Symbol(Base, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 0, 0)) >x : any, Symbol(x, Decl(constructorFunctionTypeIsAssignableToBaseType2.ts, 27, 16)) return 1; >1 : number } }