@@ -729,6 +729,8 @@ public function sayInt(
729
729
array $ array ,
730
730
int $ int ,
731
731
int $ intRange ,
732
+ string $ emptyStr ,
733
+ string $ phpStr ,
732
734
): void
733
735
{
734
736
assertType ('bool ' , $ int == $ true );
@@ -747,19 +749,37 @@ public function sayInt(
747
749
assertType ('false ' , $ intRange == $ emptyArr );
748
750
assertType ('false ' , $ intRange == $ array );
749
751
752
+ assertType ('false ' , 5 == $ emptyArr );
753
+ assertType ('false ' , $ emptyArr == 5 );
754
+ assertType ('false ' , 5 == $ array );
755
+ assertType ('false ' , $ array == 5 );
756
+ assertType ('false ' , [] == 5 );
757
+ assertType ('false ' , 5 == []);
758
+
759
+ assertType ('false ' , 5 == $ emptyStr );
760
+ assertType ('false ' , 5 == $ phpStr );
761
+ assertType ('false ' , 5 == 'a ' );
762
+
763
+ assertType ('false ' , $ emptyStr == 5 );
764
+ assertType ('false ' , $ phpStr == 5 );
765
+ assertType ('false ' , 'a ' == 5 );
750
766
}
751
767
752
768
/**
753
769
* @param true|1|"1" $looseOne
754
770
* @param false|0|"0" $looseZero
755
771
* @param false|1 $constMix
756
772
* @param "abc"|"def" $constNonFalsy
773
+ * @param array{abc: string, num?: int, nullable: ?string} $arrShape
774
+ * @param array{} $emptyArr
757
775
*/
758
776
public function sayConstUnion (
759
777
$ looseOne ,
760
778
$ looseZero ,
761
779
$ constMix ,
762
780
$ constNonFalsy ,
781
+ array $ arrShape ,
782
+ array $ emptyArr
763
783
): void
764
784
{
765
785
assertType ('true ' , $ looseOne == 1 );
@@ -802,13 +822,22 @@ public function sayConstUnion(
802
822
assertType ('false ' , $ constNonFalsy == "1 " );
803
823
assertType ('false ' , $ constNonFalsy == "0 " );
804
824
assertType ('false ' , $ constNonFalsy == []);
825
+
826
+ assertType ('false ' , $ emptyArr == $ looseOne );
827
+ assertType ('bool ' , $ emptyArr == $ constMix );
828
+ assertType ('bool ' , $ emptyArr == $ looseZero );
829
+
830
+ assertType ('bool ' , $ arrShape == $ looseOne );
831
+ assertType ('bool ' , $ arrShape == $ constMix );
832
+ assertType ('bool ' , $ arrShape == $ looseZero );
805
833
}
806
834
807
835
/**
808
836
* @param uppercase-string $upper
809
837
* @param lowercase-string $lower
810
838
* @param array{} $emptyArr
811
839
* @param non-empty-array $nonEmptyArr
840
+ * @param array{abc: string, num?: int, nullable: ?string} $arrShape
812
841
* @param int<10, 20> $intRange
813
842
*/
814
843
public function sayIntersection (
@@ -818,6 +847,7 @@ public function sayIntersection(
818
847
array $ emptyArr ,
819
848
array $ nonEmptyArr ,
820
849
array $ arr ,
850
+ array $ arrShape ,
821
851
int $ i ,
822
852
int $ intRange ,
823
853
): void
@@ -849,11 +879,24 @@ public function sayIntersection(
849
879
assertType ('false ' , $ nonEmptyArr == $ i );
850
880
assertType ('false ' , $ arr == $ intRange );
851
881
assertType ('false ' , $ nonEmptyArr == $ intRange );
852
- assertType ('bool ' , $ emptyArr == $ nonEmptyArr ); // should be false
882
+ assertType ('false ' , $ emptyArr == $ nonEmptyArr );
853
883
assertType ('false ' , $ nonEmptyArr == $ emptyArr );
854
884
assertType ('bool ' , $ arr == $ nonEmptyArr );
855
885
assertType ('bool ' , $ nonEmptyArr == $ arr );
856
886
887
+ assertType ('false ' , 5 == $ arr );
888
+ assertType ('false ' , $ arr == 5 );
889
+ assertType ('false ' , 5 == $ emptyArr );
890
+ assertType ('false ' , $ emptyArr == 5 );
891
+ assertType ('false ' , 5 == $ nonEmptyArr );
892
+ assertType ('false ' , $ nonEmptyArr == 5 );
893
+ assertType ('false ' , 5 == $ arrShape );
894
+ assertType ('false ' , $ arrShape == 5 );
895
+ if (count ($ arr ) > 0 ) {
896
+ assertType ('false ' , 5 == $ arr );
897
+ assertType ('false ' , $ arr == 5 );
898
+ }
899
+
857
900
assertType ('bool ' , '' == $ lower );
858
901
if ($ lower != '' ) {
859
902
assertType ('false ' , '' == $ lower );
0 commit comments