Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fbe002a

Browse filesBrowse files
authored
Merge pull request microsoft#16502 from Microsoft/fix16211
Fix 'extends' with type parameter default returned from superclass construct signature
2 parents 6800891 + 73d63ec commit fbe002a
Copy full SHA for fbe002a

5 files changed

+197-92Lines changed: 197 additions & 92 deletions

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/compiler/checker.ts‎

Copy file name to clipboardExpand all lines: src/compiler/checker.ts
+9-7Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4826,12 +4826,9 @@ namespace ts {
48264826
}
48274827

48284828
function getInstantiatedConstructorsForTypeArguments(type: Type, typeArgumentNodes: TypeNode[], location: Node): Signature[] {
4829-
let signatures = getConstructorsForTypeArguments(type, typeArgumentNodes, location);
4830-
if (typeArgumentNodes) {
4831-
const typeArguments = map(typeArgumentNodes, getTypeFromTypeNode);
4832-
signatures = map(signatures, sig => getSignatureInstantiation(sig, typeArguments));
4833-
}
4834-
return signatures;
4829+
const signatures = getConstructorsForTypeArguments(type, typeArgumentNodes, location);
4830+
const typeArguments = map(typeArgumentNodes, getTypeFromTypeNode);
4831+
return sameMap(signatures, sig => some(sig.typeParameters) ? getSignatureInstantiation(sig, typeArguments) : sig);
48354832
}
48364833

48374834
/**
@@ -20946,7 +20943,7 @@ namespace ts {
2094620943
const staticBaseType = getApparentType(baseConstructorType);
2094720944
checkBaseTypeAccessibility(staticBaseType, baseTypeNode);
2094820945
checkSourceElement(baseTypeNode.expression);
20949-
if (baseTypeNode.typeArguments) {
20946+
if (some(baseTypeNode.typeArguments)) {
2095020947
forEach(baseTypeNode.typeArguments, checkSourceElement);
2095120948
for (const constructor of getConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments, baseTypeNode)) {
2095220949
if (!checkTypeArgumentConstraints(constructor.typeParameters, baseTypeNode.typeArguments)) {
@@ -23929,6 +23926,11 @@ namespace ts {
2392923926
const sourceFile = getSourceFileOfNode(node);
2393023927
return grammarErrorAtPos(sourceFile, types.pos, 0, Diagnostics._0_list_cannot_be_empty, listType);
2393123928
}
23929+
return forEach(types, checkGrammarExpressionWithTypeArguments);
23930+
}
23931+
23932+
function checkGrammarExpressionWithTypeArguments(node: ExpressionWithTypeArguments) {
23933+
return checkGrammarTypeArguments(node, node.typeArguments);
2393223934
}
2393323935

2393423936
function checkGrammarClassDeclarationHeritageClauses(node: ClassLikeDeclaration) {
Collapse file

‎tests/baselines/reference/genericDefaults.js‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/genericDefaults.js
+23-2Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,15 @@ const Derived02c01 = new Derived02(1);
458458
const Derived02c02 = new Derived02<number>();
459459
const Derived02c03 = new Derived02<number>(1);
460460

461+
// https://github.com/Microsoft/TypeScript/issues/16211
462+
interface Base02 {}
463+
interface Base02Constructor { new <T = A>(a: T): Base02 & T; }
464+
declare const Base02: Base02Constructor;
465+
declare class Derived03 extends Base02 {}
466+
const Derived03c00 = new Derived03(ab);
467+
const Derived03c01 = Derived03c00.a;
468+
type DerivedProps = keyof Derived03;
469+
461470
type t00<T = number> = { a: T; }
462471
const t00c00 = (<t00>x).a;
463472
const t00c01 = (<t00<number>>x).a;
@@ -478,8 +487,7 @@ const t03c00 = (<t03<number>>x).a;
478487
const t03c01 = (<t03<1>>x).a;
479488
const t03c02 = (<t03<number, number>>x).a;
480489
const t03c03 = (<t03<1, 1>>x).a;
481-
const t03c04 = (<t03<number, 1>>x).a;
482-
490+
const t03c04 = (<t03<number, 1>>x).a;
483491

484492
//// [genericDefaults.js]
485493
// no inference
@@ -834,6 +842,8 @@ var Derived02c00 = new Derived02();
834842
var Derived02c01 = new Derived02(1);
835843
var Derived02c02 = new Derived02();
836844
var Derived02c03 = new Derived02(1);
845+
var Derived03c00 = new Derived03(ab);
846+
var Derived03c01 = Derived03c00.a;
837847
var t00c00 = x.a;
838848
var t00c01 = x.a;
839849
var t01c00 = x.a;
@@ -977,6 +987,17 @@ declare const Derived02c00: Derived02<string>;
977987
declare const Derived02c01: Derived02<number>;
978988
declare const Derived02c02: Derived02<number>;
979989
declare const Derived02c03: Derived02<number>;
990+
interface Base02 {
991+
}
992+
interface Base02Constructor {
993+
new <T = A>(a: T): Base02 & T;
994+
}
995+
declare const Base02: Base02Constructor;
996+
declare class Derived03 extends Base02 {
997+
}
998+
declare const Derived03c00: Derived03;
999+
declare const Derived03c01: number;
1000+
declare type DerivedProps = keyof Derived03;
9801001
declare type t00<T = number> = {
9811002
a: T;
9821003
};
Collapse file

‎tests/baselines/reference/genericDefaults.symbols‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/genericDefaults.symbols
+118-82Lines changed: 118 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -2123,135 +2123,171 @@ const Derived02c03 = new Derived02<number>(1);
21232123
>Derived02c03 : Symbol(Derived02c03, Decl(genericDefaults.ts, 457, 5))
21242124
>Derived02 : Symbol(Derived02, Decl(genericDefaults.ts, 451, 46))
21252125

2126+
// https://github.com/Microsoft/TypeScript/issues/16211
2127+
interface Base02 {}
2128+
>Base02 : Symbol(Base02, Decl(genericDefaults.ts, 457, 46), Decl(genericDefaults.ts, 462, 13))
2129+
2130+
interface Base02Constructor { new <T = A>(a: T): Base02 & T; }
2131+
>Base02Constructor : Symbol(Base02Constructor, Decl(genericDefaults.ts, 460, 19))
2132+
>T : Symbol(T, Decl(genericDefaults.ts, 461, 35))
2133+
>A : Symbol(A, Decl(genericDefaults.ts, 0, 0))
2134+
>a : Symbol(a, Decl(genericDefaults.ts, 461, 42))
2135+
>T : Symbol(T, Decl(genericDefaults.ts, 461, 35))
2136+
>Base02 : Symbol(Base02, Decl(genericDefaults.ts, 457, 46), Decl(genericDefaults.ts, 462, 13))
2137+
>T : Symbol(T, Decl(genericDefaults.ts, 461, 35))
2138+
2139+
declare const Base02: Base02Constructor;
2140+
>Base02 : Symbol(Base02, Decl(genericDefaults.ts, 457, 46), Decl(genericDefaults.ts, 462, 13))
2141+
>Base02Constructor : Symbol(Base02Constructor, Decl(genericDefaults.ts, 460, 19))
2142+
2143+
declare class Derived03 extends Base02 {}
2144+
>Derived03 : Symbol(Derived03, Decl(genericDefaults.ts, 462, 40))
2145+
>Base02 : Symbol(Base02, Decl(genericDefaults.ts, 457, 46), Decl(genericDefaults.ts, 462, 13))
2146+
2147+
const Derived03c00 = new Derived03(ab);
2148+
>Derived03c00 : Symbol(Derived03c00, Decl(genericDefaults.ts, 464, 5))
2149+
>Derived03 : Symbol(Derived03, Decl(genericDefaults.ts, 462, 40))
2150+
>ab : Symbol(ab, Decl(genericDefaults.ts, 11, 13))
2151+
2152+
const Derived03c01 = Derived03c00.a;
2153+
>Derived03c01 : Symbol(Derived03c01, Decl(genericDefaults.ts, 465, 5))
2154+
>Derived03c00.a : Symbol(A.a, Decl(genericDefaults.ts, 0, 13))
2155+
>Derived03c00 : Symbol(Derived03c00, Decl(genericDefaults.ts, 464, 5))
2156+
>a : Symbol(A.a, Decl(genericDefaults.ts, 0, 13))
2157+
2158+
type DerivedProps = keyof Derived03;
2159+
>DerivedProps : Symbol(DerivedProps, Decl(genericDefaults.ts, 465, 36))
2160+
>Derived03 : Symbol(Derived03, Decl(genericDefaults.ts, 462, 40))
2161+
21262162
type t00<T = number> = { a: T; }
2127-
>t00 : Symbol(t00, Decl(genericDefaults.ts, 457, 46))
2128-
>T : Symbol(T, Decl(genericDefaults.ts, 459, 9))
2129-
>a : Symbol(a, Decl(genericDefaults.ts, 459, 24))
2130-
>T : Symbol(T, Decl(genericDefaults.ts, 459, 9))
2163+
>t00 : Symbol(t00, Decl(genericDefaults.ts, 466, 36))
2164+
>T : Symbol(T, Decl(genericDefaults.ts, 468, 9))
2165+
>a : Symbol(a, Decl(genericDefaults.ts, 468, 24))
2166+
>T : Symbol(T, Decl(genericDefaults.ts, 468, 9))
21312167

21322168
const t00c00 = (<t00>x).a;
2133-
>t00c00 : Symbol(t00c00, Decl(genericDefaults.ts, 460, 5))
2134-
>(<t00>x).a : Symbol(a, Decl(genericDefaults.ts, 459, 24))
2135-
>t00 : Symbol(t00, Decl(genericDefaults.ts, 457, 46))
2169+
>t00c00 : Symbol(t00c00, Decl(genericDefaults.ts, 469, 5))
2170+
>(<t00>x).a : Symbol(a, Decl(genericDefaults.ts, 468, 24))
2171+
>t00 : Symbol(t00, Decl(genericDefaults.ts, 466, 36))
21362172
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2137-
>a : Symbol(a, Decl(genericDefaults.ts, 459, 24))
2173+
>a : Symbol(a, Decl(genericDefaults.ts, 468, 24))
21382174

21392175
const t00c01 = (<t00<number>>x).a;
2140-
>t00c01 : Symbol(t00c01, Decl(genericDefaults.ts, 461, 5))
2141-
>(<t00<number>>x).a : Symbol(a, Decl(genericDefaults.ts, 459, 24))
2142-
>t00 : Symbol(t00, Decl(genericDefaults.ts, 457, 46))
2176+
>t00c01 : Symbol(t00c01, Decl(genericDefaults.ts, 470, 5))
2177+
>(<t00<number>>x).a : Symbol(a, Decl(genericDefaults.ts, 468, 24))
2178+
>t00 : Symbol(t00, Decl(genericDefaults.ts, 466, 36))
21432179
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2144-
>a : Symbol(a, Decl(genericDefaults.ts, 459, 24))
2180+
>a : Symbol(a, Decl(genericDefaults.ts, 468, 24))
21452181

21462182
type t01<T, U = T> = { a: [T, U]; }
2147-
>t01 : Symbol(t01, Decl(genericDefaults.ts, 461, 34))
2148-
>T : Symbol(T, Decl(genericDefaults.ts, 463, 9))
2149-
>U : Symbol(U, Decl(genericDefaults.ts, 463, 11))
2150-
>T : Symbol(T, Decl(genericDefaults.ts, 463, 9))
2151-
>a : Symbol(a, Decl(genericDefaults.ts, 463, 22))
2152-
>T : Symbol(T, Decl(genericDefaults.ts, 463, 9))
2153-
>U : Symbol(U, Decl(genericDefaults.ts, 463, 11))
2183+
>t01 : Symbol(t01, Decl(genericDefaults.ts, 470, 34))
2184+
>T : Symbol(T, Decl(genericDefaults.ts, 472, 9))
2185+
>U : Symbol(U, Decl(genericDefaults.ts, 472, 11))
2186+
>T : Symbol(T, Decl(genericDefaults.ts, 472, 9))
2187+
>a : Symbol(a, Decl(genericDefaults.ts, 472, 22))
2188+
>T : Symbol(T, Decl(genericDefaults.ts, 472, 9))
2189+
>U : Symbol(U, Decl(genericDefaults.ts, 472, 11))
21542190

21552191
const t01c00 = (<t01<number>>x).a;
2156-
>t01c00 : Symbol(t01c00, Decl(genericDefaults.ts, 464, 5))
2157-
>(<t01<number>>x).a : Symbol(a, Decl(genericDefaults.ts, 463, 22))
2158-
>t01 : Symbol(t01, Decl(genericDefaults.ts, 461, 34))
2192+
>t01c00 : Symbol(t01c00, Decl(genericDefaults.ts, 473, 5))
2193+
>(<t01<number>>x).a : Symbol(a, Decl(genericDefaults.ts, 472, 22))
2194+
>t01 : Symbol(t01, Decl(genericDefaults.ts, 470, 34))
21592195
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2160-
>a : Symbol(a, Decl(genericDefaults.ts, 463, 22))
2196+
>a : Symbol(a, Decl(genericDefaults.ts, 472, 22))
21612197

21622198
const t01c01 = (<t01<number, string>>x).a;
2163-
>t01c01 : Symbol(t01c01, Decl(genericDefaults.ts, 465, 5))
2164-
>(<t01<number, string>>x).a : Symbol(a, Decl(genericDefaults.ts, 463, 22))
2165-
>t01 : Symbol(t01, Decl(genericDefaults.ts, 461, 34))
2199+
>t01c01 : Symbol(t01c01, Decl(genericDefaults.ts, 474, 5))
2200+
>(<t01<number, string>>x).a : Symbol(a, Decl(genericDefaults.ts, 472, 22))
2201+
>t01 : Symbol(t01, Decl(genericDefaults.ts, 470, 34))
21662202
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2167-
>a : Symbol(a, Decl(genericDefaults.ts, 463, 22))
2203+
>a : Symbol(a, Decl(genericDefaults.ts, 472, 22))
21682204

21692205
type t02<T extends number, U = T> = { a: [T, U]; }
2170-
>t02 : Symbol(t02, Decl(genericDefaults.ts, 465, 42))
2171-
>T : Symbol(T, Decl(genericDefaults.ts, 467, 9))
2172-
>U : Symbol(U, Decl(genericDefaults.ts, 467, 26))
2173-
>T : Symbol(T, Decl(genericDefaults.ts, 467, 9))
2174-
>a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2175-
>T : Symbol(T, Decl(genericDefaults.ts, 467, 9))
2176-
>U : Symbol(U, Decl(genericDefaults.ts, 467, 26))
2206+
>t02 : Symbol(t02, Decl(genericDefaults.ts, 474, 42))
2207+
>T : Symbol(T, Decl(genericDefaults.ts, 476, 9))
2208+
>U : Symbol(U, Decl(genericDefaults.ts, 476, 26))
2209+
>T : Symbol(T, Decl(genericDefaults.ts, 476, 9))
2210+
>a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
2211+
>T : Symbol(T, Decl(genericDefaults.ts, 476, 9))
2212+
>U : Symbol(U, Decl(genericDefaults.ts, 476, 26))
21772213

21782214
const t02c00 = (<t02<number>>x).a;
2179-
>t02c00 : Symbol(t02c00, Decl(genericDefaults.ts, 468, 5))
2180-
>(<t02<number>>x).a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2181-
>t02 : Symbol(t02, Decl(genericDefaults.ts, 465, 42))
2215+
>t02c00 : Symbol(t02c00, Decl(genericDefaults.ts, 477, 5))
2216+
>(<t02<number>>x).a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
2217+
>t02 : Symbol(t02, Decl(genericDefaults.ts, 474, 42))
21822218
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2183-
>a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2219+
>a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
21842220

21852221
const t02c01 = (<t02<1>>x).a;
2186-
>t02c01 : Symbol(t02c01, Decl(genericDefaults.ts, 469, 5))
2187-
>(<t02<1>>x).a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2188-
>t02 : Symbol(t02, Decl(genericDefaults.ts, 465, 42))
2222+
>t02c01 : Symbol(t02c01, Decl(genericDefaults.ts, 478, 5))
2223+
>(<t02<1>>x).a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
2224+
>t02 : Symbol(t02, Decl(genericDefaults.ts, 474, 42))
21892225
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2190-
>a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2226+
>a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
21912227

21922228
const t02c02 = (<t02<number, number>>x).a;
2193-
>t02c02 : Symbol(t02c02, Decl(genericDefaults.ts, 470, 5))
2194-
>(<t02<number, number>>x).a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2195-
>t02 : Symbol(t02, Decl(genericDefaults.ts, 465, 42))
2229+
>t02c02 : Symbol(t02c02, Decl(genericDefaults.ts, 479, 5))
2230+
>(<t02<number, number>>x).a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
2231+
>t02 : Symbol(t02, Decl(genericDefaults.ts, 474, 42))
21962232
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2197-
>a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2233+
>a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
21982234

21992235
const t02c03 = (<t02<1, number>>x).a;
2200-
>t02c03 : Symbol(t02c03, Decl(genericDefaults.ts, 471, 5))
2201-
>(<t02<1, number>>x).a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2202-
>t02 : Symbol(t02, Decl(genericDefaults.ts, 465, 42))
2236+
>t02c03 : Symbol(t02c03, Decl(genericDefaults.ts, 480, 5))
2237+
>(<t02<1, number>>x).a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
2238+
>t02 : Symbol(t02, Decl(genericDefaults.ts, 474, 42))
22032239
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2204-
>a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2240+
>a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
22052241

22062242
const t02c04 = (<t02<number, 1>>x).a;
2207-
>t02c04 : Symbol(t02c04, Decl(genericDefaults.ts, 472, 5))
2208-
>(<t02<number, 1>>x).a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2209-
>t02 : Symbol(t02, Decl(genericDefaults.ts, 465, 42))
2243+
>t02c04 : Symbol(t02c04, Decl(genericDefaults.ts, 481, 5))
2244+
>(<t02<number, 1>>x).a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
2245+
>t02 : Symbol(t02, Decl(genericDefaults.ts, 474, 42))
22102246
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2211-
>a : Symbol(a, Decl(genericDefaults.ts, 467, 37))
2247+
>a : Symbol(a, Decl(genericDefaults.ts, 476, 37))
22122248

22132249
type t03<T extends number, U extends T = T> = { a: [T, U]; }
2214-
>t03 : Symbol(t03, Decl(genericDefaults.ts, 472, 37))
2215-
>T : Symbol(T, Decl(genericDefaults.ts, 474, 9))
2216-
>U : Symbol(U, Decl(genericDefaults.ts, 474, 26))
2217-
>T : Symbol(T, Decl(genericDefaults.ts, 474, 9))
2218-
>T : Symbol(T, Decl(genericDefaults.ts, 474, 9))
2219-
>a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2220-
>T : Symbol(T, Decl(genericDefaults.ts, 474, 9))
2221-
>U : Symbol(U, Decl(genericDefaults.ts, 474, 26))
2250+
>t03 : Symbol(t03, Decl(genericDefaults.ts, 481, 37))
2251+
>T : Symbol(T, Decl(genericDefaults.ts, 483, 9))
2252+
>U : Symbol(U, Decl(genericDefaults.ts, 483, 26))
2253+
>T : Symbol(T, Decl(genericDefaults.ts, 483, 9))
2254+
>T : Symbol(T, Decl(genericDefaults.ts, 483, 9))
2255+
>a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
2256+
>T : Symbol(T, Decl(genericDefaults.ts, 483, 9))
2257+
>U : Symbol(U, Decl(genericDefaults.ts, 483, 26))
22222258

22232259
const t03c00 = (<t03<number>>x).a;
2224-
>t03c00 : Symbol(t03c00, Decl(genericDefaults.ts, 475, 5))
2225-
>(<t03<number>>x).a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2226-
>t03 : Symbol(t03, Decl(genericDefaults.ts, 472, 37))
2260+
>t03c00 : Symbol(t03c00, Decl(genericDefaults.ts, 484, 5))
2261+
>(<t03<number>>x).a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
2262+
>t03 : Symbol(t03, Decl(genericDefaults.ts, 481, 37))
22272263
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2228-
>a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2264+
>a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
22292265

22302266
const t03c01 = (<t03<1>>x).a;
2231-
>t03c01 : Symbol(t03c01, Decl(genericDefaults.ts, 476, 5))
2232-
>(<t03<1>>x).a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2233-
>t03 : Symbol(t03, Decl(genericDefaults.ts, 472, 37))
2267+
>t03c01 : Symbol(t03c01, Decl(genericDefaults.ts, 485, 5))
2268+
>(<t03<1>>x).a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
2269+
>t03 : Symbol(t03, Decl(genericDefaults.ts, 481, 37))
22342270
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2235-
>a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2271+
>a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
22362272

22372273
const t03c02 = (<t03<number, number>>x).a;
2238-
>t03c02 : Symbol(t03c02, Decl(genericDefaults.ts, 477, 5))
2239-
>(<t03<number, number>>x).a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2240-
>t03 : Symbol(t03, Decl(genericDefaults.ts, 472, 37))
2274+
>t03c02 : Symbol(t03c02, Decl(genericDefaults.ts, 486, 5))
2275+
>(<t03<number, number>>x).a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
2276+
>t03 : Symbol(t03, Decl(genericDefaults.ts, 481, 37))
22412277
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2242-
>a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2278+
>a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
22432279

22442280
const t03c03 = (<t03<1, 1>>x).a;
2245-
>t03c03 : Symbol(t03c03, Decl(genericDefaults.ts, 478, 5))
2246-
>(<t03<1, 1>>x).a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2247-
>t03 : Symbol(t03, Decl(genericDefaults.ts, 472, 37))
2281+
>t03c03 : Symbol(t03c03, Decl(genericDefaults.ts, 487, 5))
2282+
>(<t03<1, 1>>x).a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
2283+
>t03 : Symbol(t03, Decl(genericDefaults.ts, 481, 37))
22482284
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2249-
>a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2285+
>a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
22502286

22512287
const t03c04 = (<t03<number, 1>>x).a;
2252-
>t03c04 : Symbol(t03c04, Decl(genericDefaults.ts, 479, 5))
2253-
>(<t03<number, 1>>x).a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2254-
>t03 : Symbol(t03, Decl(genericDefaults.ts, 472, 37))
2288+
>t03c04 : Symbol(t03c04, Decl(genericDefaults.ts, 488, 5))
2289+
>(<t03<number, 1>>x).a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
2290+
>t03 : Symbol(t03, Decl(genericDefaults.ts, 481, 37))
22552291
>x : Symbol(x, Decl(genericDefaults.ts, 13, 13))
2256-
>a : Symbol(a, Decl(genericDefaults.ts, 474, 47))
2292+
>a : Symbol(a, Decl(genericDefaults.ts, 483, 47))
22572293

Collapse file

‎tests/baselines/reference/genericDefaults.types‎

Copy file name to clipboardExpand all lines: tests/baselines/reference/genericDefaults.types
+37Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2446,6 +2446,43 @@ const Derived02c03 = new Derived02<number>(1);
24462446
>Derived02 : typeof Derived02
24472447
>1 : 1
24482448

2449+
// https://github.com/Microsoft/TypeScript/issues/16211
2450+
interface Base02 {}
2451+
>Base02 : Base02
2452+
2453+
interface Base02Constructor { new <T = A>(a: T): Base02 & T; }
2454+
>Base02Constructor : Base02Constructor
2455+
>T : T
2456+
>A : A
2457+
>a : T
2458+
>T : T
2459+
>Base02 : Base02
2460+
>T : T
2461+
2462+
declare const Base02: Base02Constructor;
2463+
>Base02 : Base02Constructor
2464+
>Base02Constructor : Base02Constructor
2465+
2466+
declare class Derived03 extends Base02 {}
2467+
>Derived03 : Derived03
2468+
>Base02 : Base02 & A
2469+
2470+
const Derived03c00 = new Derived03(ab);
2471+
>Derived03c00 : Derived03
2472+
>new Derived03(ab) : Derived03
2473+
>Derived03 : typeof Derived03
2474+
>ab : AB
2475+
2476+
const Derived03c01 = Derived03c00.a;
2477+
>Derived03c01 : number
2478+
>Derived03c00.a : number
2479+
>Derived03c00 : Derived03
2480+
>a : number
2481+
2482+
type DerivedProps = keyof Derived03;
2483+
>DerivedProps : "a"
2484+
>Derived03 : Derived03
2485+
24492486
type t00<T = number> = { a: T; }
24502487
>t00 : t00<T>
24512488
>T : T

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.