|
| 1 | +=== tests/cases/conformance/classes/propertyMemberDeclarations/accessorsOverrideProperty9.ts === |
| 2 | +// #41347, based on microsoft/rushstack |
| 3 | + |
| 4 | +// Mixin utilities |
| 5 | +export type Constructor<T = {}> = new (...args: any[]) => T; |
| 6 | +>Constructor : Symbol(Constructor, Decl(accessorsOverrideProperty9.ts, 0, 0)) |
| 7 | +>T : Symbol(T, Decl(accessorsOverrideProperty9.ts, 3, 24)) |
| 8 | +>args : Symbol(args, Decl(accessorsOverrideProperty9.ts, 3, 39)) |
| 9 | +>T : Symbol(T, Decl(accessorsOverrideProperty9.ts, 3, 24)) |
| 10 | + |
| 11 | +export type PropertiesOf<T> = { [K in keyof T]: T[K] }; |
| 12 | +>PropertiesOf : Symbol(PropertiesOf, Decl(accessorsOverrideProperty9.ts, 3, 60)) |
| 13 | +>T : Symbol(T, Decl(accessorsOverrideProperty9.ts, 4, 25)) |
| 14 | +>K : Symbol(K, Decl(accessorsOverrideProperty9.ts, 4, 33)) |
| 15 | +>T : Symbol(T, Decl(accessorsOverrideProperty9.ts, 4, 25)) |
| 16 | +>T : Symbol(T, Decl(accessorsOverrideProperty9.ts, 4, 25)) |
| 17 | +>K : Symbol(K, Decl(accessorsOverrideProperty9.ts, 4, 33)) |
| 18 | + |
| 19 | +interface IApiItemConstructor extends Constructor<ApiItem>, PropertiesOf<typeof ApiItem> {} |
| 20 | +>IApiItemConstructor : Symbol(IApiItemConstructor, Decl(accessorsOverrideProperty9.ts, 4, 55)) |
| 21 | +>Constructor : Symbol(Constructor, Decl(accessorsOverrideProperty9.ts, 0, 0)) |
| 22 | +>ApiItem : Symbol(ApiItem, Decl(accessorsOverrideProperty9.ts, 6, 91)) |
| 23 | +>PropertiesOf : Symbol(PropertiesOf, Decl(accessorsOverrideProperty9.ts, 3, 60)) |
| 24 | +>ApiItem : Symbol(ApiItem, Decl(accessorsOverrideProperty9.ts, 6, 91)) |
| 25 | + |
| 26 | +// Base class |
| 27 | +class ApiItem { |
| 28 | +>ApiItem : Symbol(ApiItem, Decl(accessorsOverrideProperty9.ts, 6, 91)) |
| 29 | + |
| 30 | + public get members(): ReadonlyArray<ApiItem> { |
| 31 | +>members : Symbol(ApiItem.members, Decl(accessorsOverrideProperty9.ts, 9, 15)) |
| 32 | +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --)) |
| 33 | +>ApiItem : Symbol(ApiItem, Decl(accessorsOverrideProperty9.ts, 6, 91)) |
| 34 | + |
| 35 | + return []; |
| 36 | + } |
| 37 | +} |
| 38 | + |
| 39 | +// Normal subclass |
| 40 | +class ApiEnumMember extends ApiItem { |
| 41 | +>ApiEnumMember : Symbol(ApiEnumMember, Decl(accessorsOverrideProperty9.ts, 13, 1)) |
| 42 | +>ApiItem : Symbol(ApiItem, Decl(accessorsOverrideProperty9.ts, 6, 91)) |
| 43 | +} |
| 44 | + |
| 45 | +// Mixin base class |
| 46 | +interface ApiItemContainerMixin extends ApiItem { |
| 47 | +>ApiItemContainerMixin : Symbol(ApiItemContainerMixin, Decl(accessorsOverrideProperty9.ts, 22, 1), Decl(accessorsOverrideProperty9.ts, 17, 1)) |
| 48 | +>ApiItem : Symbol(ApiItem, Decl(accessorsOverrideProperty9.ts, 6, 91)) |
| 49 | + |
| 50 | + readonly members: ReadonlyArray<ApiItem>; |
| 51 | +>members : Symbol(ApiItemContainerMixin.members, Decl(accessorsOverrideProperty9.ts, 20, 49)) |
| 52 | +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --)) |
| 53 | +>ApiItem : Symbol(ApiItem, Decl(accessorsOverrideProperty9.ts, 6, 91)) |
| 54 | +} |
| 55 | + |
| 56 | +function ApiItemContainerMixin<TBaseClass extends IApiItemConstructor>( |
| 57 | +>ApiItemContainerMixin : Symbol(ApiItemContainerMixin, Decl(accessorsOverrideProperty9.ts, 22, 1), Decl(accessorsOverrideProperty9.ts, 17, 1)) |
| 58 | +>TBaseClass : Symbol(TBaseClass, Decl(accessorsOverrideProperty9.ts, 24, 31)) |
| 59 | +>IApiItemConstructor : Symbol(IApiItemConstructor, Decl(accessorsOverrideProperty9.ts, 4, 55)) |
| 60 | + |
| 61 | + baseClass: TBaseClass |
| 62 | +>baseClass : Symbol(baseClass, Decl(accessorsOverrideProperty9.ts, 24, 71)) |
| 63 | +>TBaseClass : Symbol(TBaseClass, Decl(accessorsOverrideProperty9.ts, 24, 31)) |
| 64 | + |
| 65 | +): TBaseClass & (new (...args: any[]) => ApiItemContainerMixin) { |
| 66 | +>TBaseClass : Symbol(TBaseClass, Decl(accessorsOverrideProperty9.ts, 24, 31)) |
| 67 | +>args : Symbol(args, Decl(accessorsOverrideProperty9.ts, 26, 22)) |
| 68 | +>ApiItemContainerMixin : Symbol(ApiItemContainerMixin, Decl(accessorsOverrideProperty9.ts, 22, 1), Decl(accessorsOverrideProperty9.ts, 17, 1)) |
| 69 | + |
| 70 | + abstract class MixedClass extends baseClass implements ApiItemContainerMixin { |
| 71 | +>MixedClass : Symbol(MixedClass, Decl(accessorsOverrideProperty9.ts, 26, 65)) |
| 72 | +>baseClass : Symbol(baseClass, Decl(accessorsOverrideProperty9.ts, 24, 71)) |
| 73 | +>ApiItemContainerMixin : Symbol(ApiItemContainerMixin, Decl(accessorsOverrideProperty9.ts, 22, 1), Decl(accessorsOverrideProperty9.ts, 17, 1)) |
| 74 | + |
| 75 | + public constructor(...args: any[]) { |
| 76 | +>args : Symbol(args, Decl(accessorsOverrideProperty9.ts, 28, 23)) |
| 77 | + |
| 78 | + super(...args); |
| 79 | +>super : Symbol(TBaseClass, Decl(accessorsOverrideProperty9.ts, 24, 31)) |
| 80 | +>args : Symbol(args, Decl(accessorsOverrideProperty9.ts, 28, 23)) |
| 81 | + } |
| 82 | + |
| 83 | + public get members(): ReadonlyArray<ApiItem> { |
| 84 | +>members : Symbol(MixedClass.members, Decl(accessorsOverrideProperty9.ts, 30, 5)) |
| 85 | +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --)) |
| 86 | +>ApiItem : Symbol(ApiItem, Decl(accessorsOverrideProperty9.ts, 6, 91)) |
| 87 | + |
| 88 | + return []; |
| 89 | + } |
| 90 | + } |
| 91 | + |
| 92 | + return MixedClass; |
| 93 | +>MixedClass : Symbol(MixedClass, Decl(accessorsOverrideProperty9.ts, 26, 65)) |
| 94 | +} |
| 95 | + |
| 96 | +// Subclass inheriting from mixin |
| 97 | +export class ApiEnum extends ApiItemContainerMixin(ApiItem) { |
| 98 | +>ApiEnum : Symbol(ApiEnum, Decl(accessorsOverrideProperty9.ts, 38, 1)) |
| 99 | +>ApiItemContainerMixin : Symbol(ApiItemContainerMixin, Decl(accessorsOverrideProperty9.ts, 22, 1), Decl(accessorsOverrideProperty9.ts, 17, 1)) |
| 100 | +>ApiItem : Symbol(ApiItem, Decl(accessorsOverrideProperty9.ts, 6, 91)) |
| 101 | + |
| 102 | + // This worked prior to TypeScript 4.0: |
| 103 | + public get members(): ReadonlyArray<ApiEnumMember> { |
| 104 | +>members : Symbol(ApiEnum.members, Decl(accessorsOverrideProperty9.ts, 41, 61)) |
| 105 | +>ReadonlyArray : Symbol(ReadonlyArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2016.array.include.d.ts, --, --)) |
| 106 | +>ApiEnumMember : Symbol(ApiEnumMember, Decl(accessorsOverrideProperty9.ts, 13, 1)) |
| 107 | + |
| 108 | + return []; |
| 109 | + } |
| 110 | +} |
| 111 | + |
0 commit comments