From cb9954bd20f12a0f4e02ac1145e68c7dcc207db0 Mon Sep 17 00:00:00 2001 From: Jason Freeman Date: Tue, 14 Apr 2015 17:12:53 -0700 Subject: [PATCH] The element/iterated type of any is any --- src/compiler/checker.ts | 4 ++++ .../reference/arrayAssignmentPatternWithAny.js | 9 +++++++++ .../reference/arrayAssignmentPatternWithAny.types | 13 +++++++++++++ .../reference/assignmentLHSIsValue.errors.txt | 5 +---- .../destructuring/arrayAssignmentPatternWithAny.ts | 3 +++ 5 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 tests/baselines/reference/arrayAssignmentPatternWithAny.js create mode 100644 tests/baselines/reference/arrayAssignmentPatternWithAny.types create mode 100644 tests/cases/conformance/es6/destructuring/arrayAssignmentPatternWithAny.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 047b2f13f52..af0a83156b5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -9416,6 +9416,10 @@ module ts { } function checkIteratedTypeOrElementType(inputType: Type, errorNode: Node, allowStringInput: boolean): Type { + if (inputType.flags & TypeFlags.Any) { + return inputType; + } + if (languageVersion >= ScriptTarget.ES6) { return checkIteratedType(inputType, errorNode) || anyType; } diff --git a/tests/baselines/reference/arrayAssignmentPatternWithAny.js b/tests/baselines/reference/arrayAssignmentPatternWithAny.js new file mode 100644 index 00000000000..c81b5f1f38d --- /dev/null +++ b/tests/baselines/reference/arrayAssignmentPatternWithAny.js @@ -0,0 +1,9 @@ +//// [arrayAssignmentPatternWithAny.ts] +var a: any; +var x: string; +[x] = a; + +//// [arrayAssignmentPatternWithAny.js] +var a; +var x; +x = a[0]; diff --git a/tests/baselines/reference/arrayAssignmentPatternWithAny.types b/tests/baselines/reference/arrayAssignmentPatternWithAny.types new file mode 100644 index 00000000000..0021ffc8ca3 --- /dev/null +++ b/tests/baselines/reference/arrayAssignmentPatternWithAny.types @@ -0,0 +1,13 @@ +=== tests/cases/conformance/es6/destructuring/arrayAssignmentPatternWithAny.ts === +var a: any; +>a : any, Symbol(a, Decl(arrayAssignmentPatternWithAny.ts, 0, 3)) + +var x: string; +>x : string, Symbol(x, Decl(arrayAssignmentPatternWithAny.ts, 1, 3)) + +[x] = a; +>[x] = a : any +>[x] : [string] +>x : string, Symbol(x, Decl(arrayAssignmentPatternWithAny.ts, 1, 3)) +>a : any, Symbol(a, Decl(arrayAssignmentPatternWithAny.ts, 0, 3)) + diff --git a/tests/baselines/reference/assignmentLHSIsValue.errors.txt b/tests/baselines/reference/assignmentLHSIsValue.errors.txt index a8a57090fb8..cf747b44b3e 100644 --- a/tests/baselines/reference/assignmentLHSIsValue.errors.txt +++ b/tests/baselines/reference/assignmentLHSIsValue.errors.txt @@ -14,7 +14,6 @@ tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(3 tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(31,1): error TS2364: Invalid left-hand side of assignment expression. tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(32,1): error TS2364: Invalid left-hand side of assignment expression. tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(35,9): error TS1128: Declaration or statement expected. -tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(38,1): error TS2461: Type 'any' is not an array type. tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(38,2): error TS2364: Invalid left-hand side of assignment expression. tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(38,6): error TS2364: Invalid left-hand side of assignment expression. tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(42,36): error TS1034: 'super' must be followed by an argument list or member access. @@ -39,7 +38,7 @@ tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(6 tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(70,1): error TS2364: Invalid left-hand side of assignment expression. -==== tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts (39 errors) ==== +==== tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts (38 errors) ==== // expected error for all the LHS of assignments var value; @@ -110,8 +109,6 @@ tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts(7 // array literals ['', ''] = value; - ~~~~~~~~ -!!! error TS2461: Type 'any' is not an array type. ~~ !!! error TS2364: Invalid left-hand side of assignment expression. ~~ diff --git a/tests/cases/conformance/es6/destructuring/arrayAssignmentPatternWithAny.ts b/tests/cases/conformance/es6/destructuring/arrayAssignmentPatternWithAny.ts new file mode 100644 index 00000000000..9ca6bd77eb7 --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/arrayAssignmentPatternWithAny.ts @@ -0,0 +1,3 @@ +var a: any; +var x: string; +[x] = a; \ No newline at end of file