1010class HelloWorld
1111{
1212/**
13+ * @param non-empty-string $nonEmptyString
14+ * @param non-empty-array $nonEmptyArray
1315 * @param true $true
1416 * @param false $false
1517 * @param 1 $one
@@ -22,8 +24,14 @@ class HelloWorld
2224 * @param array{} $emptyArr
2325 * @param 'php' $phpStr
2426 * @param '' $emptyStr
27+ * @param 'a'|'123'|'123.23' $unionMaybeNumeric
28+ * @param 1|2|3 $unionNumbers
29+ * @param 'a'|'b'|'c' $unionStrings
30+ * @param 'a'|'123'|123|array $unionMaybeArray
2531 */
2632public function sayTrue (
33+ $ nonEmptyString ,
34+ $ nonEmptyArray ,
2735$ true ,
2836$ false ,
2937$ one ,
@@ -35,9 +43,21 @@ public function sayTrue(
3543$ null ,
3644$ emptyArr ,
3745$ phpStr ,
38- $ emptyStr
46+ $ emptyStr ,
47+ array $ arr ,
48+ int $ int ,
49+ float $ float ,
50+ bool $ bool ,
51+ string $ string ,
52+ object $ obj ,
53+ $ unionMaybeNumeric ,
54+ $ unionNumbers ,
55+ $ unionStrings ,
56+ $ unionMaybeArray
3957): void
4058{
59+ assertType ('true ' , $ true == $ nonEmptyString );
60+ assertType ('true ' , $ true == $ nonEmptyArray );
4161assertType ('true ' , $ true == $ true );
4262assertType ('false ' , $ true == $ false );
4363assertType ('true ' , $ true == $ one );
@@ -50,9 +70,22 @@ public function sayTrue(
5070assertType ('false ' , $ true == $ emptyArr );
5171assertType ('true ' , $ true == $ phpStr );
5272assertType ('false ' , $ true == $ emptyStr );
73+ assertType ('bool ' , $ true == $ arr );
74+ assertType ('bool ' , $ true == $ int );
75+ assertType ('bool ' , $ true == $ float );
76+ assertType ('bool ' , $ true == $ bool );
77+ assertType ('bool ' , $ true == $ string );
78+ assertType ('true ' , $ true == $ obj );
79+ assertType ('true ' , $ true == new \stdClass ());
80+ assertType ('true ' , $ true == $ unionMaybeNumeric );
81+ assertType ('true ' , $ true == $ unionNumbers );
82+ assertType ('true ' , $ true == $ unionStrings );
83+ assertType ('bool ' , $ true == $ unionMaybeArray );
5384}
5485
5586/**
87+ * @param non-empty-string $nonEmptyString
88+ * @param non-empty-array $nonEmptyArray
5689 * @param true $true
5790 * @param false $false
5891 * @param 1 $one
@@ -65,8 +98,16 @@ public function sayTrue(
6598 * @param array{} $emptyArr
6699 * @param 'php' $phpStr
67100 * @param '' $emptyStr
101+ * @param array $arr
102+ * @param 'a'|'123'|'123.23' $unionMaybeNumeric
103+ * @param 1|2|3 $unionNumbers
104+ * @param 'a'|'b'|'c' $unionStrings
105+ * @param 'a'|'123'|123|array $unionMaybeArray
68106 */
69107public function sayFalse (
108+ $ nonEmptyString ,
109+ $ nonEmptyArray ,
110+ $ callable ,
70111$ true ,
71112$ false ,
72113$ one ,
@@ -78,9 +119,21 @@ public function sayFalse(
78119$ null ,
79120$ emptyArr ,
80121$ phpStr ,
81- $ emptyStr
122+ $ emptyStr ,
123+ array $ arr ,
124+ int $ int ,
125+ float $ float ,
126+ bool $ bool ,
127+ string $ string ,
128+ object $ obj ,
129+ $ unionMaybeNumeric ,
130+ $ unionNumbers ,
131+ $ unionStrings ,
132+ $ unionMaybeArray
82133): void
83134{
135+ assertType ('false ' , $ false == $ nonEmptyString );
136+ assertType ('false ' , $ false == $ nonEmptyArray );
84137assertType ('false ' , $ false == $ true );
85138assertType ('true ' , $ false == $ false );
86139assertType ('false ' , $ false == $ one );
@@ -93,6 +146,17 @@ public function sayFalse(
93146assertType ('true ' , $ false == $ emptyArr );
94147assertType ('false ' , $ false == $ phpStr );
95148assertType ('true ' , $ false == $ emptyStr );
149+ assertType ('bool ' , $ false == $ arr );
150+ assertType ('bool ' , $ false == $ int );
151+ assertType ('bool ' , $ false == $ float );
152+ assertType ('bool ' , $ false == $ bool );
153+ assertType ('bool ' , $ false == $ string );
154+ assertType ('false ' , $ false == $ obj );
155+ assertType ('false ' , $ false == new \stdClass ());
156+ assertType ('false ' , $ false == $ unionMaybeNumeric );
157+ assertType ('false ' , $ false == $ unionNumbers );
158+ assertType ('false ' , $ false == $ unionStrings );
159+ assertType ('bool ' , $ false == $ unionMaybeArray );
96160}
97161
98162/**
@@ -798,8 +862,8 @@ public function looseBool(
798862assertType ('bool ' , $ bool == $ float );
799863assertType ('true ' , $ bool == $ bool );
800864assertType ('bool ' , $ bool == $ string );
801- assertType ('true ' , $ bool == $ obj );
802- assertType ('true ' , $ bool == new \stdClass ());
865+ assertType ('bool ' , $ bool == $ obj );
866+ assertType ('bool ' , $ bool == new \stdClass ());
803867}
804868
805869/**
@@ -1054,8 +1118,8 @@ public function looseArray(
10541118$ unionStrings ,
10551119$ unionMaybeArray
10561120) {
1057- assertType ('true ' , $ arr == $ true );
1058- assertType ('false ' , $ arr == $ false );
1121+ assertType ('bool ' , $ arr == $ true );
1122+ assertType ('bool ' , $ arr == $ false );
10591123assertType ('false ' , $ arr == $ one );
10601124assertType ('false ' , $ arr == $ zero );
10611125assertType ('false ' , $ arr == 10 );
@@ -1129,15 +1193,16 @@ public function looseCallable(
11291193$ unionStrings ,
11301194$ unionMaybeArray
11311195) {
1196+ assertType ('bool ' , $ callable == 'myFunction ' );
11321197assertType ('true ' , $ callable == $ true );
11331198assertType ('false ' , $ callable == $ false );
11341199assertType ('true ' , $ callable == $ one );
11351200assertType ('false ' , $ callable == $ zero );
11361201assertType ('false ' , $ callable == 10 );
11371202assertType ('false ' , $ callable == $ minusOne );
1138- assertType ('false ' , $ callable == $ oneStr );
1139- assertType ('false ' , $ callable == $ zeroStr );
1140- assertType ('false ' , $ callable == $ minusOneStr );
1203+ assertType ('bool ' , $ callable == $ oneStr ); // could be false, because invalid function name
1204+ assertType ('bool ' , $ callable == $ zeroStr ); // could be false, because invalid function name
1205+ assertType ('bool ' , $ callable == $ minusOneStr ); // could be false, because invalid function name
11411206assertType ('false ' , $ callable == $ null );
11421207assertType ('false ' , $ callable == $ emptyArr );
11431208assertType ('bool ' , $ callable == $ phpStr );
@@ -1225,7 +1290,7 @@ public function looseUnion(
12251290assertType ('bool ' , $ unionMaybeNumeric == $ string );
12261291assertType ('false ' , $ unionMaybeNumeric == $ obj );
12271292assertType ('false ' , $ unionMaybeNumeric == new \stdClass ());
1228- assertType ('bool ' , $ unionMaybeNumeric == $ unionNumbers );
1293+ assertType ('false ' , $ unionMaybeNumeric == $ unionNumbers );
12291294assertType ('bool ' , $ unionMaybeNumeric == $ unionStrings );
12301295assertType ('bool ' , $ unionMaybeNumeric == $ unionMaybeArray );
12311296
@@ -1250,7 +1315,7 @@ public function looseUnion(
12501315assertType ('bool ' , $ unionNumbers == $ string );
12511316assertType ('bool ' , $ unionNumbers == $ obj );
12521317assertType ('bool ' , $ unionNumbers == new \stdClass ());
1253- assertType ('bool ' , $ unionNumbers == $ unionMaybeNumeric );
1318+ assertType ('false ' , $ unionNumbers == $ unionMaybeNumeric );
12541319assertType ('false ' , $ unionNumbers == $ unionStrings );
12551320assertType ('bool ' , $ unionNumbers == $ unionMaybeArray );
12561321
@@ -1276,11 +1341,11 @@ public function looseUnion(
12761341assertType ('false ' , $ unionStrings == $ obj );
12771342assertType ('false ' , $ unionStrings == new \stdClass ());
12781343assertType ('bool ' , $ unionStrings == $ unionMaybeNumeric );
1279- assertType ('bool ' , $ unionStrings == $ unionNumbers );
1344+ assertType ('false ' , $ unionStrings == $ unionNumbers );
12801345assertType ('bool ' , $ unionStrings == $ unionMaybeArray );
12811346
1282- assertType ('true ' , $ unionMaybeArray == $ true );
1283- assertType ('false ' , $ unionMaybeArray == $ false );
1347+ assertType ('bool ' , $ unionMaybeArray == $ true );
1348+ assertType ('bool ' , $ unionMaybeArray == $ false );
12841349assertType ('false ' , $ unionMaybeArray == $ one );
12851350assertType ('false ' , $ unionMaybeArray == $ zero );
12861351assertType ('false ' , $ unionMaybeArray == 10 );
@@ -1302,7 +1367,7 @@ public function looseUnion(
13021367assertType ('false ' , $ unionMaybeArray == $ obj );
13031368assertType ('false ' , $ unionMaybeArray == new \stdClass ());
13041369assertType ('bool ' , $ unionMaybeArray == $ unionMaybeNumeric );
1305- assertType ('bool ' , $ unionMaybeArray == $ unionNumbers );
1370+ assertType ('false ' , $ unionMaybeArray == $ unionNumbers );
13061371assertType ('bool ' , $ unionMaybeArray == $ unionStrings );
13071372}
13081373
@@ -1357,7 +1422,7 @@ public function looseIntersection(
13571422$ unionMaybeArray
13581423) {
13591424assertType ('bool ' , $ nonEmptyString == $ true );
1360- assertType ('bool ' , $ nonEmptyString == $ false );
1425+ assertType ('false ' , $ nonEmptyString == $ false );
13611426assertType ('bool ' , $ nonEmptyString == $ one );
13621427assertType ('bool ' , $ nonEmptyString == $ zero );
13631428assertType ('bool ' , $ nonEmptyString == 10 );
@@ -1411,3 +1476,5 @@ public function looseIntersection(
14111476assertType ('bool ' , $ nonEmptyArray == $ unionMaybeArray );
14121477}
14131478}
1479+
1480+ function myFunction () {}
0 commit comments