﻿class A<T> {
    genericVar: T
}
function B<T>() {
    // class expression can use T
    return class extends A<T> { }
}
// extends can call B
class K extends B<number>() {
    name: string;
}
var c = new K();
c.genericVar = 12;

﻿class A<T> {
    genericVar: T
}
class B3 extends A<number> {
}
function B1<U>() {
    // class expression can use T
    return class extends A<U> { }
}
class B2<V> {
    anon = class extends A<V> { }
}
// extends can call B
class K extends B1<number>() {
    namae: string;
}
class C extends (new B2<number>().anon) {
    name: string;
}
var c = new C();
var k = new K();
var b3 = new B3();
c.genericVar = 12;
k.genericVar = 12;
b3.genericVar = 12

Improve test case and add working comparison
Improve test case and add working comparison
