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