From 167ebcd93b69707bf257ab31858f0e6b22528782 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 19 Apr 2021 22:35:11 -0700 Subject: [PATCH] Check type flags before checking multiple-meaning object flags (#43745) --- src/compiler/checker.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3479cdfa563..125a5be6cd6 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -4445,7 +4445,7 @@ namespace ts { } function isClassInstanceSide(type: Type) { - return !!type.symbol && !!(type.symbol.flags & SymbolFlags.Class) && (type === getDeclaredTypeOfClassOrInterface(type.symbol) || !!(getObjectFlags(type) & ObjectFlags.IsClassInstanceClone)); + return !!type.symbol && !!(type.symbol.flags & SymbolFlags.Class) && (type === getDeclaredTypeOfClassOrInterface(type.symbol) || (!!(type.flags & TypeFlags.Object) && !!(getObjectFlags(type) & ObjectFlags.IsClassInstanceClone))); } function createNodeBuilder() { @@ -11857,7 +11857,7 @@ namespace ts { } function elaborateNeverIntersection(errorInfo: DiagnosticMessageChain | undefined, type: Type) { - if (getObjectFlags(type) & ObjectFlags.IsNeverIntersection) { + if (type.flags & TypeFlags.Intersection && getObjectFlags(type) & ObjectFlags.IsNeverIntersection) { const neverProp = find(getPropertiesOfUnionOrIntersectionType(type), isDiscriminantWithNeverType); if (neverProp) { return chainDiagnosticMessages(errorInfo, Diagnostics.The_intersection_0_was_reduced_to_never_because_property_1_has_conflicting_types_in_some_constituents,