@@ -244,6 +244,16 @@ public function getReferencedClasses(): array
244244 }
245245 }
246246
247+ if ($ this ->unsealed !== null ) {
248+ [$ unsealedKeyType , $ unsealedValueType ] = $ this ->unsealed ;
249+ foreach ($ unsealedKeyType ->getReferencedClasses () as $ referencedClass ) {
250+ $ referencedClasses [] = $ referencedClass ;
251+ }
252+ foreach ($ unsealedValueType ->getReferencedClasses () as $ referencedClass ) {
253+ $ referencedClasses [] = $ referencedClass ;
254+ }
255+ }
256+
247257 return $ referencedClasses ;
248258 }
249259
@@ -851,6 +861,25 @@ public function equals(Type $type): bool
851861 return false ;
852862 }
853863
864+ // Both `unsealed === null` and `unsealed === [explicitNever, explicitNever]`
865+ // mean "sealed", just from different code paths (pre-bleeding-edge vs.
866+ // fresh bleeding-edge builder). Treat them as equivalent here, only
867+ // comparing the actual extras when both sides have real ones.
868+ $ thisIsSealed = $ this ->isUnsealed ()->no ();
869+ $ otherIsSealed = $ type ->isUnsealed ()->no ();
870+ if ($ thisIsSealed !== $ otherIsSealed ) {
871+ return false ;
872+ }
873+
874+ if (!$ thisIsSealed && $ this ->unsealed !== null && $ type ->unsealed !== null ) {
875+ if (!$ this ->unsealed [0 ]->equals ($ type ->unsealed [0 ])) {
876+ return false ;
877+ }
878+ if (!$ this ->unsealed [1 ]->equals ($ type ->unsealed [1 ])) {
879+ return false ;
880+ }
881+ }
882+
854883 return true ;
855884 }
856885
@@ -2152,6 +2181,16 @@ public function getReferencedTemplateTypes(TemplateTypeVariance $positionVarianc
21522181 }
21532182 }
21542183
2184+ if ($ this ->unsealed !== null ) {
2185+ [$ unsealedKeyType , $ unsealedValueType ] = $ this ->unsealed ;
2186+ foreach ($ unsealedKeyType ->getReferencedTemplateTypes ($ variance ) as $ reference ) {
2187+ $ references [] = $ reference ;
2188+ }
2189+ foreach ($ unsealedValueType ->getReferencedTemplateTypes ($ variance ) as $ reference ) {
2190+ $ references [] = $ reference ;
2191+ }
2192+ }
2193+
21552194 return $ references ;
21562195 }
21572196
0 commit comments