tests/cases/conformance/classes/mixinClassesAnonymous.ts(9,9): error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'Base'.
tests/cases/conformance/classes/mixinClassesAnonymous.ts(50,9): error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'Derived'.


==== tests/cases/conformance/classes/mixinClassesAnonymous.ts (2 errors) ====
    type Constructor<T> = new(...args: any[]) => T;
    
    class Base {
        constructor(public x: number, public y: number) {}
    }
    
    class Derived extends Base {
        constructor(x: number, y: number, public z: number) {
            super(x, y);
            ~~~~~~~~~~~
!!! error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'Base'.
        }
    }
    
    const Printable = <T extends Constructor<Base>>(superClass: T) => class extends superClass {
        static message = "hello";
        print() {
            const output = this.x + "," + this.y;
        }
    }
    
    function Tagged<T extends Constructor<{}>>(superClass: T) {
        class C extends superClass {
            _tag: string;
            constructor(...args: any[]) {
                super(...args);
                this._tag = "hello";
            }
        }
        return C;
    }
    
    const Thing1 = Tagged(Derived);
    const Thing2 = Tagged(Printable(Derived));
    Thing2.message;
    
    function f1() {
        const thing = new Thing1(1, 2, 3);
        thing.x;
        thing._tag;
    }
    
    function f2() {
        const thing = new Thing2(1, 2, 3);
        thing.x;
        thing._tag;
        thing.print();
    }
    
    class Thing3 extends Thing2 {
        constructor(tag: string) {
            super(10, 20, 30);
            ~~~~~~~~~~~~~~~~~
!!! error TS2684: The 'this' context of type 'void' is not assignable to method's 'this' of type 'Derived'.
            this._tag = tag;
        }
        test() {
            this.print();
        }
    }
    
    // Repro from #13805
    
    const Timestamped = <CT extends Constructor<object>>(Base: CT) => {
        return class extends Base {
            timestamp = new Date();
        };
    }
    