diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts
index 2490c32fedc..bff0c137e24 100644
--- a/src/compiler/checker.ts
+++ b/src/compiler/checker.ts
@@ -9412,7 +9412,10 @@ module ts {
}
if (isArrayLikeType(inputType)) {
- return getIndexTypeOfType(inputType, IndexKind.Number);
+ let indexType = getIndexTypeOfType(inputType, IndexKind.Number);
+ if (indexType) {
+ return indexType;
+ }
}
error(errorNode, Diagnostics.Type_0_is_not_an_array_type, typeToString(inputType));
diff --git a/src/services/services.ts b/src/services/services.ts
index 1d006e0b14c..fe5be09244d 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -3109,6 +3109,7 @@ module ts {
case SyntaxKind.SemicolonToken:
return containingNodeKind === SyntaxKind.PropertySignature &&
+ previousToken.parent && previousToken.parent.parent &&
(previousToken.parent.parent.kind === SyntaxKind.InterfaceDeclaration || // interface a { f; |
previousToken.parent.parent.kind === SyntaxKind.TypeLiteral); // let x : { a; |
@@ -3124,7 +3125,8 @@ module ts {
case SyntaxKind.DotDotDotToken:
return containingNodeKind === SyntaxKind.Parameter ||
containingNodeKind === SyntaxKind.Constructor ||
- (previousToken.parent.parent.kind === SyntaxKind.ArrayBindingPattern); // var [ ...z|
+ (previousToken.parent && previousToken.parent.parent &&
+ previousToken.parent.parent.kind === SyntaxKind.ArrayBindingPattern); // var [ ...z|
case SyntaxKind.PublicKeyword:
case SyntaxKind.PrivateKeyword:
diff --git a/tests/baselines/reference/assignmentLHSIsValue.errors.txt b/tests/baselines/reference/assignmentLHSIsValue.errors.txt
index cf747b44b3e..a8a57090fb8 100644
--- a/tests/baselines/reference/assignmentLHSIsValue.errors.txt
+++ b/tests/baselines/reference/assignmentLHSIsValue.errors.txt
@@ -14,6 +14,7 @@ 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.
@@ -38,7 +39,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 (38 errors) ====
+==== tests/cases/conformance/expressions/assignmentOperator/assignmentLHSIsValue.ts (39 errors) ====
// expected error for all the LHS of assignments
var value;
@@ -109,6 +110,8 @@ 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/fourslash/completionAfterDotDotDot.ts b/tests/cases/fourslash/completionAfterDotDotDot.ts
new file mode 100644
index 00000000000..10c2d39b8cb
--- /dev/null
+++ b/tests/cases/fourslash/completionAfterDotDotDot.ts
@@ -0,0 +1,6 @@
+///
+
+////.../**/
+
+goTo.marker();
+verify.not.completionListIsEmpty();
\ No newline at end of file
diff --git a/tests/cases/fourslash/completionInIncompleteCallExpression.ts b/tests/cases/fourslash/completionInIncompleteCallExpression.ts
new file mode 100644
index 00000000000..eda8cf14378
--- /dev/null
+++ b/tests/cases/fourslash/completionInIncompleteCallExpression.ts
@@ -0,0 +1,9 @@
+///
+
+////var array = [1, 2, 4]
+////function a4(x, y, z) { }
+////a4(.../**/
+
+
+goTo.marker();
+verify.not.completionListIsEmpty();
\ No newline at end of file