Revert "Cache isWeakType computation"

This reverts commit 25a71c4de6.
This commit is contained in:
Anders Hejlsberg
2022-02-09 16:28:54 +01:00
parent 25a71c4de6
commit c427a46aff
2 changed files with 7 additions and 20 deletions
+7 -14
View File
@@ -20258,22 +20258,15 @@ namespace ts {
* and no required properties, call/construct signatures or index signatures
*/
function isWeakType(type: Type): boolean {
if (!(type.flags & (TypeFlags.Object | TypeFlags.Intersection))) {
return false;
if (type.flags & TypeFlags.Object) {
const resolved = resolveStructuredTypeMembers(type as ObjectType);
return resolved.callSignatures.length === 0 && resolved.constructSignatures.length === 0 && resolved.indexInfos.length === 0 &&
resolved.properties.length > 0 && every(resolved.properties, p => !!(p.flags & SymbolFlags.Optional));
}
if (!((type as ObjectType | IntersectionType).objectFlags & ObjectFlags.IsWeakTypeComputed)) {
let isWeak;
if (type.flags & TypeFlags.Object) {
const resolved = resolveStructuredTypeMembers(type as ObjectType);
isWeak = resolved.callSignatures.length === 0 && resolved.constructSignatures.length === 0 && resolved.indexInfos.length === 0 &&
resolved.properties.length > 0 && every(resolved.properties, p => !!(p.flags & SymbolFlags.Optional));
}
else {
isWeak = every((type as IntersectionType).types, isWeakType);
}
(type as ObjectType | IntersectionType).objectFlags |= ObjectFlags.IsWeakTypeComputed | (isWeak ? ObjectFlags.IsWeakType : 0);
if (type.flags & TypeFlags.Intersection) {
return every((type as IntersectionType).types, isWeakType);
}
return !!((type as ObjectType | IntersectionType).objectFlags & ObjectFlags.IsWeakType);
return false;
}
function hasCommonProperties(source: Type, target: Type, isComparingJsxAttributes: boolean) {
-6
View File
@@ -5360,12 +5360,6 @@ namespace ts {
IsNeverIntersectionComputed = 1 << 25, // IsNeverLike flag has been computed
/* @internal */
IsNeverIntersection = 1 << 26, // Intersection reduces to never
// Flags that require TypeFlags.Object or TypeFlags.Intersection
/* @internal */
IsWeakTypeComputed = 1 << 27,
/* @internal */
IsWeakType = 1 << 28,
}
/* @internal */