From 5c4f145d6adb073e9f1dd9aeaaa6ac85da76f09e Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 29 Nov 2016 10:36:55 -0800 Subject: [PATCH] Change name of the function --- src/compiler/checker.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 5b3f789732b..47ea4442e9e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -3098,7 +3098,7 @@ namespace ts { let type: Type; if (pattern.kind === SyntaxKind.ObjectBindingPattern) { if (declaration.dotDotDotToken) { - if (isInvalidSpreadType(parentType)) { + if (!isValidSpreadType(parentType)) { error(declaration, Diagnostics.Rest_types_may_only_be_created_from_object_types); return unknownType; } @@ -11449,7 +11449,7 @@ namespace ts { typeFlags = 0; } const type = checkExpression((memberDecl as SpreadAssignment).expression); - if (!(type.flags & TypeFlags.Any) && isInvalidSpreadType(type)) { + if (!isValidSpreadType(type)) { error(memberDecl, Diagnostics.Spread_types_may_only_be_created_from_object_types); return unknownType; } @@ -11527,14 +11527,21 @@ namespace ts { } } - function isInvalidSpreadType(type: Type): boolean { + function isValidSpreadType(type: Type): boolean { + if (type.flags & TypeFlags.Any) { + return true; + } if (type.flags & TypeFlags.Object) { - return isGenericMappedType(type); + return !isGenericMappedType(type); } else if (type.flags & TypeFlags.UnionOrIntersection) { - return forEach((type).types, isInvalidSpreadType); + for (const t of (type).types) { + if (!isValidSpreadType(t)) { + return false; + } + } } - return true; + return false; } function checkJsxSelfClosingElement(node: JsxSelfClosingElement) {