diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5cd71544272..29f31342850 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1307,6 +1307,17 @@ module ts { buildSymbolDisplay(type.symbol, writer, enclosingDeclaration, SymbolFlags.Value); } + function getIndexerParameterName(type: ObjectType, indexKind: IndexKind, fallbackName: string): string { + var declaration = getIndexDeclarationOfSymbol(type.symbol, indexKind); + if (!declaration) { + // declaration might not be found if indexer was added from the contextual type. + // in this case use fallback name + return fallbackName; + } + Debug.assert(declaration.parameters.length !== 0); + return declarationNameToString(declaration.parameters[0].name); + } + function writeLiteralType(type: ObjectType, flags: TypeFormatFlags) { var resolved = resolveObjectOrUnionTypeMembers(type); if (!resolved.properties.length && !resolved.stringIndexType && !resolved.numberIndexType) { @@ -1359,7 +1370,8 @@ module ts { if (resolved.stringIndexType) { // [x: string]: writePunctuation(writer, SyntaxKind.OpenBracketToken); - writer.writeParameter("x"); + resolved.symbol + writer.writeParameter(getIndexerParameterName(resolved, IndexKind.String, /*fallbackName*/"x")); writePunctuation(writer, SyntaxKind.ColonToken); writeSpace(writer); writeKeyword(writer, SyntaxKind.StringKeyword); @@ -1373,7 +1385,7 @@ module ts { if (resolved.numberIndexType) { // [x: number]: writePunctuation(writer, SyntaxKind.OpenBracketToken); - writer.writeParameter("x"); + writer.writeParameter(getIndexerParameterName(resolved, IndexKind.Number, /*fallbackName*/"x")); writePunctuation(writer, SyntaxKind.ColonToken); writeSpace(writer); writeKeyword(writer, SyntaxKind.NumberKeyword); diff --git a/tests/baselines/reference/arrayLiteralContextualType.types b/tests/baselines/reference/arrayLiteralContextualType.types index 5797999b7df..b6d8377d012 100644 --- a/tests/baselines/reference/arrayLiteralContextualType.types +++ b/tests/baselines/reference/arrayLiteralContextualType.types @@ -32,8 +32,8 @@ function foo(animals: IAnimal[]) { } >IAnimal : IAnimal function bar(animals: { [n: number]: IAnimal }) { } ->bar : (animals: { [x: number]: IAnimal; }) => void ->animals : { [x: number]: IAnimal; } +>bar : (animals: { [n: number]: IAnimal; }) => void +>animals : { [n: number]: IAnimal; } >n : number >IAnimal : IAnimal @@ -53,7 +53,7 @@ foo([ ]); // Legal because of the contextual type IAnimal provided by the parameter bar([ >bar([ new Giraffe(), new Elephant()]) : void ->bar : (animals: { [x: number]: IAnimal; }) => void +>bar : (animals: { [n: number]: IAnimal; }) => void >[ new Giraffe(), new Elephant()] : (Giraffe | Elephant)[] new Giraffe(), @@ -81,6 +81,6 @@ foo(arr); // ok because arr is Array not {}[] bar(arr); // ok because arr is Array not {}[] >bar(arr) : void ->bar : (animals: { [x: number]: IAnimal; }) => void +>bar : (animals: { [n: number]: IAnimal; }) => void >arr : (Giraffe | Elephant)[] diff --git a/tests/baselines/reference/arrayLiterals.types b/tests/baselines/reference/arrayLiterals.types index 62475fa2b4a..b22543d3edf 100644 --- a/tests/baselines/reference/arrayLiterals.types +++ b/tests/baselines/reference/arrayLiterals.types @@ -61,7 +61,7 @@ var classTypeArray: Array; // Should OK, not be a parse error // Contextual type C with numeric index signature makes array literal of EveryType E of type BCT(E,C)[] var context1: { [n: number]: { a: string; b: number; }; } = [{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }]; ->context1 : { [x: number]: { a: string; b: number; }; } +>context1 : { [n: number]: { a: string; b: number; }; } >n : number >a : string >b : number diff --git a/tests/baselines/reference/assignmentCompat1.errors.txt b/tests/baselines/reference/assignmentCompat1.errors.txt index 57ce797f5b2..6734e6fc964 100644 --- a/tests/baselines/reference/assignmentCompat1.errors.txt +++ b/tests/baselines/reference/assignmentCompat1.errors.txt @@ -1,6 +1,6 @@ -tests/cases/compiler/assignmentCompat1.ts(4,1): error TS2322: Type '{ [x: string]: any; }' is not assignable to type '{ one: number; }'. - Property 'one' is missing in type '{ [x: string]: any; }'. -tests/cases/compiler/assignmentCompat1.ts(5,1): error TS2322: Type '{ one: number; }' is not assignable to type '{ [x: string]: any; }'. +tests/cases/compiler/assignmentCompat1.ts(4,1): error TS2322: Type '{ [index: string]: any; }' is not assignable to type '{ one: number; }'. + Property 'one' is missing in type '{ [index: string]: any; }'. +tests/cases/compiler/assignmentCompat1.ts(5,1): error TS2322: Type '{ one: number; }' is not assignable to type '{ [index: string]: any; }'. Index signature is missing in type '{ one: number; }'. @@ -10,9 +10,9 @@ tests/cases/compiler/assignmentCompat1.ts(5,1): error TS2322: Type '{ one: numbe x = y; ~ -!!! error TS2322: Type '{ [x: string]: any; }' is not assignable to type '{ one: number; }'. -!!! error TS2322: Property 'one' is missing in type '{ [x: string]: any; }'. +!!! error TS2322: Type '{ [index: string]: any; }' is not assignable to type '{ one: number; }'. +!!! error TS2322: Property 'one' is missing in type '{ [index: string]: any; }'. y = x; ~ -!!! error TS2322: Type '{ one: number; }' is not assignable to type '{ [x: string]: any; }'. +!!! error TS2322: Type '{ one: number; }' is not assignable to type '{ [index: string]: any; }'. !!! error TS2322: Index signature is missing in type '{ one: number; }'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability35.errors.txt b/tests/baselines/reference/assignmentCompatability35.errors.txt index faad78c10fc..2073b861f52 100644 --- a/tests/baselines/reference/assignmentCompatability35.errors.txt +++ b/tests/baselines/reference/assignmentCompatability35.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/assignmentCompatability35.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [x: number]: number; }'. +tests/cases/compiler/assignmentCompatability35.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [index: number]: number; }'. Index signature is missing in type 'interfaceWithPublicAndOptional'. @@ -13,5 +13,5 @@ tests/cases/compiler/assignmentCompatability35.ts(9,1): error TS2322: Type 'inte } __test2__.__val__aa = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [x: number]: number; }'. +!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [index: number]: number; }'. !!! error TS2322: Index signature is missing in type 'interfaceWithPublicAndOptional'. \ No newline at end of file diff --git a/tests/baselines/reference/assignmentCompatability36.errors.txt b/tests/baselines/reference/assignmentCompatability36.errors.txt index d8c43a3f363..591dc072fab 100644 --- a/tests/baselines/reference/assignmentCompatability36.errors.txt +++ b/tests/baselines/reference/assignmentCompatability36.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/assignmentCompatability36.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [x: string]: any; }'. +tests/cases/compiler/assignmentCompatability36.ts(9,1): error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [index: string]: any; }'. Index signature is missing in type 'interfaceWithPublicAndOptional'. @@ -13,5 +13,5 @@ tests/cases/compiler/assignmentCompatability36.ts(9,1): error TS2322: Type 'inte } __test2__.__val__aa = __test1__.__val__obj4 ~~~~~~~~~~~~~~~~~~~ -!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [x: string]: any; }'. +!!! error TS2322: Type 'interfaceWithPublicAndOptional' is not assignable to type '{ [index: string]: any; }'. !!! error TS2322: Index signature is missing in type 'interfaceWithPublicAndOptional'. \ No newline at end of file diff --git a/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.errors.txt b/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.errors.txt index a951a2b1a66..eb5020e97f9 100644 --- a/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.errors.txt +++ b/tests/baselines/reference/augmentedTypeAssignmentCompatIndexSignature.errors.txt @@ -1,6 +1,6 @@ -tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(15,5): error TS2322: Type '{}' is not assignable to type '{ [x: number]: Foo; }'. +tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(15,5): error TS2322: Type '{}' is not assignable to type '{ [n: number]: Foo; }'. Index signature is missing in type '{}'. -tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(19,5): error TS2322: Type '() => void' is not assignable to type '{ [x: number]: Bar; }'. +tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignature.ts(19,5): error TS2322: Type '() => void' is not assignable to type '{ [n: number]: Bar; }'. Index signature is missing in type '() => void'. @@ -21,14 +21,14 @@ tests/cases/conformance/types/members/augmentedTypeAssignmentCompatIndexSignatur var v1: { ~~ -!!! error TS2322: Type '{}' is not assignable to type '{ [x: number]: Foo; }'. +!!! error TS2322: Type '{}' is not assignable to type '{ [n: number]: Foo; }'. !!! error TS2322: Index signature is missing in type '{}'. [n: number]: Foo } = o; // Should be allowed var v2: { ~~ -!!! error TS2322: Type '() => void' is not assignable to type '{ [x: number]: Bar; }'. +!!! error TS2322: Type '() => void' is not assignable to type '{ [n: number]: Bar; }'. !!! error TS2322: Index signature is missing in type '() => void'. [n: number]: Bar } = f; // Should be allowed \ No newline at end of file diff --git a/tests/baselines/reference/badOverloadError.types b/tests/baselines/reference/badOverloadError.types index ba9d6e76c1c..b8ae583a73c 100644 --- a/tests/baselines/reference/badOverloadError.types +++ b/tests/baselines/reference/badOverloadError.types @@ -3,8 +3,8 @@ function method() { >method : () => void var dictionary = <{ [index: string]: string; }>{}; ->dictionary : { [x: string]: string; } -><{ [index: string]: string; }>{} : { [x: string]: string; } +>dictionary : { [index: string]: string; } +><{ [index: string]: string; }>{} : { [index: string]: string; } >index : string >{} : { [x: string]: undefined; } } diff --git a/tests/baselines/reference/bestCommonTypeWithContextualTyping.types b/tests/baselines/reference/bestCommonTypeWithContextualTyping.types index 937339d8cbf..606cbae9231 100644 --- a/tests/baselines/reference/bestCommonTypeWithContextualTyping.types +++ b/tests/baselines/reference/bestCommonTypeWithContextualTyping.types @@ -33,7 +33,7 @@ var arr: Contextual[] = [e]; // Ellement[] >e : Ellement var obj: { [s: string]: Contextual } = { s: e }; // { s: Ellement; [s: string]: Ellement } ->obj : { [x: string]: Contextual; } +>obj : { [s: string]: Contextual; } >s : string >Contextual : Contextual >{ s: e } : { [x: string]: Ellement; s: Ellement; } diff --git a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.errors.txt b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.errors.txt index 5bb7772e75f..fe608b14379 100644 --- a/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.errors.txt +++ b/tests/baselines/reference/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.errors.txt @@ -1,67 +1,67 @@ -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(26,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(27,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(28,12): error TS2365: Operator '<' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(29,12): error TS2365: Operator '<' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(31,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(32,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(33,12): error TS2365: Operator '<' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(34,12): error TS2365: Operator '<' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(37,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(38,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(39,12): error TS2365: Operator '>' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(40,12): error TS2365: Operator '>' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(42,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(43,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(44,12): error TS2365: Operator '>' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(45,12): error TS2365: Operator '>' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(48,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(49,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(50,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(51,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(53,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(54,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(55,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(56,12): error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(59,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(60,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(61,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(62,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(64,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(65,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(66,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(67,12): error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(70,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(71,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(72,12): error TS2365: Operator '==' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(73,12): error TS2365: Operator '==' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(75,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(76,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(77,12): error TS2365: Operator '==' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(78,12): error TS2365: Operator '==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(81,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(82,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(83,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(84,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(86,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(87,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(88,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(89,12): error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(92,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(93,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(94,12): error TS2365: Operator '===' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(95,12): error TS2365: Operator '===' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(97,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(98,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(99,12): error TS2365: Operator '===' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(100,12): error TS2365: Operator '===' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(103,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(104,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(105,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(106,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(108,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(109,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(110,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. -tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(111,12): error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(26,12): error TS2365: Operator '<' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(27,12): error TS2365: Operator '<' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(28,12): error TS2365: Operator '<' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(29,12): error TS2365: Operator '<' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(31,12): error TS2365: Operator '<' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(32,12): error TS2365: Operator '<' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(33,12): error TS2365: Operator '<' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(34,12): error TS2365: Operator '<' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(37,12): error TS2365: Operator '>' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(38,12): error TS2365: Operator '>' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(39,12): error TS2365: Operator '>' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(40,12): error TS2365: Operator '>' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(42,12): error TS2365: Operator '>' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(43,12): error TS2365: Operator '>' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(44,12): error TS2365: Operator '>' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(45,12): error TS2365: Operator '>' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(48,12): error TS2365: Operator '<=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(49,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(50,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(51,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(53,12): error TS2365: Operator '<=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(54,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(55,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(56,12): error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(59,12): error TS2365: Operator '>=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(60,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(61,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(62,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(64,12): error TS2365: Operator '>=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(65,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(66,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(67,12): error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(70,12): error TS2365: Operator '==' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(71,12): error TS2365: Operator '==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(72,12): error TS2365: Operator '==' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(73,12): error TS2365: Operator '==' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(75,12): error TS2365: Operator '==' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(76,12): error TS2365: Operator '==' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(77,12): error TS2365: Operator '==' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(78,12): error TS2365: Operator '==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(81,12): error TS2365: Operator '!=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(82,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(83,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(84,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(86,12): error TS2365: Operator '!=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(87,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(88,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(89,12): error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(92,12): error TS2365: Operator '===' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(93,12): error TS2365: Operator '===' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(94,12): error TS2365: Operator '===' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(95,12): error TS2365: Operator '===' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(97,12): error TS2365: Operator '===' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(98,12): error TS2365: Operator '===' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(99,12): error TS2365: Operator '===' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(100,12): error TS2365: Operator '===' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(103,12): error TS2365: Operator '!==' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(104,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(105,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(106,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(108,12): error TS2365: Operator '!==' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(109,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(110,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. +tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts(111,12): error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. ==== tests/cases/conformance/expressions/binaryOperators/comparisonOperator/comparisonOperatorWithNoRelationshipObjectsOnIndexSignature.ts (64 errors) ==== @@ -92,215 +92,215 @@ tests/cases/conformance/expressions/binaryOperators/comparisonOperator/compariso // operator < var r1a1 = a1 < b1; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r1a2 = a2 < b2; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r1a3 = a3 < b3; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r1a4 = a4 < b4; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r1b1 = b1 < a1; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r1b2 = b2 < a2; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r1b3 = b3 < a3; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r1b4 = b4 < a4; ~~~~~~~ -!!! error TS2365: Operator '<' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '<' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator > var r2a1 = a1 > b1; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r2a2 = a2 > b2; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r2a3 = a3 > b3; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r2a4 = a4 > b4; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r2b1 = b1 > a1; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r2b2 = b2 > a2; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r2b3 = b3 > a3; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r2b4 = b4 > a4; ~~~~~~~ -!!! error TS2365: Operator '>' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '>' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator <= var r3a1 = a1 <= b1; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r3a2 = a2 <= b2; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r3a3 = a3 <= b3; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r3a4 = a4 <= b4; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r3b1 = b1 <= a1; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r3b2 = b2 <= a2; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r3b3 = b3 <= a3; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r3b4 = b4 <= a4; ~~~~~~~~ -!!! error TS2365: Operator '<=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '<=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator >= var r4a1 = a1 >= b1; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r4a2 = a2 >= b2; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r4a3 = a3 >= b3; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r4a4 = a4 >= b4; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r4b1 = b1 >= a1; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r4b2 = b2 >= a2; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r4b3 = b3 >= a3; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r4b4 = b4 >= a4; ~~~~~~~~ -!!! error TS2365: Operator '>=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '>=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator == var r5a1 = a1 == b1; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r5a2 = a2 == b2; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r5a3 = a3 == b3; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r5a4 = a4 == b4; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r5b1 = b1 == a1; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r5b2 = b2 == a2; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r5b3 = b3 == a3; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r5b4 = b4 == a4; ~~~~~~~~ -!!! error TS2365: Operator '==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator != var r6a1 = a1 != b1; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r6a2 = a2 != b2; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r6a3 = a3 != b3; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r6a4 = a4 != b4; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r6b1 = b1 != a1; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r6b2 = b2 != a2; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r6b3 = b3 != a3; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r6b4 = b4 != a4; ~~~~~~~~ -!!! error TS2365: Operator '!=' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '!=' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator === var r7a1 = a1 === b1; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r7a2 = a2 === b2; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r7a3 = a3 === b3; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r7a4 = a4 === b4; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r7b1 = b1 === a1; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r7b2 = b2 === a2; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r7b3 = b3 === a3; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r7b4 = b4 === a4; ~~~~~~~~~ -!!! error TS2365: Operator '===' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. +!!! error TS2365: Operator '===' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. // operator !== var r8a1 = a1 !== b1; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: string; }' and '{ [x: string]: number; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [a: string]: string; }' and '{ [b: string]: number; }'. var r8a2 = a2 !== b2; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: string]: C; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: string]: C; }'. var r8a3 = a3 !== b3; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: Base; }' and '{ [x: number]: C; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: Base; }' and '{ [index: number]: C; }'. var r8a4 = a4 !== b4; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: Derived; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: Derived; }' and '{ [index: string]: Base; }'. var r8b1 = b1 !== a1; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: number; }' and '{ [x: string]: string; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [b: string]: number; }' and '{ [a: string]: string; }'. var r8b2 = b2 !== a2; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: C; }' and '{ [x: string]: Base; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: C; }' and '{ [index: string]: Base; }'. var r8b3 = b3 !== a3; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: number]: C; }' and '{ [x: number]: Base; }'. +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: number]: C; }' and '{ [index: number]: Base; }'. var r8b4 = b4 !== a4; ~~~~~~~~~ -!!! error TS2365: Operator '!==' cannot be applied to types '{ [x: string]: Base; }' and '{ [x: number]: Derived; }'. \ No newline at end of file +!!! error TS2365: Operator '!==' cannot be applied to types '{ [index: string]: Base; }' and '{ [index: number]: Derived; }'. \ No newline at end of file diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types index 755df0be1dc..657fdccbda0 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types @@ -15,38 +15,38 @@ class Derived extends Base { } var a1: { [a: string]: string }; ->a1 : { [x: string]: string; } +>a1 : { [a: string]: string; } >a : string var b1: { [b: string]: string }; ->b1 : { [x: string]: string; } +>b1 : { [b: string]: string; } >b : string var a2: { [index: string]: Base }; ->a2 : { [x: string]: Base; } +>a2 : { [index: string]: Base; } >index : string >Base : Base var b2: { [index: string]: Derived }; ->b2 : { [x: string]: Derived; } +>b2 : { [index: string]: Derived; } >index : string >Derived : Derived var a3: { [index: number]: string }; ->a3 : { [x: number]: string; } +>a3 : { [index: number]: string; } >index : number var b3: { [index: number]: string }; ->b3 : { [x: number]: string; } +>b3 : { [index: number]: string; } >index : number var a4: { [index: number]: Base }; ->a4 : { [x: number]: Base; } +>a4 : { [index: number]: Base; } >index : number >Base : Base var b4: { [index: string]: Derived }; ->b4 : { [x: string]: Derived; } +>b4 : { [index: string]: Derived; } >index : string >Derived : Derived @@ -54,391 +54,391 @@ var b4: { [index: string]: Derived }; var r1a1 = a1 < b1; >r1a1 : boolean >a1 < b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r1a1 = a2 < b2; >r1a1 : boolean >a2 < b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r1a1 = a3 < b3; >r1a1 : boolean >a3 < b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r1a1 = a4 < b4; >r1a1 : boolean >a4 < b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r1b1 = b1 < a1; >r1b1 : boolean >b1 < a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r1b1 = b2 < a2; >r1b1 : boolean >b2 < a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r1b1 = b3 < a3; >r1b1 : boolean >b3 < a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r1b1 = b4 < a4; >r1b1 : boolean >b4 < a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator > var r2a1 = a1 > b1; >r2a1 : boolean >a1 > b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r2a1 = a2 > b2; >r2a1 : boolean >a2 > b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r2a1 = a3 > b3; >r2a1 : boolean >a3 > b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r2a1 = a4 > b4; >r2a1 : boolean >a4 > b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r2b1 = b1 > a1; >r2b1 : boolean >b1 > a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r2b1 = b2 > a2; >r2b1 : boolean >b2 > a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r2b1 = b3 > a3; >r2b1 : boolean >b3 > a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r2b1 = b4 > a4; >r2b1 : boolean >b4 > a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator <= var r3a1 = a1 <= b1; >r3a1 : boolean >a1 <= b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r3a1 = a2 <= b2; >r3a1 : boolean >a2 <= b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r3a1 = a3 <= b3; >r3a1 : boolean >a3 <= b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r3a1 = a4 <= b4; >r3a1 : boolean >a4 <= b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r3b1 = b1 <= a1; >r3b1 : boolean >b1 <= a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r3b1 = b2 <= a2; >r3b1 : boolean >b2 <= a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r3b1 = b3 <= a3; >r3b1 : boolean >b3 <= a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r3b1 = b4 <= a4; >r3b1 : boolean >b4 <= a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator >= var r4a1 = a1 >= b1; >r4a1 : boolean >a1 >= b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r4a1 = a2 >= b2; >r4a1 : boolean >a2 >= b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r4a1 = a3 >= b3; >r4a1 : boolean >a3 >= b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r4a1 = a4 >= b4; >r4a1 : boolean >a4 >= b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r4b1 = b1 >= a1; >r4b1 : boolean >b1 >= a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r4b1 = b2 >= a2; >r4b1 : boolean >b2 >= a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r4b1 = b3 >= a3; >r4b1 : boolean >b3 >= a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r4b1 = b4 >= a4; >r4b1 : boolean >b4 >= a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator == var r5a1 = a1 == b1; >r5a1 : boolean >a1 == b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r5a1 = a2 == b2; >r5a1 : boolean >a2 == b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r5a1 = a3 == b3; >r5a1 : boolean >a3 == b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r5a1 = a4 == b4; >r5a1 : boolean >a4 == b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r5b1 = b1 == a1; >r5b1 : boolean >b1 == a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r5b1 = b2 == a2; >r5b1 : boolean >b2 == a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r5b1 = b3 == a3; >r5b1 : boolean >b3 == a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r5b1 = b4 == a4; >r5b1 : boolean >b4 == a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator != var r6a1 = a1 != b1; >r6a1 : boolean >a1 != b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r6a1 = a2 != b2; >r6a1 : boolean >a2 != b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r6a1 = a3 != b3; >r6a1 : boolean >a3 != b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r6a1 = a4 != b4; >r6a1 : boolean >a4 != b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r6b1 = b1 != a1; >r6b1 : boolean >b1 != a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r6b1 = b2 != a2; >r6b1 : boolean >b2 != a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r6b1 = b3 != a3; >r6b1 : boolean >b3 != a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r6b1 = b4 != a4; >r6b1 : boolean >b4 != a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator === var r7a1 = a1 === b1; >r7a1 : boolean >a1 === b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r7a1 = a2 === b2; >r7a1 : boolean >a2 === b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r7a1 = a3 === b3; >r7a1 : boolean >a3 === b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r7a1 = a4 === b4; >r7a1 : boolean >a4 === b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r7b1 = b1 === a1; >r7b1 : boolean >b1 === a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r7b1 = b2 === a2; >r7b1 : boolean >b2 === a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r7b1 = b3 === a3; >r7b1 : boolean >b3 === a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r7b1 = b4 === a4; >r7b1 : boolean >b4 === a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } // operator !== var r8a1 = a1 !== b1; >r8a1 : boolean >a1 !== b1 : boolean ->a1 : { [x: string]: string; } ->b1 : { [x: string]: string; } +>a1 : { [a: string]: string; } +>b1 : { [b: string]: string; } var r8a1 = a2 !== b2; >r8a1 : boolean >a2 !== b2 : boolean ->a2 : { [x: string]: Base; } ->b2 : { [x: string]: Derived; } +>a2 : { [index: string]: Base; } +>b2 : { [index: string]: Derived; } var r8a1 = a3 !== b3; >r8a1 : boolean >a3 !== b3 : boolean ->a3 : { [x: number]: string; } ->b3 : { [x: number]: string; } +>a3 : { [index: number]: string; } +>b3 : { [index: number]: string; } var r8a1 = a4 !== b4; >r8a1 : boolean >a4 !== b4 : boolean ->a4 : { [x: number]: Base; } ->b4 : { [x: string]: Derived; } +>a4 : { [index: number]: Base; } +>b4 : { [index: string]: Derived; } var r8b1 = b1 !== a1; >r8b1 : boolean >b1 !== a1 : boolean ->b1 : { [x: string]: string; } ->a1 : { [x: string]: string; } +>b1 : { [b: string]: string; } +>a1 : { [a: string]: string; } var r8b1 = b2 !== a2; >r8b1 : boolean >b2 !== a2 : boolean ->b2 : { [x: string]: Derived; } ->a2 : { [x: string]: Base; } +>b2 : { [index: string]: Derived; } +>a2 : { [index: string]: Base; } var r8b1 = b3 !== a3; >r8b1 : boolean >b3 !== a3 : boolean ->b3 : { [x: number]: string; } ->a3 : { [x: number]: string; } +>b3 : { [index: number]: string; } +>a3 : { [index: number]: string; } var r8b1 = b4 !== a4; >r8b1 : boolean >b4 !== a4 : boolean ->b4 : { [x: string]: Derived; } ->a4 : { [x: number]: Base; } +>b4 : { [index: string]: Derived; } +>a4 : { [index: number]: Base; } diff --git a/tests/baselines/reference/contextualTypeAny.types b/tests/baselines/reference/contextualTypeAny.types index c95bfd70ecf..b21c3748eda 100644 --- a/tests/baselines/reference/contextualTypeAny.types +++ b/tests/baselines/reference/contextualTypeAny.types @@ -3,7 +3,7 @@ var x: any; >x : any var obj: { [s: string]: number } = { p: "", q: x }; ->obj : { [x: string]: number; } +>obj : { [s: string]: number; } >s : string >{ p: "", q: x } : { [x: string]: any; p: string; q: any; } >p : string diff --git a/tests/baselines/reference/contextualTypingOfObjectLiterals.errors.txt b/tests/baselines/reference/contextualTypingOfObjectLiterals.errors.txt index b388d1b0e4a..5d41b312f72 100644 --- a/tests/baselines/reference/contextualTypingOfObjectLiterals.errors.txt +++ b/tests/baselines/reference/contextualTypingOfObjectLiterals.errors.txt @@ -1,6 +1,6 @@ tests/cases/compiler/contextualTypingOfObjectLiterals.ts(4,1): error TS2322: Type '{ x: string; }' is not assignable to type '{ [x: string]: string; }'. Index signature is missing in type '{ x: string; }'. -tests/cases/compiler/contextualTypingOfObjectLiterals.ts(10,3): error TS2345: Argument of type '{ x: string; }' is not assignable to parameter of type '{ [x: string]: string; }'. +tests/cases/compiler/contextualTypingOfObjectLiterals.ts(10,3): error TS2345: Argument of type '{ x: string; }' is not assignable to parameter of type '{ [s: string]: string; }'. ==== tests/cases/compiler/contextualTypingOfObjectLiterals.ts (2 errors) ==== @@ -18,4 +18,4 @@ tests/cases/compiler/contextualTypingOfObjectLiterals.ts(10,3): error TS2345: Ar f(obj1); // Ok f(obj2); // Error - indexer doesn't match ~~~~ -!!! error TS2345: Argument of type '{ x: string; }' is not assignable to parameter of type '{ [x: string]: string; }'. \ No newline at end of file +!!! error TS2345: Argument of type '{ x: string; }' is not assignable to parameter of type '{ [s: string]: string; }'. \ No newline at end of file diff --git a/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types b/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types index 432ee1506fa..30d14b77286 100644 --- a/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types +++ b/tests/baselines/reference/declFileTypeAnnotationTypeLiteral.types @@ -17,7 +17,7 @@ module m { // Object literal with everything var x: { ->x : { (a: number): c; (a: string): g; new (a: number): c; new (a: string): m.c; [x: string]: c; [x: number]: c; a: c; b: g; m1(): g; m2(a: string, b?: number, ...c: c[]): string; } +>x : { (a: number): c; (a: string): g; new (a: number): c; new (a: string): m.c; [n: string]: c; [n: number]: c; a: c; b: g; m1(): g; m2(a: string, b?: number, ...c: c[]): string; } // Call signatures (a: number): c; diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types index 991d324e822..6525f201f5b 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types @@ -22,7 +22,7 @@ var moduleATyped: IHasVisualizationModel = moduleA; >moduleA : typeof moduleA var moduleMap: { [key: string]: IHasVisualizationModel } = { ->moduleMap : { [x: string]: IHasVisualizationModel; } +>moduleMap : { [key: string]: IHasVisualizationModel; } >key : string >IHasVisualizationModel : IHasVisualizationModel >{ "moduleA": moduleA, "moduleB": moduleB} : { [x: string]: typeof moduleA; "moduleA": typeof moduleA; "moduleB": typeof moduleB; } @@ -42,7 +42,7 @@ var visModel = new moduleMap[moduleName].VisualizationModel(); >new moduleMap[moduleName].VisualizationModel() : Backbone.Model >moduleMap[moduleName].VisualizationModel : typeof Backbone.Model >moduleMap[moduleName] : IHasVisualizationModel ->moduleMap : { [x: string]: IHasVisualizationModel; } +>moduleMap : { [key: string]: IHasVisualizationModel; } >moduleName : string >VisualizationModel : typeof Backbone.Model diff --git a/tests/baselines/reference/generatedContextualTyping.types b/tests/baselines/reference/generatedContextualTyping.types index 79787f6d994..423c5d6653b 100644 --- a/tests/baselines/reference/generatedContextualTyping.types +++ b/tests/baselines/reference/generatedContextualTyping.types @@ -97,7 +97,7 @@ var x8: Array = [d1, d2]; >d2 : Derived2 var x9: { [n: number]: Base; } = [d1, d2]; ->x9 : { [x: number]: Base; } +>x9 : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -210,7 +210,7 @@ class x20 { member: Array = [d1, d2] } class x21 { member: { [n: number]: Base; } = [d1, d2] } >x21 : x21 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -326,7 +326,7 @@ class x32 { private member: Array = [d1, d2] } class x33 { private member: { [n: number]: Base; } = [d1, d2] } >x33 : x33 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -442,7 +442,7 @@ class x44 { public member: Array = [d1, d2] } class x45 { public member: { [n: number]: Base; } = [d1, d2] } >x45 : x45 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -558,7 +558,7 @@ class x56 { static member: Array = [d1, d2] } class x57 { static member: { [n: number]: Base; } = [d1, d2] } >x57 : x57 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -674,7 +674,7 @@ class x68 { private static member: Array = [d1, d2] } class x69 { private static member: { [n: number]: Base; } = [d1, d2] } >x69 : x69 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -790,7 +790,7 @@ class x80 { public static member: Array = [d1, d2] } class x81 { public static member: { [n: number]: Base; } = [d1, d2] } >x81 : x81 ->member : { [x: number]: Base; } +>member : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -906,7 +906,7 @@ class x92 { constructor(parm: Array = [d1, d2]) { } } class x93 { constructor(parm: { [n: number]: Base; } = [d1, d2]) { } } >x93 : x93 ->parm : { [x: number]: Base; } +>parm : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1022,7 +1022,7 @@ class x104 { constructor(public parm: Array = [d1, d2]) { } } class x105 { constructor(public parm: { [n: number]: Base; } = [d1, d2]) { } } >x105 : x105 ->parm : { [x: number]: Base; } +>parm : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1138,7 +1138,7 @@ class x116 { constructor(private parm: Array = [d1, d2]) { } } class x117 { constructor(private parm: { [n: number]: Base; } = [d1, d2]) { } } >x117 : x117 ->parm : { [x: number]: Base; } +>parm : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1253,8 +1253,8 @@ function x128(parm: Array = [d1, d2]) { } >d2 : Derived2 function x129(parm: { [n: number]: Base; } = [d1, d2]) { } ->x129 : (parm?: { [x: number]: Base; }) => void ->parm : { [x: number]: Base; } +>x129 : (parm?: { [n: number]: Base; }) => void +>parm : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1361,7 +1361,7 @@ function x140(): Array { return [d1, d2]; } >d2 : Derived2 function x141(): { [n: number]: Base; } { return [d1, d2]; } ->x141 : () => { [x: number]: Base; } +>x141 : () => { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1497,7 +1497,7 @@ function x152(): Array { return [d1, d2]; return [d1, d2]; } >d2 : Derived2 function x153(): { [n: number]: Base; } { return [d1, d2]; return [d1, d2]; } ->x153 : () => { [x: number]: Base; } +>x153 : () => { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1628,7 +1628,7 @@ var x164: () => Array = () => { return [d1, d2]; }; >d2 : Derived2 var x165: () => { [n: number]: Base; } = () => { return [d1, d2]; }; ->x165 : () => { [x: number]: Base; } +>x165 : () => { [n: number]: Base; } >n : number >Base : Base >() => { return [d1, d2]; } : () => (Derived1 | Derived2)[] @@ -1744,7 +1744,7 @@ var x176: () => Array = function() { return [d1, d2]; }; >d2 : Derived2 var x177: () => { [n: number]: Base; } = function() { return [d1, d2]; }; ->x177 : () => { [x: number]: Base; } +>x177 : () => { [n: number]: Base; } >n : number >Base : Base >function() { return [d1, d2]; } : () => (Derived1 | Derived2)[] @@ -1861,7 +1861,7 @@ module x188 { var t: Array = [d1, d2]; } module x189 { var t: { [n: number]: Base; } = [d1, d2]; } >x189 : typeof x189 ->t : { [x: number]: Base; } +>t : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -1977,7 +1977,7 @@ module x200 { export var t: Array = [d1, d2]; } module x201 { export var t: { [n: number]: Base; } = [d1, d2]; } >x201 : typeof x201 ->t : { [x: number]: Base; } +>t : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -2074,8 +2074,8 @@ var x212 = >[d1, d2]; >d2 : Derived2 var x213 = <{ [n: number]: Base; }>[d1, d2]; ->x213 : { [x: number]: Base; } -><{ [n: number]: Base; }>[d1, d2] : { [x: number]: Base; } +>x213 : { [n: number]: Base; } +><{ [n: number]: Base; }>[d1, d2] : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] : (Derived1 | Derived2)[] @@ -2180,10 +2180,10 @@ var x222 = (>undefined) || [d1, d2]; >d2 : Derived2 var x223 = (<{ [n: number]: Base; }>undefined) || [d1, d2]; ->x223 : { [x: number]: Base; } ->(<{ [n: number]: Base; }>undefined) || [d1, d2] : { [x: number]: Base; } ->(<{ [n: number]: Base; }>undefined) : { [x: number]: Base; } -><{ [n: number]: Base; }>undefined : { [x: number]: Base; } +>x223 : { [n: number]: Base; } +>(<{ [n: number]: Base; }>undefined) || [d1, d2] : { [n: number]: Base; } +>(<{ [n: number]: Base; }>undefined) : { [n: number]: Base; } +><{ [n: number]: Base; }>undefined : { [n: number]: Base; } >n : number >Base : Base >undefined : undefined @@ -2287,11 +2287,11 @@ var x232: Array; x232 = [d1, d2]; >d2 : Derived2 var x233: { [n: number]: Base; }; x233 = [d1, d2]; ->x233 : { [x: number]: Base; } +>x233 : { [n: number]: Base; } >n : number >Base : Base >x233 = [d1, d2] : (Derived1 | Derived2)[] ->x233 : { [x: number]: Base; } +>x233 : { [n: number]: Base; } >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -2423,8 +2423,8 @@ var x244: { n: Array; } = { n: [d1, d2] }; >d2 : Derived2 var x245: { n: { [n: number]: Base; }; } = { n: [d1, d2] }; ->x245 : { n: { [x: number]: Base; }; } ->n : { [x: number]: Base; } +>x245 : { n: { [n: number]: Base; }; } +>n : { [n: number]: Base; } >n : number >Base : Base >{ n: [d1, d2] } : { n: (Derived1 | Derived2)[]; } @@ -2519,7 +2519,7 @@ var x256: Array[] = [[d1, d2]]; >d2 : Derived2 var x257: { [n: number]: Base; }[] = [[d1, d2]]; ->x257 : { [x: number]: Base; }[] +>x257 : { [n: number]: Base; }[] >n : number >Base : Base >[[d1, d2]] : (Derived1 | Derived2)[][] @@ -2613,7 +2613,7 @@ var x266: Array = [d1, d2] || undefined; >undefined : undefined var x267: { [n: number]: Base; } = [d1, d2] || undefined; ->x267 : { [x: number]: Base; } +>x267 : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] || undefined : (Derived1 | Derived2)[] @@ -2696,7 +2696,7 @@ var x274: Array = undefined || [d1, d2]; >d2 : Derived2 var x275: { [n: number]: Base; } = undefined || [d1, d2]; ->x275 : { [x: number]: Base; } +>x275 : { [n: number]: Base; } >n : number >Base : Base >undefined || [d1, d2] : (Derived1 | Derived2)[] @@ -2797,7 +2797,7 @@ var x282: Array = [d1, d2] || [d1, d2]; >d2 : Derived2 var x283: { [n: number]: Base; } = [d1, d2] || [d1, d2]; ->x283 : { [x: number]: Base; } +>x283 : { [n: number]: Base; } >n : number >Base : Base >[d1, d2] || [d1, d2] : (Derived1 | Derived2)[] @@ -2930,7 +2930,7 @@ var x292: Array = true ? [d1, d2] : [d1, d2]; >d2 : Derived2 var x293: { [n: number]: Base; } = true ? [d1, d2] : [d1, d2]; ->x293 : { [x: number]: Base; } +>x293 : { [n: number]: Base; } >n : number >Base : Base >true ? [d1, d2] : [d1, d2] : (Derived1 | Derived2)[] @@ -3073,7 +3073,7 @@ var x304: Array = true ? undefined : [d1, d2]; >d2 : Derived2 var x305: { [n: number]: Base; } = true ? undefined : [d1, d2]; ->x305 : { [x: number]: Base; } +>x305 : { [n: number]: Base; } >n : number >Base : Base >true ? undefined : [d1, d2] : (Derived1 | Derived2)[] @@ -3201,7 +3201,7 @@ var x316: Array = true ? [d1, d2] : undefined; >undefined : undefined var x317: { [n: number]: Base; } = true ? [d1, d2] : undefined; ->x317 : { [x: number]: Base; } +>x317 : { [n: number]: Base; } >n : number >Base : Base >true ? [d1, d2] : undefined : (Derived1 | Derived2)[] @@ -3337,12 +3337,12 @@ function x328(n: Array) { }; x328([d1, d2]); >d2 : Derived2 function x329(n: { [n: number]: Base; }) { }; x329([d1, d2]); ->x329 : (n: { [x: number]: Base; }) => void ->n : { [x: number]: Base; } +>x329 : (n: { [n: number]: Base; }) => void +>n : { [n: number]: Base; } >n : number >Base : Base >x329([d1, d2]) : void ->x329 : (n: { [x: number]: Base; }) => void +>x329 : (n: { [n: number]: Base; }) => void >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -3493,14 +3493,14 @@ var x340 = (n: Array) => n; x340([d1, d2]); >d2 : Derived2 var x341 = (n: { [n: number]: Base; }) => n; x341([d1, d2]); ->x341 : (n: { [x: number]: Base; }) => { [x: number]: Base; } ->(n: { [n: number]: Base; }) => n : (n: { [x: number]: Base; }) => { [x: number]: Base; } ->n : { [x: number]: Base; } +>x341 : (n: { [n: number]: Base; }) => { [n: number]: Base; } +>(n: { [n: number]: Base; }) => n : (n: { [n: number]: Base; }) => { [n: number]: Base; } +>n : { [n: number]: Base; } >n : number >Base : Base ->n : { [x: number]: Base; } ->x341([d1, d2]) : { [x: number]: Base; } ->x341 : (n: { [x: number]: Base; }) => { [x: number]: Base; } +>n : { [n: number]: Base; } +>x341([d1, d2]) : { [n: number]: Base; } +>x341 : (n: { [n: number]: Base; }) => { [n: number]: Base; } >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 @@ -3649,13 +3649,13 @@ var x352 = function(n: Array) { }; x352([d1, d2]); >d2 : Derived2 var x353 = function(n: { [n: number]: Base; }) { }; x353([d1, d2]); ->x353 : (n: { [x: number]: Base; }) => void ->function(n: { [n: number]: Base; }) { } : (n: { [x: number]: Base; }) => void ->n : { [x: number]: Base; } +>x353 : (n: { [n: number]: Base; }) => void +>function(n: { [n: number]: Base; }) { } : (n: { [n: number]: Base; }) => void +>n : { [n: number]: Base; } >n : number >Base : Base >x353([d1, d2]) : void ->x353 : (n: { [x: number]: Base; }) => void +>x353 : (n: { [n: number]: Base; }) => void >[d1, d2] : (Derived1 | Derived2)[] >d1 : Derived1 >d2 : Derived2 diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty2.types b/tests/baselines/reference/genericBaseClassLiteralProperty2.types index 9caa45b8b8f..2ade6437fe7 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty2.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty2.types @@ -8,16 +8,16 @@ class BaseCollection2 { >CollectionItem2 : CollectionItem2 _itemsByKey: { [key: string]: TItem; }; ->_itemsByKey : { [x: string]: TItem; } +>_itemsByKey : { [key: string]: TItem; } >key : string >TItem : TItem constructor() { this._itemsByKey = {}; >this._itemsByKey = {} : { [x: string]: undefined; } ->this._itemsByKey : { [x: string]: TItem; } +>this._itemsByKey : { [key: string]: TItem; } >this : BaseCollection2 ->_itemsByKey : { [x: string]: TItem; } +>_itemsByKey : { [key: string]: TItem; } >{} : { [x: string]: undefined; } } } @@ -35,9 +35,9 @@ class DataView2 extends BaseCollection2 { this._itemsByKey['dummy'] = item; >this._itemsByKey['dummy'] = item : CollectionItem2 >this._itemsByKey['dummy'] : CollectionItem2 ->this._itemsByKey : { [x: string]: CollectionItem2; } +>this._itemsByKey : { [key: string]: CollectionItem2; } >this : DataView2 ->_itemsByKey : { [x: string]: CollectionItem2; } +>_itemsByKey : { [key: string]: CollectionItem2; } >item : CollectionItem2 } } diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types index f0cab6e7467..ef42c1c6029 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType1.types @@ -4,19 +4,19 @@ class LazyArray { >T : T private objects = <{ [objectId: string]: T; }>{}; ->objects : { [x: string]: T; } -><{ [objectId: string]: T; }>{} : { [x: string]: T; } +>objects : { [objectId: string]: T; } +><{ [objectId: string]: T; }>{} : { [objectId: string]: T; } >objectId : string >T : T >{} : { [x: string]: undefined; } array() { ->array : () => { [x: string]: T; } +>array : () => { [objectId: string]: T; } return this.objects; ->this.objects : { [x: string]: T; } +>this.objects : { [objectId: string]: T; } >this : LazyArray ->objects : { [x: string]: T; } +>objects : { [objectId: string]: T; } } } var lazyArray = new LazyArray(); @@ -27,8 +27,8 @@ var lazyArray = new LazyArray(); var value: string = lazyArray.array()["test"]; // used to be an error >value : string >lazyArray.array()["test"] : string ->lazyArray.array() : { [x: string]: string; } ->lazyArray.array : () => { [x: string]: string; } +>lazyArray.array() : { [objectId: string]: string; } +>lazyArray.array : () => { [objectId: string]: string; } >lazyArray : LazyArray ->array : () => { [x: string]: string; } +>array : () => { [objectId: string]: string; } diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types index 1de9b6d2aa8..e1cdfa85f13 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types @@ -5,7 +5,7 @@ export class Collection { >CollectionItem : CollectionItem _itemsByKey: { [key: string]: TItem; }; ->_itemsByKey : { [x: string]: TItem; } +>_itemsByKey : { [key: string]: TItem; } >key : string >TItem : TItem } diff --git a/tests/baselines/reference/indexSignaturesInferentialTyping.types b/tests/baselines/reference/indexSignaturesInferentialTyping.types index 4054ccca227..9ea5a390498 100644 --- a/tests/baselines/reference/indexSignaturesInferentialTyping.types +++ b/tests/baselines/reference/indexSignaturesInferentialTyping.types @@ -1,17 +1,17 @@ === tests/cases/compiler/indexSignaturesInferentialTyping.ts === function foo(items: { [index: number]: T }): T { return undefined; } ->foo : (items: { [x: number]: T; }) => T +>foo : (items: { [index: number]: T; }) => T >T : T ->items : { [x: number]: T; } +>items : { [index: number]: T; } >index : number >T : T >T : T >undefined : undefined function bar(items: { [index: string]: T }): T { return undefined; } ->bar : (items: { [x: string]: T; }) => T +>bar : (items: { [index: string]: T; }) => T >T : T ->items : { [x: string]: T; } +>items : { [index: string]: T; } >index : string >T : T >T : T @@ -20,13 +20,13 @@ function bar(items: { [index: string]: T }): T { return undefined; } var x1 = foo({ 0: 0, 1: 1 }); // type should be number >x1 : number >foo({ 0: 0, 1: 1 }) : number ->foo : (items: { [x: number]: T; }) => T +>foo : (items: { [index: number]: T; }) => T >{ 0: 0, 1: 1 } : { [x: number]: number; 0: number; 1: number; } var x2 = foo({ zero: 0, one: 1 }); >x2 : any >foo({ zero: 0, one: 1 }) : any ->foo : (items: { [x: number]: T; }) => T +>foo : (items: { [index: number]: T; }) => T >{ zero: 0, one: 1 } : { [x: number]: undefined; zero: number; one: number; } >zero : number >one : number @@ -34,13 +34,13 @@ var x2 = foo({ zero: 0, one: 1 }); var x3 = bar({ 0: 0, 1: 1 }); >x3 : number >bar({ 0: 0, 1: 1 }) : number ->bar : (items: { [x: string]: T; }) => T +>bar : (items: { [index: string]: T; }) => T >{ 0: 0, 1: 1 } : { [x: string]: number; 0: number; 1: number; } var x4 = bar({ zero: 0, one: 1 }); // type should be number >x4 : number >bar({ zero: 0, one: 1 }) : number ->bar : (items: { [x: string]: T; }) => T +>bar : (items: { [index: string]: T; }) => T >{ zero: 0, one: 1 } : { [x: string]: number; zero: number; one: number; } >zero : number >one : number diff --git a/tests/baselines/reference/indexerAssignability.errors.txt b/tests/baselines/reference/indexerAssignability.errors.txt index 9f28fc1e9e0..44c2184517e 100644 --- a/tests/baselines/reference/indexerAssignability.errors.txt +++ b/tests/baselines/reference/indexerAssignability.errors.txt @@ -1,8 +1,8 @@ -tests/cases/compiler/indexerAssignability.ts(5,1): error TS2322: Type '{ [x: number]: string; }' is not assignable to type '{ [x: string]: string; }'. - Index signature is missing in type '{ [x: number]: string; }'. -tests/cases/compiler/indexerAssignability.ts(6,1): error TS2322: Type '{}' is not assignable to type '{ [x: string]: string; }'. +tests/cases/compiler/indexerAssignability.ts(5,1): error TS2322: Type '{ [n: number]: string; }' is not assignable to type '{ [s: string]: string; }'. + Index signature is missing in type '{ [n: number]: string; }'. +tests/cases/compiler/indexerAssignability.ts(6,1): error TS2322: Type '{}' is not assignable to type '{ [s: string]: string; }'. Index signature is missing in type '{}'. -tests/cases/compiler/indexerAssignability.ts(8,1): error TS2322: Type '{}' is not assignable to type '{ [x: number]: string; }'. +tests/cases/compiler/indexerAssignability.ts(8,1): error TS2322: Type '{}' is not assignable to type '{ [n: number]: string; }'. Index signature is missing in type '{}'. @@ -13,16 +13,16 @@ tests/cases/compiler/indexerAssignability.ts(8,1): error TS2322: Type '{}' is no a = b; ~ -!!! error TS2322: Type '{ [x: number]: string; }' is not assignable to type '{ [x: string]: string; }'. -!!! error TS2322: Index signature is missing in type '{ [x: number]: string; }'. +!!! error TS2322: Type '{ [n: number]: string; }' is not assignable to type '{ [s: string]: string; }'. +!!! error TS2322: Index signature is missing in type '{ [n: number]: string; }'. a = c; ~ -!!! error TS2322: Type '{}' is not assignable to type '{ [x: string]: string; }'. +!!! error TS2322: Type '{}' is not assignable to type '{ [s: string]: string; }'. !!! error TS2322: Index signature is missing in type '{}'. b = a; b = c; ~ -!!! error TS2322: Type '{}' is not assignable to type '{ [x: number]: string; }'. +!!! error TS2322: Type '{}' is not assignable to type '{ [n: number]: string; }'. !!! error TS2322: Index signature is missing in type '{}'. c = a; c = b; \ No newline at end of file diff --git a/tests/baselines/reference/indexerReturningTypeParameter1.types b/tests/baselines/reference/indexerReturningTypeParameter1.types index 55155323c84..a0a70f95331 100644 --- a/tests/baselines/reference/indexerReturningTypeParameter1.types +++ b/tests/baselines/reference/indexerReturningTypeParameter1.types @@ -3,7 +3,7 @@ interface f { >f : f groupBy(): { [key: string]: T[]; }; ->groupBy : () => { [x: string]: T[]; } +>groupBy : () => { [key: string]: T[]; } >T : T >key : string >T : T @@ -13,17 +13,17 @@ var a: f; >f : f var r = a.groupBy(); ->r : { [x: string]: {}[]; } ->a.groupBy() : { [x: string]: {}[]; } ->a.groupBy : () => { [x: string]: T[]; } +>r : { [key: string]: {}[]; } +>a.groupBy() : { [key: string]: {}[]; } +>a.groupBy : () => { [key: string]: T[]; } >a : f ->groupBy : () => { [x: string]: T[]; } +>groupBy : () => { [key: string]: T[]; } class c { >c : c groupBy(): { [key: string]: T[]; } { ->groupBy : () => { [x: string]: T[]; } +>groupBy : () => { [key: string]: T[]; } >T : T >key : string >T : T @@ -36,9 +36,9 @@ var a2: c; >c : c var r2 = a2.groupBy(); ->r2 : { [x: string]: {}[]; } ->a2.groupBy() : { [x: string]: {}[]; } ->a2.groupBy : () => { [x: string]: T[]; } +>r2 : { [key: string]: {}[]; } +>a2.groupBy() : { [key: string]: {}[]; } +>a2.groupBy : () => { [key: string]: T[]; } >a2 : c ->groupBy : () => { [x: string]: T[]; } +>groupBy : () => { [key: string]: T[]; } diff --git a/tests/baselines/reference/nestedIndexer.types b/tests/baselines/reference/nestedIndexer.types index 612f6a260b7..ade8dbbcb66 100644 --- a/tests/baselines/reference/nestedIndexer.types +++ b/tests/baselines/reference/nestedIndexer.types @@ -4,7 +4,7 @@ function then(x) { >x : any var match: { [index: number]: string; } ->match : { [x: number]: string; } +>match : { [index: number]: string; } >index : number } diff --git a/tests/baselines/reference/numericIndexerConstraint2.errors.txt b/tests/baselines/reference/numericIndexerConstraint2.errors.txt index 4260f60becf..385efbcead2 100644 --- a/tests/baselines/reference/numericIndexerConstraint2.errors.txt +++ b/tests/baselines/reference/numericIndexerConstraint2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/numericIndexerConstraint2.ts(4,1): error TS2322: Type '{ one: number; }' is not assignable to type '{ [x: string]: Foo; }'. +tests/cases/compiler/numericIndexerConstraint2.ts(4,1): error TS2322: Type '{ one: number; }' is not assignable to type '{ [index: string]: Foo; }'. Index signature is missing in type '{ one: number; }'. @@ -8,5 +8,5 @@ tests/cases/compiler/numericIndexerConstraint2.ts(4,1): error TS2322: Type '{ on var a: { one: number; }; x = a; ~ -!!! error TS2322: Type '{ one: number; }' is not assignable to type '{ [x: string]: Foo; }'. +!!! error TS2322: Type '{ one: number; }' is not assignable to type '{ [index: string]: Foo; }'. !!! error TS2322: Index signature is missing in type '{ one: number; }'. \ No newline at end of file diff --git a/tests/baselines/reference/numericIndexerConstraint4.types b/tests/baselines/reference/numericIndexerConstraint4.types index 78b57d4179e..97e72b5088d 100644 --- a/tests/baselines/reference/numericIndexerConstraint4.types +++ b/tests/baselines/reference/numericIndexerConstraint4.types @@ -15,7 +15,7 @@ class B extends A { } var x: { ->x : { [x: number]: A; } +>x : { [idx: number]: A; } [idx: number]: A; >idx : number diff --git a/tests/baselines/reference/numericIndexerConstraint5.errors.txt b/tests/baselines/reference/numericIndexerConstraint5.errors.txt index 445fc771218..98acc65eeb7 100644 --- a/tests/baselines/reference/numericIndexerConstraint5.errors.txt +++ b/tests/baselines/reference/numericIndexerConstraint5.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [x: number]: string; }'. +tests/cases/compiler/numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [name: number]: string; }'. Index signature is missing in type '{ 0: Date; name: string; }'. @@ -6,5 +6,5 @@ tests/cases/compiler/numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ 0: var x = { name: "x", 0: new Date() }; var z: { [name: number]: string } = x; ~ -!!! error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [x: number]: string; }'. +!!! error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [name: number]: string; }'. !!! error TS2322: Index signature is missing in type '{ 0: Date; name: string; }'. \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralIndexerErrors.errors.txt b/tests/baselines/reference/objectLiteralIndexerErrors.errors.txt index ef084477f6d..c35e49f02a3 100644 --- a/tests/baselines/reference/objectLiteralIndexerErrors.errors.txt +++ b/tests/baselines/reference/objectLiteralIndexerErrors.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/objectLiteralIndexerErrors.ts(13,5): error TS2322: Type '{ [x: string]: A; [x: number]: A; 0: A; x: B; }' is not assignable to type '{ [x: string]: A; [x: number]: B; }'. +tests/cases/compiler/objectLiteralIndexerErrors.ts(13,5): error TS2322: Type '{ [x: string]: A; [x: number]: A; 0: A; x: B; }' is not assignable to type '{ [s: string]: A; [n: number]: B; }'. Index signatures are incompatible. Type 'A' is not assignable to type 'B'. @@ -18,7 +18,7 @@ tests/cases/compiler/objectLiteralIndexerErrors.ts(13,5): error TS2322: Type '{ var o1: { [s: string]: A;[n: number]: B; } = { x: b, 0: a }; // both indexers are A ~~ -!!! error TS2322: Type '{ [x: string]: A; [x: number]: A; 0: A; x: B; }' is not assignable to type '{ [x: string]: A; [x: number]: B; }'. +!!! error TS2322: Type '{ [x: string]: A; [x: number]: A; 0: A; x: B; }' is not assignable to type '{ [s: string]: A; [n: number]: B; }'. !!! error TS2322: Index signatures are incompatible. !!! error TS2322: Type 'A' is not assignable to type 'B'. o1 = { x: c, 0: a }; // string indexer is any, number indexer is A \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralIndexers.types b/tests/baselines/reference/objectLiteralIndexers.types index 1dce9b94ada..d5add00ebaf 100644 --- a/tests/baselines/reference/objectLiteralIndexers.types +++ b/tests/baselines/reference/objectLiteralIndexers.types @@ -26,7 +26,7 @@ var c: any; >c : any var o1: { [s: string]: A;[n: number]: B; } = { x: a, 0: b }; // string indexer is A, number indexer is B ->o1 : { [x: string]: A; [x: number]: B; } +>o1 : { [s: string]: A; [n: number]: B; } >s : string >A : A >n : number @@ -38,7 +38,7 @@ var o1: { [s: string]: A;[n: number]: B; } = { x: a, 0: b }; // string indexer i o1 = { x: b, 0: c }; // both indexers are any >o1 = { x: b, 0: c } : { [x: string]: any; [x: number]: any; 0: any; x: B; } ->o1 : { [x: string]: A; [x: number]: B; } +>o1 : { [s: string]: A; [n: number]: B; } >{ x: b, 0: c } : { [x: string]: any; [x: number]: any; 0: any; x: B; } >x : B >b : B @@ -46,7 +46,7 @@ o1 = { x: b, 0: c }; // both indexers are any o1 = { x: c, 0: b }; // string indexer is any, number indexer is B >o1 = { x: c, 0: b } : { [x: string]: any; [x: number]: B; 0: B; x: any; } ->o1 : { [x: string]: A; [x: number]: B; } +>o1 : { [s: string]: A; [n: number]: B; } >{ x: c, 0: b } : { [x: string]: any; [x: number]: B; 0: B; x: any; } >x : any >c : any diff --git a/tests/baselines/reference/parseShortform.types b/tests/baselines/reference/parseShortform.types index 21aff67ead4..e9e3f68b559 100644 --- a/tests/baselines/reference/parseShortform.types +++ b/tests/baselines/reference/parseShortform.types @@ -3,7 +3,7 @@ interface I { >I : I w: { ->w : { (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; } +>w : { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; } z: I; >z : I diff --git a/tests/baselines/reference/privatePropertyUsingObjectType.types b/tests/baselines/reference/privatePropertyUsingObjectType.types index 678418b1ddf..4c6b6820fc0 100644 --- a/tests/baselines/reference/privatePropertyUsingObjectType.types +++ b/tests/baselines/reference/privatePropertyUsingObjectType.types @@ -8,7 +8,7 @@ export class FilterManager { >IFilterProvider : IFilterProvider private _filterProviders2: { [index: number]: IFilterProvider; }; ->_filterProviders2 : { [x: number]: IFilterProvider; } +>_filterProviders2 : { [index: number]: IFilterProvider; } >index : number >IFilterProvider : IFilterProvider diff --git a/tests/baselines/reference/recursiveTypesWithTypeof.types b/tests/baselines/reference/recursiveTypesWithTypeof.types index f75bae79c5b..14ff5a6d5b9 100644 --- a/tests/baselines/reference/recursiveTypesWithTypeof.types +++ b/tests/baselines/reference/recursiveTypesWithTypeof.types @@ -135,21 +135,21 @@ var j2 = new j2(j2); // Indexers var k: { [n: number]: typeof k;[s: string]: typeof k }; ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } >n : number ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } >s : string ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } var k = k[0]; ->k : { [x: string]: any; [x: number]: any; } ->k[0] : { [x: string]: any; [x: number]: any; } ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } +>k[0] : { [s: string]: any; [n: number]: any; } +>k : { [s: string]: any; [n: number]: any; } var k = k['']; ->k : { [x: string]: any; [x: number]: any; } ->k[''] : { [x: string]: any; [x: number]: any; } ->k : { [x: string]: any; [x: number]: any; } +>k : { [s: string]: any; [n: number]: any; } +>k[''] : { [s: string]: any; [n: number]: any; } +>k : { [s: string]: any; [n: number]: any; } // Hybrid - contains type literals as well as type arguments // These two are recursive diff --git a/tests/baselines/reference/stringIndexerAssignments1.errors.txt b/tests/baselines/reference/stringIndexerAssignments1.errors.txt index 3939ceba1bb..908371bc7dd 100644 --- a/tests/baselines/reference/stringIndexerAssignments1.errors.txt +++ b/tests/baselines/reference/stringIndexerAssignments1.errors.txt @@ -1,6 +1,6 @@ -tests/cases/compiler/stringIndexerAssignments1.ts(4,1): error TS2322: Type '{ one: string; }' is not assignable to type '{ [x: string]: string; one: string; }'. +tests/cases/compiler/stringIndexerAssignments1.ts(4,1): error TS2322: Type '{ one: string; }' is not assignable to type '{ [index: string]: string; one: string; }'. Index signature is missing in type '{ one: string; }'. -tests/cases/compiler/stringIndexerAssignments1.ts(5,1): error TS2322: Type '{ one: number; two: string; }' is not assignable to type '{ [x: string]: string; one: string; }'. +tests/cases/compiler/stringIndexerAssignments1.ts(5,1): error TS2322: Type '{ one: number; two: string; }' is not assignable to type '{ [index: string]: string; one: string; }'. Types of property 'one' are incompatible. Type 'number' is not assignable to type 'string'. @@ -11,11 +11,11 @@ tests/cases/compiler/stringIndexerAssignments1.ts(5,1): error TS2322: Type '{ on var b: { one: number; two: string; }; x = a; ~ -!!! error TS2322: Type '{ one: string; }' is not assignable to type '{ [x: string]: string; one: string; }'. +!!! error TS2322: Type '{ one: string; }' is not assignable to type '{ [index: string]: string; one: string; }'. !!! error TS2322: Index signature is missing in type '{ one: string; }'. x = b; // error ~ -!!! error TS2322: Type '{ one: number; two: string; }' is not assignable to type '{ [x: string]: string; one: string; }'. +!!! error TS2322: Type '{ one: number; two: string; }' is not assignable to type '{ [index: string]: string; one: string; }'. !!! error TS2322: Types of property 'one' are incompatible. !!! error TS2322: Type 'number' is not assignable to type 'string'. \ No newline at end of file diff --git a/tests/baselines/reference/typeName1.errors.txt b/tests/baselines/reference/typeName1.errors.txt index 64a32663875..84c8be360bd 100644 --- a/tests/baselines/reference/typeName1.errors.txt +++ b/tests/baselines/reference/typeName1.errors.txt @@ -10,7 +10,7 @@ tests/cases/compiler/typeName1.ts(13,5): error TS2322: Type 'number' is not assi tests/cases/compiler/typeName1.ts(14,5): error TS2322: Type 'number' is not assignable to type '{ z: number; f: { (n: number): string; (s: string): number; }; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(15,5): error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. -tests/cases/compiler/typeName1.ts(16,5): error TS2322: Type 'number' is not assignable to type '{ (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; }'. +tests/cases/compiler/typeName1.ts(16,5): error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. Property 'z' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(16,10): error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. tests/cases/compiler/typeName1.ts(17,5): error TS2322: Type 'number' is not assignable to type 'I'. @@ -19,7 +19,7 @@ tests/cases/compiler/typeName1.ts(18,5): error TS2322: Type 'number' is not assi Property 'length' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(19,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; }[][]'. Property 'length' is missing in type 'Number'. -tests/cases/compiler/typeName1.ts(20,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; }; }[][]'. +tests/cases/compiler/typeName1.ts(20,5): error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][]'. Property 'length' is missing in type 'Number'. tests/cases/compiler/typeName1.ts(20,50): error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. tests/cases/compiler/typeName1.ts(21,5): error TS2322: Type 'number' is not assignable to type '{ (): {}; new (): number; new (n: number): number; x: string; w: { y: number; }; }'. @@ -66,7 +66,7 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as !!! error TS2322: Type 'number' is not assignable to type '(s: string) => boolean'. var x8:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; }=3; ~~ -!!! error TS2322: Type 'number' is not assignable to type '{ (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; }'. +!!! error TS2322: Type 'number' is not assignable to type '{ (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }'. !!! error TS2322: Property 'z' is missing in type 'Number'. ~~~~ !!! error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. @@ -84,7 +84,7 @@ tests/cases/compiler/typeName1.ts(23,5): error TS2322: Type 'typeof C' is not as !!! error TS2322: Property 'length' is missing in type 'Number'. var x12:{z:I;x:boolean;y:(s:string)=>boolean;w:{ z:I;[s:string]:{ x; y; };[n:number]:{x; y;};():boolean; };}[][]=3; ~~~ -!!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [x: string]: { x: any; y: any; }; [x: number]: { x: any; y: any; }; z: I; }; }[][]'. +!!! error TS2322: Type 'number' is not assignable to type '{ z: I; x: boolean; y: (s: string) => boolean; w: { (): boolean; [s: string]: { x: any; y: any; }; [n: number]: { x: any; y: any; }; z: I; }; }[][]'. !!! error TS2322: Property 'length' is missing in type 'Number'. ~~~~ !!! error TS2411: Property 'z' of type 'I' is not assignable to string index type '{ x: any; y: any; }'. diff --git a/tests/baselines/reference/unionTypeIndexSignature.types b/tests/baselines/reference/unionTypeIndexSignature.types index 96453cffcb4..4502a3ddfc3 100644 --- a/tests/baselines/reference/unionTypeIndexSignature.types +++ b/tests/baselines/reference/unionTypeIndexSignature.types @@ -10,7 +10,7 @@ var anyVar: number; // U has a string index signature of a union type of the types of the string index signatures from each type in U. var unionOfDifferentReturnType: { [a: string]: number; } | { [a: string]: Date; }; ->unionOfDifferentReturnType : { [x: string]: number; } | { [x: string]: Date; } +>unionOfDifferentReturnType : { [a: string]: number; } | { [a: string]: Date; } >a : string >a : string >Date : Date @@ -19,34 +19,34 @@ numOrDate = unionOfDifferentReturnType["hello"]; // number | Date >numOrDate = unionOfDifferentReturnType["hello"] : number | Date >numOrDate : number | Date >unionOfDifferentReturnType["hello"] : number | Date ->unionOfDifferentReturnType : { [x: string]: number; } | { [x: string]: Date; } +>unionOfDifferentReturnType : { [a: string]: number; } | { [a: string]: Date; } numOrDate = unionOfDifferentReturnType[10]; // number | Date >numOrDate = unionOfDifferentReturnType[10] : number | Date >numOrDate : number | Date >unionOfDifferentReturnType[10] : number | Date ->unionOfDifferentReturnType : { [x: string]: number; } | { [x: string]: Date; } +>unionOfDifferentReturnType : { [a: string]: number; } | { [a: string]: Date; } var unionOfTypesWithAndWithoutStringSignature: { [a: string]: number; } | boolean; ->unionOfTypesWithAndWithoutStringSignature : boolean | { [x: string]: number; } +>unionOfTypesWithAndWithoutStringSignature : boolean | { [a: string]: number; } >a : string anyVar = unionOfTypesWithAndWithoutStringSignature["hello"]; // any >anyVar = unionOfTypesWithAndWithoutStringSignature["hello"] : any >anyVar : number >unionOfTypesWithAndWithoutStringSignature["hello"] : any ->unionOfTypesWithAndWithoutStringSignature : boolean | { [x: string]: number; } +>unionOfTypesWithAndWithoutStringSignature : boolean | { [a: string]: number; } anyVar = unionOfTypesWithAndWithoutStringSignature[10]; // any >anyVar = unionOfTypesWithAndWithoutStringSignature[10] : any >anyVar : number >unionOfTypesWithAndWithoutStringSignature[10] : any ->unionOfTypesWithAndWithoutStringSignature : boolean | { [x: string]: number; } +>unionOfTypesWithAndWithoutStringSignature : boolean | { [a: string]: number; } // If each type in U has a numeric index signature, // U has a numeric index signature of a union type of the types of the numeric index signatures from each type in U. var unionOfDifferentReturnType1: { [a: number]: number; } | { [a: number]: Date; }; ->unionOfDifferentReturnType1 : { [x: number]: number; } | { [x: number]: Date; } +>unionOfDifferentReturnType1 : { [a: number]: number; } | { [a: number]: Date; } >a : number >a : number >Date : Date @@ -55,27 +55,27 @@ numOrDate = unionOfDifferentReturnType1["hello"]; // any >numOrDate = unionOfDifferentReturnType1["hello"] : any >numOrDate : number | Date >unionOfDifferentReturnType1["hello"] : any ->unionOfDifferentReturnType1 : { [x: number]: number; } | { [x: number]: Date; } +>unionOfDifferentReturnType1 : { [a: number]: number; } | { [a: number]: Date; } numOrDate = unionOfDifferentReturnType1[10]; // number | Date >numOrDate = unionOfDifferentReturnType1[10] : number | Date >numOrDate : number | Date >unionOfDifferentReturnType1[10] : number | Date ->unionOfDifferentReturnType1 : { [x: number]: number; } | { [x: number]: Date; } +>unionOfDifferentReturnType1 : { [a: number]: number; } | { [a: number]: Date; } var unionOfTypesWithAndWithoutStringSignature1: { [a: number]: number; } | boolean; ->unionOfTypesWithAndWithoutStringSignature1 : boolean | { [x: number]: number; } +>unionOfTypesWithAndWithoutStringSignature1 : boolean | { [a: number]: number; } >a : number anyVar = unionOfTypesWithAndWithoutStringSignature1["hello"]; // any >anyVar = unionOfTypesWithAndWithoutStringSignature1["hello"] : any >anyVar : number >unionOfTypesWithAndWithoutStringSignature1["hello"] : any ->unionOfTypesWithAndWithoutStringSignature1 : boolean | { [x: number]: number; } +>unionOfTypesWithAndWithoutStringSignature1 : boolean | { [a: number]: number; } anyVar = unionOfTypesWithAndWithoutStringSignature1[10]; // any >anyVar = unionOfTypesWithAndWithoutStringSignature1[10] : any >anyVar : number >unionOfTypesWithAndWithoutStringSignature1[10] : any ->unionOfTypesWithAndWithoutStringSignature1 : boolean | { [x: number]: number; } +>unionOfTypesWithAndWithoutStringSignature1 : boolean | { [a: number]: number; } diff --git a/tests/baselines/reference/vardecl.types b/tests/baselines/reference/vardecl.types index 25257e57d78..d6847dc3be7 100644 --- a/tests/baselines/reference/vardecl.types +++ b/tests/baselines/reference/vardecl.types @@ -52,7 +52,7 @@ complicatedArrayVar.push({ x: 30, y : 'hello world' }); >y : string var n1: { [s: string]: number; }; ->n1 : { [x: string]: number; } +>n1 : { [s: string]: number; } >s : string var c : {