The element/iterated type of any is any

This commit is contained in:
Jason Freeman 2015-04-14 17:12:53 -07:00
parent 8f57867601
commit cb9954bd20
5 changed files with 30 additions and 4 deletions

View File

@ -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;
}

View File

@ -0,0 +1,9 @@
//// [arrayAssignmentPatternWithAny.ts]
var a: any;
var x: string;
[x] = a;
//// [arrayAssignmentPatternWithAny.js]
var a;
var x;
x = a[0];

View File

@ -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))

View File

@ -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.
~~

View File

@ -0,0 +1,3 @@
var a: any;
var x: string;
[x] = a;