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 47 48 49
|
=== tests/cases/compiler/recursivelySpecializedConstructorDeclaration.ts ===
module MsPortal.Controls.Base.ItemList {
>MsPortal : Symbol(MsPortal, Decl(recursivelySpecializedConstructorDeclaration.ts, 0, 0))
>Controls : Symbol(Controls, Decl(recursivelySpecializedConstructorDeclaration.ts, 0, 16))
>Base : Symbol(Base, Decl(recursivelySpecializedConstructorDeclaration.ts, 0, 25))
>ItemList : Symbol(ItemList, Decl(recursivelySpecializedConstructorDeclaration.ts, 0, 30))
export interface Interface<TValue> {
>Interface : Symbol(Interface, Decl(recursivelySpecializedConstructorDeclaration.ts, 0, 40))
>TValue : Symbol(TValue, Decl(recursivelySpecializedConstructorDeclaration.ts, 2, 31))
// Removing this line fixes the constructor of ItemValue
options: ViewModel<TValue>;
>options : Symbol(Interface.options, Decl(recursivelySpecializedConstructorDeclaration.ts, 2, 40))
>ViewModel : Symbol(ViewModel, Decl(recursivelySpecializedConstructorDeclaration.ts, 10, 5))
>TValue : Symbol(TValue, Decl(recursivelySpecializedConstructorDeclaration.ts, 2, 31))
}
export class ItemValue<T> {
>ItemValue : Symbol(ItemValue, Decl(recursivelySpecializedConstructorDeclaration.ts, 5, 5))
>T : Symbol(T, Decl(recursivelySpecializedConstructorDeclaration.ts, 7, 27))
constructor(value: T) {
>value : Symbol(value, Decl(recursivelySpecializedConstructorDeclaration.ts, 8, 20))
>T : Symbol(T, Decl(recursivelySpecializedConstructorDeclaration.ts, 7, 27))
}
}
export class ViewModel<TValue> extends ItemValue<TValue> {
>ViewModel : Symbol(ViewModel, Decl(recursivelySpecializedConstructorDeclaration.ts, 10, 5))
>TValue : Symbol(TValue, Decl(recursivelySpecializedConstructorDeclaration.ts, 12, 27))
>ItemValue : Symbol(ItemValue, Decl(recursivelySpecializedConstructorDeclaration.ts, 5, 5))
>TValue : Symbol(TValue, Decl(recursivelySpecializedConstructorDeclaration.ts, 12, 27))
}
}
// Generates:
/*
declare module MsPortal.Controls.Base.ItemList {
interface Interface<TValue> {
options: ViewModel<TValue>;
}
class ItemValue<T> {
constructor(value: T);
}
class ViewModel<TValue> extends ItemValue<TValue> {
}
}
*/
|