@@ -759,7 +759,7 @@ void MakeLowerBoundInference(IType U, IType V)
759759 MakeLowerBoundInference ( arrU . ElementType , arrV . ElementType ) ;
760760 return ;
761761 }
762- else if ( arrU != null && IsGenericInterfaceImplementedByArray ( pV ) && arrU . Dimensions == 1 )
762+ else if ( arrU != null && pV . IsArrayInterfaceType ( ) && arrU . Dimensions == 1 )
763763 {
764764 MakeLowerBoundInference ( arrU . ElementType , pV . GetTypeArgument ( 0 ) ) ;
765765 return ;
@@ -829,23 +829,6 @@ void MakeLowerBoundInference(IType U, IType V)
829829 return ;
830830 }
831831 }
832-
833- static bool IsGenericInterfaceImplementedByArray ( ParameterizedType rt )
834- {
835- if ( rt == null || rt . TypeParameterCount != 1 )
836- return false ;
837- switch ( rt . GetDefinition ( ) ? . KnownTypeCode )
838- {
839- case KnownTypeCode . IEnumerableOfT :
840- case KnownTypeCode . ICollectionOfT :
841- case KnownTypeCode . IListOfT :
842- case KnownTypeCode . IReadOnlyCollectionOfT :
843- case KnownTypeCode . IReadOnlyListOfT :
844- return true ;
845- default :
846- return false ;
847- }
848- }
849832 #endregion
850833
851834 #region MakeUpperBoundInference (§7.5.2.10)
@@ -880,7 +863,7 @@ void MakeUpperBoundInference(IType U, IType V)
880863 MakeUpperBoundInference ( arrU . ElementType , arrV . ElementType ) ;
881864 return ;
882865 }
883- else if ( arrV != null && IsGenericInterfaceImplementedByArray ( pU ) && arrV . Dimensions == 1 )
866+ else if ( arrV != null && pU . IsArrayInterfaceType ( ) && arrV . Dimensions == 1 )
884867 {
885868 MakeUpperBoundInference ( pU . GetTypeArgument ( 0 ) , arrV . ElementType ) ;
886869 return ;
0 commit comments