From 8dc1747db7aae381b29b7f5f9d48d711f2df5ef5 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 13 Dec 2016 13:52:58 -0800 Subject: [PATCH] Set symbol/flags only on (fresh) object spreads If you spread any into an object, the type is any, which should not be changed. --- src/compiler/checker.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 686efaa758..4c9780faa7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11638,8 +11638,11 @@ namespace ts { if (propertiesArray.length > 0) { spread = getSpreadType(spread, createObjectLiteralType(), /*isFromObjectLiteral*/ true); } - spread.flags |= propagatedFlags; - spread.symbol = node.symbol; + if (spread.flags & TypeFlags.Object) { + // only set the symbol and flags if this is a (fresh) object type + spread.flags |= propagatedFlags; + spread.symbol = node.symbol; + } return spread; }