=== tests/cases/compiler/declarationEmitExpressionInExtends3.ts ===
export class ExportedClass<T> {
>ExportedClass : ExportedClass<T>

	x: T;
>x : T
}

class LocalClass<T, U> {
>LocalClass : LocalClass<T, U>

    x: T;
>x : T

    y: U;
>y : U
}

export interface ExportedInterface {
    x: number;
>x : number
}

interface LocalInterface {
    x: number;
>x : number
}

function getLocalClass<T>(c: T) {
>getLocalClass : <T>(c: T) => typeof LocalClass
>c : T

    return LocalClass;
>LocalClass : typeof LocalClass
}

function getExportedClass<T>(c: T) {
>getExportedClass : <T>(c: T) => typeof ExportedClass
>c : T

    return ExportedClass;
>ExportedClass : typeof ExportedClass
}



export class MyClass extends getLocalClass<LocalInterface>(undefined)<string, number> { // error LocalClass is inaccisible
>MyClass : MyClass
>getLocalClass<LocalInterface>(undefined) : LocalClass<string, number>
>getLocalClass : <T>(c: T) => typeof LocalClass
>undefined : undefined
}


export class MyClass2 extends getExportedClass<LocalInterface>(undefined)<string> { // OK
>MyClass2 : MyClass2
>getExportedClass<LocalInterface>(undefined) : ExportedClass<string>
>getExportedClass : <T>(c: T) => typeof ExportedClass
>undefined : undefined
}


export class MyClass3 extends getExportedClass<LocalInterface>(undefined)<LocalInterface> { // Error LocalInterface is inaccisble
>MyClass3 : MyClass3
>getExportedClass<LocalInterface>(undefined) : ExportedClass<LocalInterface>
>getExportedClass : <T>(c: T) => typeof ExportedClass
>undefined : undefined
}


export class MyClass4 extends getExportedClass<LocalInterface>(undefined)<ExportedInterface> { // OK
>MyClass4 : MyClass4
>getExportedClass<LocalInterface>(undefined) : ExportedClass<ExportedInterface>
>getExportedClass : <T>(c: T) => typeof ExportedClass
>undefined : undefined
}

