From 7b00a29b1c6a3bd68c8924e4d74ce62be7d4835c Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 15 Jan 2019 10:00:47 -0800 Subject: [PATCH] Accept new baselines --- .../reference/api/tsserverlibrary.d.ts | 7 +++--- tests/baselines/reference/api/typescript.d.ts | 5 ++-- tests/baselines/reference/arrayFind.types | 10 ++++---- tests/baselines/reference/arrayFlatMap.types | 16 ++++++------- ...typeIsAssignableToReadonlyArray.errors.txt | 8 +++---- ...OfSubtypeIsAssignableToReadonlyArray.types | 20 ++++++++-------- .../reference/bivariantInferences.types | 10 ++++---- .../circularContextualReturnType.types | 8 +++---- .../reference/doNotInferUnrelatedTypes.types | 6 ++--- .../intersectionTypeInference3.types | 2 +- .../reference/keyofAndIndexedAccess.types | 4 ++-- .../reference/mappedTypesArraysTuples.types | 14 +++++------ .../reference/noUnusedLocals_writeOnly.types | 4 ++-- .../reference/objectFreeze.errors.txt | 4 ++-- tests/baselines/reference/objectFreeze.types | 24 +++++++++---------- .../reference/strictFunctionTypes1.types | 6 ++--- 16 files changed, 75 insertions(+), 73 deletions(-) diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 91f492ddd1d..380e43c2409 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -814,7 +814,7 @@ declare namespace ts { } interface TypeOperatorNode extends TypeNode { kind: SyntaxKind.TypeOperator; - operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword; + operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword; type: TypeNode; } interface IndexedAccessTypeNode extends TypeNode { @@ -2282,6 +2282,7 @@ declare namespace ts { interface TupleType extends GenericType { minLength: number; hasRestElement: boolean; + readonly: boolean; associatedNames?: __String[]; } interface TupleTypeReference extends TypeReference { @@ -3754,7 +3755,7 @@ declare namespace ts { function updateParenthesizedType(node: ParenthesizedTypeNode, type: TypeNode): ParenthesizedTypeNode; function createThisTypeNode(): ThisTypeNode; function createTypeOperatorNode(type: TypeNode): TypeOperatorNode; - function createTypeOperatorNode(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword, type: TypeNode): TypeOperatorNode; + function createTypeOperatorNode(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode; function updateTypeOperatorNode(node: TypeOperatorNode, type: TypeNode): TypeOperatorNode; function createIndexedAccessTypeNode(objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode; function updateIndexedAccessTypeNode(node: IndexedAccessTypeNode, objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode; @@ -8326,7 +8327,7 @@ declare namespace ts.server { excludedFiles: ReadonlyArray; private typeAcquisition; updateGraph(): boolean; - getExcludedFiles(): ReadonlyArray; + getExcludedFiles(): readonly NormalizedPath[]; getTypeAcquisition(): TypeAcquisition; setTypeAcquisition(newTypeAcquisition: TypeAcquisition): void; } diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 0e693f698f2..1234144ac4a 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -814,7 +814,7 @@ declare namespace ts { } interface TypeOperatorNode extends TypeNode { kind: SyntaxKind.TypeOperator; - operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword; + operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword; type: TypeNode; } interface IndexedAccessTypeNode extends TypeNode { @@ -2282,6 +2282,7 @@ declare namespace ts { interface TupleType extends GenericType { minLength: number; hasRestElement: boolean; + readonly: boolean; associatedNames?: __String[]; } interface TupleTypeReference extends TypeReference { @@ -3754,7 +3755,7 @@ declare namespace ts { function updateParenthesizedType(node: ParenthesizedTypeNode, type: TypeNode): ParenthesizedTypeNode; function createThisTypeNode(): ThisTypeNode; function createTypeOperatorNode(type: TypeNode): TypeOperatorNode; - function createTypeOperatorNode(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword, type: TypeNode): TypeOperatorNode; + function createTypeOperatorNode(operator: SyntaxKind.KeyOfKeyword | SyntaxKind.UniqueKeyword | SyntaxKind.ReadonlyKeyword, type: TypeNode): TypeOperatorNode; function updateTypeOperatorNode(node: TypeOperatorNode, type: TypeNode): TypeOperatorNode; function createIndexedAccessTypeNode(objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode; function updateIndexedAccessTypeNode(node: IndexedAccessTypeNode, objectType: TypeNode, indexType: TypeNode): IndexedAccessTypeNode; diff --git a/tests/baselines/reference/arrayFind.types b/tests/baselines/reference/arrayFind.types index c5237183700..530f07be3f8 100644 --- a/tests/baselines/reference/arrayFind.types +++ b/tests/baselines/reference/arrayFind.types @@ -30,15 +30,15 @@ const foundNumber: number | undefined = arrayOfStringsNumbersAndBooleans.find(is >isNumber : (x: any) => x is number const readonlyArrayOfStringsNumbersAndBooleans = arrayOfStringsNumbersAndBooleans as ReadonlyArray; ->readonlyArrayOfStringsNumbersAndBooleans : ReadonlyArray ->arrayOfStringsNumbersAndBooleans as ReadonlyArray : ReadonlyArray +>readonlyArrayOfStringsNumbersAndBooleans : readonly (string | number | boolean)[] +>arrayOfStringsNumbersAndBooleans as ReadonlyArray : readonly (string | number | boolean)[] >arrayOfStringsNumbersAndBooleans : (string | number | boolean)[] const readonlyFoundNumber: number | undefined = readonlyArrayOfStringsNumbersAndBooleans.find(isNumber); >readonlyFoundNumber : number >readonlyArrayOfStringsNumbersAndBooleans.find(isNumber) : number ->readonlyArrayOfStringsNumbersAndBooleans.find : { (predicate: (this: void, value: string | number | boolean, index: number, obj: ReadonlyArray) => value is S, thisArg?: any): S; (predicate: (value: string | number | boolean, index: number, obj: ReadonlyArray) => boolean, thisArg?: any): string | number | boolean; } ->readonlyArrayOfStringsNumbersAndBooleans : ReadonlyArray ->find : { (predicate: (this: void, value: string | number | boolean, index: number, obj: ReadonlyArray) => value is S, thisArg?: any): S; (predicate: (value: string | number | boolean, index: number, obj: ReadonlyArray) => boolean, thisArg?: any): string | number | boolean; } +>readonlyArrayOfStringsNumbersAndBooleans.find : { (predicate: (this: void, value: string | number | boolean, index: number, obj: readonly (string | number | boolean)[]) => value is S, thisArg?: any): S; (predicate: (value: string | number | boolean, index: number, obj: readonly (string | number | boolean)[]) => boolean, thisArg?: any): string | number | boolean; } +>readonlyArrayOfStringsNumbersAndBooleans : readonly (string | number | boolean)[] +>find : { (predicate: (this: void, value: string | number | boolean, index: number, obj: readonly (string | number | boolean)[]) => value is S, thisArg?: any): S; (predicate: (value: string | number | boolean, index: number, obj: readonly (string | number | boolean)[]) => boolean, thisArg?: any): string | number | boolean; } >isNumber : (x: any) => x is number diff --git a/tests/baselines/reference/arrayFlatMap.types b/tests/baselines/reference/arrayFlatMap.types index 7eb4d444ecf..631ae04ef98 100644 --- a/tests/baselines/reference/arrayFlatMap.types +++ b/tests/baselines/reference/arrayFlatMap.types @@ -4,22 +4,22 @@ const array: number[] = []; >[] : undefined[] const readonlyArray: ReadonlyArray = []; ->readonlyArray : ReadonlyArray +>readonlyArray : readonly number[] >[] : undefined[] array.flatMap((): ReadonlyArray => []); // ok >array.flatMap((): ReadonlyArray => []) : number[] ->array.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | ReadonlyArray, thisArg?: This) => U[] +>array.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] >array : number[] ->flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | ReadonlyArray, thisArg?: This) => U[] ->(): ReadonlyArray => [] : () => ReadonlyArray +>flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] +>(): ReadonlyArray => [] : () => readonly number[] >[] : undefined[] readonlyArray.flatMap((): ReadonlyArray => []); // ok >readonlyArray.flatMap((): ReadonlyArray => []) : number[] ->readonlyArray.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | ReadonlyArray, thisArg?: This) => U[] ->readonlyArray : ReadonlyArray ->flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | ReadonlyArray, thisArg?: This) => U[] ->(): ReadonlyArray => [] : () => ReadonlyArray +>readonlyArray.flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] +>readonlyArray : readonly number[] +>flatMap : (callback: (this: This, value: number, index: number, array: number[]) => U | readonly U[], thisArg?: This) => U[] +>(): ReadonlyArray => [] : () => readonly number[] >[] : undefined[] diff --git a/tests/baselines/reference/arrayOfSubtypeIsAssignableToReadonlyArray.errors.txt b/tests/baselines/reference/arrayOfSubtypeIsAssignableToReadonlyArray.errors.txt index 319cc4310d8..63d3a6f7b64 100644 --- a/tests/baselines/reference/arrayOfSubtypeIsAssignableToReadonlyArray.errors.txt +++ b/tests/baselines/reference/arrayOfSubtypeIsAssignableToReadonlyArray.errors.txt @@ -1,6 +1,6 @@ -tests/cases/compiler/arrayOfSubtypeIsAssignableToReadonlyArray.ts(13,1): error TS2322: Type 'A[]' is not assignable to type 'ReadonlyArray'. +tests/cases/compiler/arrayOfSubtypeIsAssignableToReadonlyArray.ts(13,1): error TS2322: Type 'A[]' is not assignable to type 'readonly B[]'. Property 'b' is missing in type 'A' but required in type 'B'. -tests/cases/compiler/arrayOfSubtypeIsAssignableToReadonlyArray.ts(18,1): error TS2322: Type 'C' is not assignable to type 'ReadonlyArray'. +tests/cases/compiler/arrayOfSubtypeIsAssignableToReadonlyArray.ts(18,1): error TS2322: Type 'C' is not assignable to type 'readonly B[]'. Types of property 'concat' are incompatible. Type '{ (...items: ConcatArray[]): A[]; (...items: (A | ConcatArray)[]): A[]; }' is not assignable to type '{ (...items: ConcatArray[]): B[]; (...items: (B | ConcatArray)[]): B[]; }'. Type 'A[]' is not assignable to type 'B[]'. @@ -22,7 +22,7 @@ tests/cases/compiler/arrayOfSubtypeIsAssignableToReadonlyArray.ts(18,1): error T rra = arb; rrb = ara; // error: 'A' is not assignable to 'B' ~~~ -!!! error TS2322: Type 'A[]' is not assignable to type 'ReadonlyArray'. +!!! error TS2322: Type 'A[]' is not assignable to type 'readonly B[]'. !!! error TS2322: Property 'b' is missing in type 'A' but required in type 'B'. !!! related TS2728 tests/cases/compiler/arrayOfSubtypeIsAssignableToReadonlyArray.ts:2:21: 'b' is declared here. @@ -31,7 +31,7 @@ tests/cases/compiler/arrayOfSubtypeIsAssignableToReadonlyArray.ts(18,1): error T rrb = crb; rrb = cra; // error: 'A' is not assignable to 'B' ~~~ -!!! error TS2322: Type 'C' is not assignable to type 'ReadonlyArray'. +!!! error TS2322: Type 'C' is not assignable to type 'readonly B[]'. !!! error TS2322: Types of property 'concat' are incompatible. !!! error TS2322: Type '{ (...items: ConcatArray[]): A[]; (...items: (A | ConcatArray)[]): A[]; }' is not assignable to type '{ (...items: ConcatArray[]): B[]; (...items: (B | ConcatArray)[]): B[]; }'. !!! error TS2322: Type 'A[]' is not assignable to type 'B[]'. diff --git a/tests/baselines/reference/arrayOfSubtypeIsAssignableToReadonlyArray.types b/tests/baselines/reference/arrayOfSubtypeIsAssignableToReadonlyArray.types index 535522182fd..f5b639f4867 100644 --- a/tests/baselines/reference/arrayOfSubtypeIsAssignableToReadonlyArray.types +++ b/tests/baselines/reference/arrayOfSubtypeIsAssignableToReadonlyArray.types @@ -26,48 +26,48 @@ declare var crb: C; >crb : C declare var rra: ReadonlyArray; ->rra : ReadonlyArray +>rra : readonly A[] declare var rrb: ReadonlyArray; ->rrb : ReadonlyArray +>rrb : readonly B[] rra = ara; >rra = ara : A[] ->rra : ReadonlyArray +>rra : readonly A[] >ara : A[] rrb = arb; // OK, Array is assignable to ReadonlyArray >rrb = arb : B[] ->rrb : ReadonlyArray +>rrb : readonly B[] >arb : B[] rra = arb; >rra = arb : B[] ->rra : ReadonlyArray +>rra : readonly A[] >arb : B[] rrb = ara; // error: 'A' is not assignable to 'B' >rrb = ara : A[] ->rrb : ReadonlyArray +>rrb : readonly B[] >ara : A[] rra = cra; >rra = cra : C ->rra : ReadonlyArray +>rra : readonly A[] >cra : C rra = crb; // OK, C is assignable to ReadonlyArray >rra = crb : C ->rra : ReadonlyArray +>rra : readonly A[] >crb : C rrb = crb; >rrb = crb : C ->rrb : ReadonlyArray +>rrb : readonly B[] >crb : C rrb = cra; // error: 'A' is not assignable to 'B' >rrb = cra : C ->rrb : ReadonlyArray +>rrb : readonly B[] >cra : C diff --git a/tests/baselines/reference/bivariantInferences.types b/tests/baselines/reference/bivariantInferences.types index e9bf31dad8e..940b5a27536 100644 --- a/tests/baselines/reference/bivariantInferences.types +++ b/tests/baselines/reference/bivariantInferences.types @@ -3,9 +3,9 @@ interface Array { equalsShallow(this: ReadonlyArray, other: ReadonlyArray): boolean; ->equalsShallow : (this: ReadonlyArray, other: ReadonlyArray) => boolean ->this : ReadonlyArray ->other : ReadonlyArray +>equalsShallow : (this: readonly T[], other: readonly T[]) => boolean +>this : readonly T[] +>other : readonly T[] } declare const a: (string | number)[] | null[] | undefined[] | {}[]; @@ -19,8 +19,8 @@ declare const b: (string | number)[] | null[] | undefined[] | {}[]; let x = a.equalsShallow(b); >x : boolean >a.equalsShallow(b) : boolean ->a.equalsShallow : ((this: ReadonlyArray, other: ReadonlyArray) => boolean) | ((this: ReadonlyArray, other: ReadonlyArray) => boolean) | ((this: ReadonlyArray, other: ReadonlyArray) => boolean) | ((this: ReadonlyArray, other: ReadonlyArray) => boolean) +>a.equalsShallow : ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) >a : (string | number)[] | null[] | undefined[] | {}[] ->equalsShallow : ((this: ReadonlyArray, other: ReadonlyArray) => boolean) | ((this: ReadonlyArray, other: ReadonlyArray) => boolean) | ((this: ReadonlyArray, other: ReadonlyArray) => boolean) | ((this: ReadonlyArray, other: ReadonlyArray) => boolean) +>equalsShallow : ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) | ((this: readonly T[], other: readonly T[]) => boolean) >b : (string | number)[] | null[] | undefined[] | {}[] diff --git a/tests/baselines/reference/circularContextualReturnType.types b/tests/baselines/reference/circularContextualReturnType.types index d32640d2cd9..99745ef58d3 100644 --- a/tests/baselines/reference/circularContextualReturnType.types +++ b/tests/baselines/reference/circularContextualReturnType.types @@ -3,9 +3,9 @@ Object.freeze({ >Object.freeze({ foo() { return Object.freeze('a'); },}) : Readonly<{ foo(): string; }> ->Object.freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >{ foo() { return Object.freeze('a'); },} : { foo(): string; } foo() { @@ -13,9 +13,9 @@ Object.freeze({ return Object.freeze('a'); >Object.freeze('a') : string ->Object.freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >'a' : "a" }, diff --git a/tests/baselines/reference/doNotInferUnrelatedTypes.types b/tests/baselines/reference/doNotInferUnrelatedTypes.types index 071e31c3867..182334684fc 100644 --- a/tests/baselines/reference/doNotInferUnrelatedTypes.types +++ b/tests/baselines/reference/doNotInferUnrelatedTypes.types @@ -1,8 +1,8 @@ === tests/cases/compiler/doNotInferUnrelatedTypes.ts === // #16709 declare function dearray(ara: ReadonlyArray): T; ->dearray : (ara: ReadonlyArray) => T ->ara : ReadonlyArray +>dearray : (ara: readonly T[]) => T +>ara : readonly T[] type LiteralType = "foo" | "bar"; >LiteralType : LiteralType @@ -13,6 +13,6 @@ declare var alt: Array; let foo: LiteralType = dearray(alt); >foo : LiteralType >dearray(alt) : LiteralType ->dearray : (ara: ReadonlyArray) => T +>dearray : (ara: readonly T[]) => T >alt : LiteralType[] diff --git a/tests/baselines/reference/intersectionTypeInference3.types b/tests/baselines/reference/intersectionTypeInference3.types index ac8fc2ccbc0..ad20f7159d1 100644 --- a/tests/baselines/reference/intersectionTypeInference3.types +++ b/tests/baselines/reference/intersectionTypeInference3.types @@ -43,7 +43,7 @@ declare function from(): T[]; >from : () => T[] const c2: ReadonlyArray = from(); ->c2 : ReadonlyArray> +>c2 : readonly Nominal<"A", string>[] >from() : Nominal<"A", string>[] >from : () => T[] diff --git a/tests/baselines/reference/keyofAndIndexedAccess.types b/tests/baselines/reference/keyofAndIndexedAccess.types index bb395c562d6..2a7a19ea30c 100644 --- a/tests/baselines/reference/keyofAndIndexedAccess.types +++ b/tests/baselines/reference/keyofAndIndexedAccess.types @@ -1873,9 +1873,9 @@ class SampleClass

{ >this : this >props : Readonly

>Object.freeze(props) : Readonly

->Object.freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >props : P } } diff --git a/tests/baselines/reference/mappedTypesArraysTuples.types b/tests/baselines/reference/mappedTypesArraysTuples.types index df99246e9bd..98a79e8b600 100644 --- a/tests/baselines/reference/mappedTypesArraysTuples.types +++ b/tests/baselines/reference/mappedTypesArraysTuples.types @@ -25,13 +25,13 @@ type T12 = Required; >T12 : string[] type T13 = Boxified>; ->T13 : ReadonlyArray> +>T13 : readonly Box[] type T14 = Partial>; ->T14 : ReadonlyArray +>T14 : readonly (string | undefined)[] type T15 = Required>; ->T15 : ReadonlyArray +>T15 : readonly string[] type T20 = Boxified<(string | undefined)[]>; >T20 : Box[] @@ -43,13 +43,13 @@ type T22 = Required<(string | undefined)[]>; >T22 : string[] type T23 = Boxified>; ->T23 : ReadonlyArray> +>T23 : readonly Box[] type T24 = Partial>; ->T24 : ReadonlyArray +>T24 : readonly (string | undefined)[] type T25 = Required>; ->T25 : ReadonlyArray +>T25 : readonly string[] type T30 = Boxified>; >T30 : Box[] @@ -66,7 +66,7 @@ type B = { b: string }; >b : string type T40 = Boxified | [A, B] | string | string[]>; ->T40 : string | Box[] | Boxified | Box[] | ReadonlyArray> | [Box, Box] +>T40 : string | Box[] | Boxified | Box[] | readonly Box[] | [Box, Box] declare function unboxify(x: Boxified): T; >unboxify : (x: Boxified) => T diff --git a/tests/baselines/reference/noUnusedLocals_writeOnly.types b/tests/baselines/reference/noUnusedLocals_writeOnly.types index 43a393a1edd..cc21d624fe7 100644 --- a/tests/baselines/reference/noUnusedLocals_writeOnly.types +++ b/tests/baselines/reference/noUnusedLocals_writeOnly.types @@ -117,6 +117,6 @@ function f(x = 0, b = false) { >1 : 1 } function f2(_: ReadonlyArray): void {} ->f2 : (_: ReadonlyArray) => void ->_ : ReadonlyArray +>f2 : (_: readonly number[]) => void +>_ : readonly number[] diff --git a/tests/baselines/reference/objectFreeze.errors.txt b/tests/baselines/reference/objectFreeze.errors.txt index f89ef42f4c7..5a399c04984 100644 --- a/tests/baselines/reference/objectFreeze.errors.txt +++ b/tests/baselines/reference/objectFreeze.errors.txt @@ -1,5 +1,5 @@ tests/cases/compiler/objectFreeze.ts(9,1): error TS2322: Type 'string' is not assignable to type 'number'. -tests/cases/compiler/objectFreeze.ts(9,1): error TS2542: Index signature in type 'ReadonlyArray' only permits reading. +tests/cases/compiler/objectFreeze.ts(9,1): error TS2542: Index signature in type 'readonly number[]' only permits reading. tests/cases/compiler/objectFreeze.ts(12,3): error TS2540: Cannot assign to 'b' because it is a read-only property. @@ -16,7 +16,7 @@ tests/cases/compiler/objectFreeze.ts(12,3): error TS2540: Cannot assign to 'b' b ~~~~ !!! error TS2322: Type 'string' is not assignable to type 'number'. ~~~~ -!!! error TS2542: Index signature in type 'ReadonlyArray' only permits reading. +!!! error TS2542: Index signature in type 'readonly number[]' only permits reading. const o = Object.freeze({ a: 1, b: "string" }); o.b = o.a.toString(); diff --git a/tests/baselines/reference/objectFreeze.types b/tests/baselines/reference/objectFreeze.types index b673d513e85..df70ab4e4de 100644 --- a/tests/baselines/reference/objectFreeze.types +++ b/tests/baselines/reference/objectFreeze.types @@ -2,9 +2,9 @@ const f = Object.freeze(function foo(a: number, b: string) { return false; }); >f : (a: number, b: string) => false >Object.freeze(function foo(a: number, b: string) { return false; }) : (a: number, b: string) => false ->Object.freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >function foo(a: number, b: string) { return false; } : (a: number, b: string) => false >foo : (a: number, b: string) => false >a : number @@ -26,9 +26,9 @@ class C { constructor(a: number) { } } const c = Object.freeze(C); >c : typeof C >Object.freeze(C) : typeof C ->Object.freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >C : typeof C new c(1); @@ -37,11 +37,11 @@ new c(1); >1 : 1 const a = Object.freeze([1, 2, 3]); ->a : ReadonlyArray ->Object.freeze([1, 2, 3]) : ReadonlyArray ->Object.freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>a : readonly number[] +>Object.freeze([1, 2, 3]) : readonly number[] +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >[1, 2, 3] : number[] >1 : 1 >2 : 2 @@ -50,21 +50,21 @@ const a = Object.freeze([1, 2, 3]); a[0] = a[2].toString(); >a[0] = a[2].toString() : string >a[0] : number ->a : ReadonlyArray +>a : readonly number[] >0 : 0 >a[2].toString() : string >a[2].toString : (radix?: number) => string >a[2] : number ->a : ReadonlyArray +>a : readonly number[] >2 : 2 >toString : (radix?: number) => string const o = Object.freeze({ a: 1, b: "string" }); >o : Readonly<{ a: number; b: string; }> >Object.freeze({ a: 1, b: "string" }) : Readonly<{ a: number; b: string; }> ->Object.freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>Object.freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >Object : ObjectConstructor ->freeze : { (a: T[]): ReadonlyArray; (f: T): T; (o: T): Readonly; } +>freeze : { (a: T[]): readonly T[]; (f: T): T; (o: T): Readonly; } >{ a: 1, b: "string" } : { a: number; b: string; } >a : number >1 : 1 diff --git a/tests/baselines/reference/strictFunctionTypes1.types b/tests/baselines/reference/strictFunctionTypes1.types index 058b066f4c5..2edd6e843b3 100644 --- a/tests/baselines/reference/strictFunctionTypes1.types +++ b/tests/baselines/reference/strictFunctionTypes1.types @@ -97,13 +97,13 @@ const x11 = f3(never, fo, fx); // "def" // Repro from #21112 declare function foo(a: ReadonlyArray): T; ->foo : (a: ReadonlyArray) => T ->a : ReadonlyArray +>foo : (a: readonly T[]) => T +>a : readonly T[] let x = foo([]); // never >x : never >foo([]) : never ->foo : (a: ReadonlyArray) => T +>foo : (a: readonly T[]) => T >[] : never[] // Modified repros from #26127