1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
=== tests/cases/compiler/noCrashOnMixin.ts ===
class Abstract {
>Abstract : Abstract
protected constructor() {
}
}
class Concrete extends Abstract {
>Concrete : Concrete
>Abstract : Abstract
}
type Constructor<T = {}> = new (...args: any[]) => T;
>Constructor : Constructor<T>
>args : any[]
function Mixin<TBase extends Constructor>(Base: TBase) {
>Mixin : <TBase extends Constructor<{}>>(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin<any>.(Anonymous class); } & TBase
>Base : TBase
return class extends Base {
>class extends Base { } : { new (...args: any[]): (Anonymous class); prototype: Mixin<any>.(Anonymous class); } & TBase
>Base : {}
};
}
class Empty {
>Empty : Empty
}
class CrashTrigger extends Mixin(Empty) {
>CrashTrigger : CrashTrigger
>Mixin(Empty) : Mixin<typeof Empty>.(Anonymous class) & Empty
>Mixin : <TBase extends Constructor<{}>>(Base: TBase) => { new (...args: any[]): (Anonymous class); prototype: Mixin<any>.(Anonymous class); } & TBase
>Empty : typeof Empty
public trigger() {
>trigger : () => void
new Concrete();
>new Concrete() : any
>Concrete : typeof Concrete
}
}
|