From 9df95fee79811c6d55e9906fb739c2e53aae3649 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 21 Jun 2018 13:13:26 -0700 Subject: [PATCH] Expand better error messages to anonymous object types with identical type aliases. --- src/compiler/checker.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 08bd281532..92019736c3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -10862,15 +10862,13 @@ namespace ts { function findMatchingTypeReferenceOrTypeAliasReference(source: Type, unionTarget: UnionOrIntersectionType) { if (source.flags & TypeFlags.Object && (source as ObjectType).objectFlags & (ObjectFlags.Reference | ObjectFlags.Anonymous) && unionTarget.flags & TypeFlags.Union) { - return find(unionTarget.types, t => { - if (t.flags & TypeFlags.Object) { - if ((source as ObjectType).objectFlags & (t as ObjectType).objectFlags & ObjectFlags.Reference) { - return (source as TypeReference).target === (t as TypeReference).target; + return find(unionTarget.types, target => { + if (target.flags & TypeFlags.Object) { + if ((source as ObjectType).objectFlags & (target as ObjectType).objectFlags & ObjectFlags.Reference) { + return (source as TypeReference).target === (target as TypeReference).target; } - if ((source as ObjectType).objectFlags & (t as ObjectType).objectFlags & ObjectFlags.Anonymous) { - // TODO (drosen): Not sure why the following isn't sufficient. - // return !!(source as AnonymousType).aliasSymbol && (source as AnonymousType).aliasSymbol === (target as AnonymousType).aliasSymbol; - return false; + if ((source as ObjectType).objectFlags & (target as ObjectType).objectFlags & ObjectFlags.Anonymous) { + return !!(source as AnonymousType).aliasSymbol && (source as AnonymousType).aliasSymbol === (target as AnonymousType).aliasSymbol; } } return false;