Skip to content

Commit 5138e8b

Browse files
committed
Correct tests and update baselines.
A lot of tests used non-numeric property names for object literals that are contextually typed only by a numeric indexer.
1 parent 41db405 commit 5138e8b

File tree

34 files changed

+103
-121
lines changed

34 files changed

+103
-121
lines changed

tests/baselines/reference/computedPropertyNamesContextualType7_ES5.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@ interface I<T> {
66
declare function foo<T>(obj: I<T>): T
77

88
foo({
9-
p: "",
9+
101: "",
1010
0: () => { },
1111
["hi" + "bye"]: true,
1212
[0 + 1]: 0,
1313
[+"hi"]: [0]
14-
});
14+
});
15+
1516

1617
//// [computedPropertyNamesContextualType7_ES5.js]
1718
foo((_a = {
18-
p: "",
19+
101: "",
1920
0: function () { }
2021
},
2122
_a["hi" + "bye"] = true,

tests/baselines/reference/computedPropertyNamesContextualType7_ES5.symbols

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@ declare function foo<T>(obj: I<T>): T
1919
foo({
2020
>foo : Symbol(foo, Decl(computedPropertyNamesContextualType7_ES5.ts, 2, 1))
2121

22-
p: "",
23-
>p : Symbol(p, Decl(computedPropertyNamesContextualType7_ES5.ts, 6, 5))
24-
22+
101: "",
2523
0: () => { },
2624
["hi" + "bye"]: true,
2725
[0 + 1]: 0,
2826
[+"hi"]: [0]
2927
});
28+

tests/baselines/reference/computedPropertyNamesContextualType7_ES5.types

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ declare function foo<T>(obj: I<T>): T
1717
>T : T
1818

1919
foo({
20-
>foo({ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]}) : (() => void) | number | number[]
20+
>foo({ 101: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]}) : string | (() => void) | number | number[]
2121
>foo : <T>(obj: I<T>) => T
22-
>{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | (() => void) | boolean | number | number[]; [x: number]: (() => void) | number | number[]; 0: () => void; p: string; }
22+
>{ 101: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | (() => void) | boolean | number | number[]; [x: number]: string | (() => void) | number | number[]; 0: () => void; 101: string; }
2323

24-
p: "",
25-
>p : string
24+
101: "",
2625
>"" : string
2726

2827
0: () => { },
@@ -47,3 +46,4 @@ foo({
4746
>0 : number
4847

4948
});
49+

tests/baselines/reference/computedPropertyNamesContextualType7_ES6.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@ interface I<T> {
66
declare function foo<T>(obj: I<T>): T
77

88
foo({
9-
p: "",
9+
101: "",
1010
0: () => { },
1111
["hi" + "bye"]: true,
1212
[0 + 1]: 0,
1313
[+"hi"]: [0]
14-
});
14+
});
15+
1516

1617
//// [computedPropertyNamesContextualType7_ES6.js]
1718
foo({
18-
p: "",
19+
101: "",
1920
0: () => { },
2021
["hi" + "bye"]: true,
2122
[0 + 1]: 0,

tests/baselines/reference/computedPropertyNamesContextualType7_ES6.symbols

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@ declare function foo<T>(obj: I<T>): T
1919
foo({
2020
>foo : Symbol(foo, Decl(computedPropertyNamesContextualType7_ES6.ts, 2, 1))
2121

22-
p: "",
23-
>p : Symbol(p, Decl(computedPropertyNamesContextualType7_ES6.ts, 6, 5))
24-
22+
101: "",
2523
0: () => { },
2624
["hi" + "bye"]: true,
2725
[0 + 1]: 0,
2826
[+"hi"]: [0]
2927
});
28+

tests/baselines/reference/computedPropertyNamesContextualType7_ES6.types

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ declare function foo<T>(obj: I<T>): T
1717
>T : T
1818

1919
foo({
20-
>foo({ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]}) : (() => void) | number | number[]
20+
>foo({ 101: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]}) : string | (() => void) | number | number[]
2121
>foo : <T>(obj: I<T>) => T
22-
>{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | (() => void) | boolean | number | number[]; [x: number]: (() => void) | number | number[]; 0: () => void; p: string; }
22+
>{ 101: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | (() => void) | boolean | number | number[]; [x: number]: string | (() => void) | number | number[]; 0: () => void; 101: string; }
2323

24-
p: "",
25-
>p : string
24+
101: "",
2625
>"" : string
2726

2827
0: () => { },
@@ -47,3 +46,4 @@ foo({
4746
>0 : number
4847

4948
});
49+

tests/baselines/reference/indexSignaturesInferentialTyping.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@ function foo<T>(items: { [index: number]: T }): T { return undefined; }
33
function bar<T>(items: { [index: string]: T }): T { return undefined; }
44

55
var x1 = foo({ 0: 0, 1: 1 }); // type should be number
6-
var x2 = foo({ zero: 0, one: 1 });
7-
var x3 = bar({ 0: 0, 1: 1 });
8-
var x4 = bar({ zero: 0, one: 1 }); // type should be number
6+
var x2 = bar({ 0: 0, 1: 1 });
7+
var x3 = bar({ zero: 0, one: 1 }); // type should be number
98

109

1110
//// [indexSignaturesInferentialTyping.js]
1211
function foo(items) { return undefined; }
1312
function bar(items) { return undefined; }
1413
var x1 = foo({ 0: 0, 1: 1 }); // type should be number
15-
var x2 = foo({ zero: 0, one: 1 });
16-
var x3 = bar({ 0: 0, 1: 1 });
17-
var x4 = bar({ zero: 0, one: 1 }); // type should be number
14+
var x2 = bar({ 0: 0, 1: 1 });
15+
var x3 = bar({ zero: 0, one: 1 }); // type should be number

tests/baselines/reference/indexSignaturesInferentialTyping.symbols

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,13 @@ var x1 = foo({ 0: 0, 1: 1 }); // type should be number
2121
>x1 : Symbol(x1, Decl(indexSignaturesInferentialTyping.ts, 3, 3))
2222
>foo : Symbol(foo, Decl(indexSignaturesInferentialTyping.ts, 0, 0))
2323

24-
var x2 = foo({ zero: 0, one: 1 });
24+
var x2 = bar({ 0: 0, 1: 1 });
2525
>x2 : Symbol(x2, Decl(indexSignaturesInferentialTyping.ts, 4, 3))
26-
>foo : Symbol(foo, Decl(indexSignaturesInferentialTyping.ts, 0, 0))
27-
>zero : Symbol(zero, Decl(indexSignaturesInferentialTyping.ts, 4, 14))
28-
>one : Symbol(one, Decl(indexSignaturesInferentialTyping.ts, 4, 23))
29-
30-
var x3 = bar({ 0: 0, 1: 1 });
31-
>x3 : Symbol(x3, Decl(indexSignaturesInferentialTyping.ts, 5, 3))
3226
>bar : Symbol(bar, Decl(indexSignaturesInferentialTyping.ts, 0, 71))
3327

34-
var x4 = bar({ zero: 0, one: 1 }); // type should be number
35-
>x4 : Symbol(x4, Decl(indexSignaturesInferentialTyping.ts, 6, 3))
28+
var x3 = bar({ zero: 0, one: 1 }); // type should be number
29+
>x3 : Symbol(x3, Decl(indexSignaturesInferentialTyping.ts, 5, 3))
3630
>bar : Symbol(bar, Decl(indexSignaturesInferentialTyping.ts, 0, 71))
37-
>zero : Symbol(zero, Decl(indexSignaturesInferentialTyping.ts, 6, 14))
38-
>one : Symbol(one, Decl(indexSignaturesInferentialTyping.ts, 6, 23))
31+
>zero : Symbol(zero, Decl(indexSignaturesInferentialTyping.ts, 5, 14))
32+
>one : Symbol(one, Decl(indexSignaturesInferentialTyping.ts, 5, 23))
3933

tests/baselines/reference/indexSignaturesInferentialTyping.types

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,16 @@ var x1 = foo({ 0: 0, 1: 1 }); // type should be number
2525
>0 : number
2626
>1 : number
2727

28-
var x2 = foo({ zero: 0, one: 1 });
29-
>x2 : {}
30-
>foo({ zero: 0, one: 1 }) : {}
31-
>foo : <T>(items: { [index: number]: T; }) => T
32-
>{ zero: 0, one: 1 } : { zero: number; one: number; }
33-
>zero : number
34-
>0 : number
35-
>one : number
36-
>1 : number
37-
38-
var x3 = bar({ 0: 0, 1: 1 });
39-
>x3 : number
28+
var x2 = bar({ 0: 0, 1: 1 });
29+
>x2 : number
4030
>bar({ 0: 0, 1: 1 }) : number
4131
>bar : <T>(items: { [index: string]: T; }) => T
4232
>{ 0: 0, 1: 1 } : { 0: number; 1: number; }
4333
>0 : number
4434
>1 : number
4535

46-
var x4 = bar({ zero: 0, one: 1 }); // type should be number
47-
>x4 : number
36+
var x3 = bar({ zero: 0, one: 1 }); // type should be number
37+
>x3 : number
4838
>bar({ zero: 0, one: 1 }) : number
4939
>bar : <T>(items: { [index: string]: T; }) => T
5040
>{ zero: 0, one: 1 } : { zero: number; one: number; }

tests/baselines/reference/numericIndexerConstrainsPropertyDeclarations.errors.txt

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerCo
55
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts(36,16): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
66
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts(50,5): error TS2412: Property '2.0' of type 'number' is not assignable to numeric index type 'string'.
77
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts(68,5): error TS2412: Property '2.0' of type 'number' is not assignable to numeric index type 'string'.
8-
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts(78,5): error TS2322: Type '{ 1.0: string; 2.0: number; a: string; b: number; c: () => void; "d": string; "e": number; "3.0": string; "4.0": number; f: any; X: string; foo(): string; }' is not assignable to type '{ [x: number]: string; }'.
9-
Property '2.0' is incompatible with index signature.
10-
Type 'number' is not assignable to type 'string'.
8+
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts(79,5): error TS2322: Type '{ 1.0: string; 2.0: number; a: string; b: number; c: () => void; "d": string; "e": number; "3.0": string; "4.0": number; f: any; X: string; foo(): string; }' is not assignable to type '{ [x: number]: string; }'.
9+
Object literal may only specify known properties, and 'a' does not exist in type '{ [x: number]: string; }'.
1110
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts(88,9): error TS2304: Cannot find name 'Myn'.
1211
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts(90,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
1312
tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerConstrainsPropertyDeclarations.ts(93,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.
@@ -106,11 +105,10 @@ tests/cases/conformance/types/objectTypeLiteral/indexSignatures/numericIndexerCo
106105

107106
// error
108107
var b: { [x: number]: string; } = {
109-
~
110-
!!! error TS2322: Type '{ 1.0: string; 2.0: number; a: string; b: number; c: () => void; "d": string; "e": number; "3.0": string; "4.0": number; f: any; X: string; foo(): string; }' is not assignable to type '{ [x: number]: string; }'.
111-
!!! error TS2322: Property '2.0' is incompatible with index signature.
112-
!!! error TS2322: Type 'number' is not assignable to type 'string'.
113108
a: '',
109+
~~~~~
110+
!!! error TS2322: Type '{ 1.0: string; 2.0: number; a: string; b: number; c: () => void; "d": string; "e": number; "3.0": string; "4.0": number; f: any; X: string; foo(): string; }' is not assignable to type '{ [x: number]: string; }'.
111+
!!! error TS2322: Object literal may only specify known properties, and 'a' does not exist in type '{ [x: number]: string; }'.
114112
b: 1,
115113
c: () => { },
116114
"d": '',

0 commit comments

Comments
 (0)