diff --git a/tests/baselines/reference/strictTupleLength.errors.txt b/tests/baselines/reference/strictTupleLength.errors.txt new file mode 100644 index 00000000000..c31064f6b6b --- /dev/null +++ b/tests/baselines/reference/strictTupleLength.errors.txt @@ -0,0 +1,37 @@ +tests/cases/conformance/types/tuple/strictTupleLength.ts(1,9): error TS1122: A tuple type element list cannot be empty. +tests/cases/conformance/types/tuple/strictTupleLength.ts(11,5): error TS2403: Subsequent variable declarations must have the same type. Variable 't1' has type '[number]' at tests/cases/conformance/types/tuple/strictTupleLength.ts 1:4, but here has type '[number, number]'. +tests/cases/conformance/types/tuple/strictTupleLength.ts(12,5): error TS2403: Subsequent variable declarations must have the same type. Variable 't2' has type '[number, number]' at tests/cases/conformance/types/tuple/strictTupleLength.ts 2:4, but here has type '[number]'. +tests/cases/conformance/types/tuple/strictTupleLength.ts(18,1): error TS2322: Type 'number[]' is not assignable to type '[number]'. + Property '0' is missing in type 'number[]'. + + +==== tests/cases/conformance/types/tuple/strictTupleLength.ts (4 errors) ==== + var t0: []; + ~~ +!!! error TS1122: A tuple type element list cannot be empty. + var t1: [number]; + var t2: [number, number]; + var arr: number[]; + + var len0: 0 = t0.length; + var len1: 1 = t1.length; + var len2: 2 = t2.length; + var lena: number = arr.length; + + var t1 = t2; // error + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 't1' has type '[number]' at tests/cases/conformance/types/tuple/strictTupleLength.ts 1:4, but here has type '[number, number]'. + var t2 = t1; // error + ~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 't2' has type '[number, number]' at tests/cases/conformance/types/tuple/strictTupleLength.ts 2:4, but here has type '[number]'. + + type A = T['length']; + var b: A<[boolean]>; + var c: 1 = b; + + t1 = arr; // error with or without strict + ~~ +!!! error TS2322: Type 'number[]' is not assignable to type '[number]'. +!!! error TS2322: Property '0' is missing in type 'number[]'. + arr = t1; // ok with or without strict + \ No newline at end of file diff --git a/tests/baselines/reference/tupleLength.js b/tests/baselines/reference/strictTupleLength.js similarity index 58% rename from tests/baselines/reference/tupleLength.js rename to tests/baselines/reference/strictTupleLength.js index 3893305421b..e4ae65f2fde 100644 --- a/tests/baselines/reference/tupleLength.js +++ b/tests/baselines/reference/strictTupleLength.js @@ -1,10 +1,10 @@ -//// [tupleLength.ts] -// var t0: []; +//// [strictTupleLength.ts] +var t0: []; var t1: [number]; var t2: [number, number]; var arr: number[]; -// var len0: 0 = t0.length; +var len0: 0 = t0.length; var len1: 1 = t1.length; var len2: 2 = t2.length; var lena: number = arr.length; @@ -15,14 +15,17 @@ var t2 = t1; // error type A = T['length']; var b: A<[boolean]>; var c: 1 = b; + +t1 = arr; // error with or without strict +arr = t1; // ok with or without strict -//// [tupleLength.js] -// var t0: []; +//// [strictTupleLength.js] +var t0; var t1; var t2; var arr; -// var len0: 0 = t0.length; +var len0 = t0.length; var len1 = t1.length; var len2 = t2.length; var lena = arr.length; @@ -30,3 +33,5 @@ var t1 = t2; // error var t2 = t1; // error var b; var c = b; +t1 = arr; // error with or without strict +arr = t1; // ok with or without strict diff --git a/tests/baselines/reference/strictTupleLength.symbols b/tests/baselines/reference/strictTupleLength.symbols new file mode 100644 index 00000000000..e81697b84bf --- /dev/null +++ b/tests/baselines/reference/strictTupleLength.symbols @@ -0,0 +1,66 @@ +=== tests/cases/conformance/types/tuple/strictTupleLength.ts === +var t0: []; +>t0 : Symbol(t0, Decl(strictTupleLength.ts, 0, 3)) + +var t1: [number]; +>t1 : Symbol(t1, Decl(strictTupleLength.ts, 1, 3), Decl(strictTupleLength.ts, 10, 3)) + +var t2: [number, number]; +>t2 : Symbol(t2, Decl(strictTupleLength.ts, 2, 3), Decl(strictTupleLength.ts, 11, 3)) + +var arr: number[]; +>arr : Symbol(arr, Decl(strictTupleLength.ts, 3, 3)) + +var len0: 0 = t0.length; +>len0 : Symbol(len0, Decl(strictTupleLength.ts, 5, 3)) +>t0.length : Symbol(length) +>t0 : Symbol(t0, Decl(strictTupleLength.ts, 0, 3)) +>length : Symbol(length) + +var len1: 1 = t1.length; +>len1 : Symbol(len1, Decl(strictTupleLength.ts, 6, 3)) +>t1.length : Symbol(length) +>t1 : Symbol(t1, Decl(strictTupleLength.ts, 1, 3), Decl(strictTupleLength.ts, 10, 3)) +>length : Symbol(length) + +var len2: 2 = t2.length; +>len2 : Symbol(len2, Decl(strictTupleLength.ts, 7, 3)) +>t2.length : Symbol(length) +>t2 : Symbol(t2, Decl(strictTupleLength.ts, 2, 3), Decl(strictTupleLength.ts, 11, 3)) +>length : Symbol(length) + +var lena: number = arr.length; +>lena : Symbol(lena, Decl(strictTupleLength.ts, 8, 3)) +>arr.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) +>arr : Symbol(arr, Decl(strictTupleLength.ts, 3, 3)) +>length : Symbol(Array.length, Decl(lib.d.ts, --, --)) + +var t1 = t2; // error +>t1 : Symbol(t1, Decl(strictTupleLength.ts, 1, 3), Decl(strictTupleLength.ts, 10, 3)) +>t2 : Symbol(t2, Decl(strictTupleLength.ts, 2, 3), Decl(strictTupleLength.ts, 11, 3)) + +var t2 = t1; // error +>t2 : Symbol(t2, Decl(strictTupleLength.ts, 2, 3), Decl(strictTupleLength.ts, 11, 3)) +>t1 : Symbol(t1, Decl(strictTupleLength.ts, 1, 3), Decl(strictTupleLength.ts, 10, 3)) + +type A = T['length']; +>A : Symbol(A, Decl(strictTupleLength.ts, 11, 12)) +>T : Symbol(T, Decl(strictTupleLength.ts, 13, 7)) +>T : Symbol(T, Decl(strictTupleLength.ts, 13, 7)) + +var b: A<[boolean]>; +>b : Symbol(b, Decl(strictTupleLength.ts, 14, 3)) +>A : Symbol(A, Decl(strictTupleLength.ts, 11, 12)) + +var c: 1 = b; +>c : Symbol(c, Decl(strictTupleLength.ts, 15, 3)) +>b : Symbol(b, Decl(strictTupleLength.ts, 14, 3)) + +t1 = arr; // error with or without strict +>t1 : Symbol(t1, Decl(strictTupleLength.ts, 1, 3), Decl(strictTupleLength.ts, 10, 3)) +>arr : Symbol(arr, Decl(strictTupleLength.ts, 3, 3)) + +arr = t1; // ok with or without strict +>arr : Symbol(arr, Decl(strictTupleLength.ts, 3, 3)) +>t1 : Symbol(t1, Decl(strictTupleLength.ts, 1, 3), Decl(strictTupleLength.ts, 10, 3)) + diff --git a/tests/baselines/reference/tupleLength.types b/tests/baselines/reference/strictTupleLength.types similarity index 61% rename from tests/baselines/reference/tupleLength.types rename to tests/baselines/reference/strictTupleLength.types index ce1c88d2a70..917c2f7db23 100644 --- a/tests/baselines/reference/tupleLength.types +++ b/tests/baselines/reference/strictTupleLength.types @@ -1,5 +1,7 @@ -=== tests/cases/compiler/tupleLength.ts === -// var t0: []; +=== tests/cases/conformance/types/tuple/strictTupleLength.ts === +var t0: []; +>t0 : [] + var t1: [number]; >t1 : [number] @@ -9,7 +11,12 @@ var t2: [number, number]; var arr: number[]; >arr : number[] -// var len0: 0 = t0.length; +var len0: 0 = t0.length; +>len0 : 0 +>t0.length : 0 +>t0 : [] +>length : 0 + var len1: 1 = t1.length; >len1 : 1 >t1.length : 1 @@ -49,3 +56,13 @@ var c: 1 = b; >c : 1 >b : 1 +t1 = arr; // error with or without strict +>t1 = arr : number[] +>t1 : [number] +>arr : number[] + +arr = t1; // ok with or without strict +>arr = t1 : [number] +>arr : number[] +>t1 : [number] + diff --git a/tests/baselines/reference/tupleLength.errors.txt b/tests/baselines/reference/tupleLength.errors.txt deleted file mode 100644 index 9b4b7fa52bc..00000000000 --- a/tests/baselines/reference/tupleLength.errors.txt +++ /dev/null @@ -1,26 +0,0 @@ -tests/cases/compiler/tupleLength.ts(11,5): error TS2403: Subsequent variable declarations must have the same type. Variable 't1' has type '[number]' at tests/cases/compiler/tupleLength.ts 1:4, but here has type '[number, number]'. -tests/cases/compiler/tupleLength.ts(12,5): error TS2403: Subsequent variable declarations must have the same type. Variable 't2' has type '[number, number]' at tests/cases/compiler/tupleLength.ts 2:4, but here has type '[number]'. - - -==== tests/cases/compiler/tupleLength.ts (2 errors) ==== - // var t0: []; - var t1: [number]; - var t2: [number, number]; - var arr: number[]; - - // var len0: 0 = t0.length; - var len1: 1 = t1.length; - var len2: 2 = t2.length; - var lena: number = arr.length; - - var t1 = t2; // error - ~~ -!!! error TS2403: Subsequent variable declarations must have the same type. Variable 't1' has type '[number]' at tests/cases/compiler/tupleLength.ts 1:4, but here has type '[number, number]'. - var t2 = t1; // error - ~~ -!!! error TS2403: Subsequent variable declarations must have the same type. Variable 't2' has type '[number, number]' at tests/cases/compiler/tupleLength.ts 2:4, but here has type '[number]'. - - type A = T['length']; - var b: A<[boolean]>; - var c: 1 = b; - \ No newline at end of file diff --git a/tests/baselines/reference/tupleLength.symbols b/tests/baselines/reference/tupleLength.symbols deleted file mode 100644 index f488185306d..00000000000 --- a/tests/baselines/reference/tupleLength.symbols +++ /dev/null @@ -1,51 +0,0 @@ -=== tests/cases/compiler/tupleLength.ts === -// var t0: []; -var t1: [number]; ->t1 : Symbol(t1, Decl(tupleLength.ts, 1, 3), Decl(tupleLength.ts, 10, 3)) - -var t2: [number, number]; ->t2 : Symbol(t2, Decl(tupleLength.ts, 2, 3), Decl(tupleLength.ts, 11, 3)) - -var arr: number[]; ->arr : Symbol(arr, Decl(tupleLength.ts, 3, 3)) - -// var len0: 0 = t0.length; -var len1: 1 = t1.length; ->len1 : Symbol(len1, Decl(tupleLength.ts, 6, 3)) ->t1.length : Symbol(length) ->t1 : Symbol(t1, Decl(tupleLength.ts, 1, 3), Decl(tupleLength.ts, 10, 3)) ->length : Symbol(length) - -var len2: 2 = t2.length; ->len2 : Symbol(len2, Decl(tupleLength.ts, 7, 3)) ->t2.length : Symbol(length) ->t2 : Symbol(t2, Decl(tupleLength.ts, 2, 3), Decl(tupleLength.ts, 11, 3)) ->length : Symbol(length) - -var lena: number = arr.length; ->lena : Symbol(lena, Decl(tupleLength.ts, 8, 3)) ->arr.length : Symbol(Array.length, Decl(lib.d.ts, --, --)) ->arr : Symbol(arr, Decl(tupleLength.ts, 3, 3)) ->length : Symbol(Array.length, Decl(lib.d.ts, --, --)) - -var t1 = t2; // error ->t1 : Symbol(t1, Decl(tupleLength.ts, 1, 3), Decl(tupleLength.ts, 10, 3)) ->t2 : Symbol(t2, Decl(tupleLength.ts, 2, 3), Decl(tupleLength.ts, 11, 3)) - -var t2 = t1; // error ->t2 : Symbol(t2, Decl(tupleLength.ts, 2, 3), Decl(tupleLength.ts, 11, 3)) ->t1 : Symbol(t1, Decl(tupleLength.ts, 1, 3), Decl(tupleLength.ts, 10, 3)) - -type A = T['length']; ->A : Symbol(A, Decl(tupleLength.ts, 11, 12)) ->T : Symbol(T, Decl(tupleLength.ts, 13, 7)) ->T : Symbol(T, Decl(tupleLength.ts, 13, 7)) - -var b: A<[boolean]>; ->b : Symbol(b, Decl(tupleLength.ts, 14, 3)) ->A : Symbol(A, Decl(tupleLength.ts, 11, 12)) - -var c: 1 = b; ->c : Symbol(c, Decl(tupleLength.ts, 15, 3)) ->b : Symbol(b, Decl(tupleLength.ts, 14, 3)) - diff --git a/tests/cases/compiler/tupleLength.ts b/tests/cases/conformance/types/tuple/strictTupleLength.ts similarity index 70% rename from tests/cases/compiler/tupleLength.ts rename to tests/cases/conformance/types/tuple/strictTupleLength.ts index 3c6db1a034a..bfae662cd7c 100644 --- a/tests/cases/compiler/tupleLength.ts +++ b/tests/cases/conformance/types/tuple/strictTupleLength.ts @@ -1,11 +1,11 @@ // @strictTuples: true -// var t0: []; +var t0: []; var t1: [number]; var t2: [number, number]; var arr: number[]; -// var len0: 0 = t0.length; +var len0: 0 = t0.length; var len1: 1 = t1.length; var len2: 2 = t2.length; var lena: number = arr.length; @@ -16,3 +16,6 @@ var t2 = t1; // error type A = T['length']; var b: A<[boolean]>; var c: 1 = b; + +t1 = arr; // error with or without strict +arr = t1; // ok with or without strict