@@ -17,6 +17,39 @@ public function sayLowercase(string $s): void
1717assertType ('lowercase-string ' , $ s );
1818}
1919
20+ /**
21+ * @param lowercase-string $s
22+ */
23+ public function sayLowercase2 (string $ s ): void
24+ {
25+ if ('' != $ s ) {
26+ assertType ('lowercase-string&non-empty-string ' , $ s );
27+ }
28+ assertType ('lowercase-string ' , $ s );
29+ }
30+
31+ /**
32+ * @param lowercase-string&non-empty-string $s
33+ */
34+ public function sayLowercase3 (string $ s ): void
35+ {
36+ if ($ s != '0 ' ) {
37+ assertType ('lowercase-string&non-falsy-string ' , $ s );
38+ }
39+ assertType ('lowercase-string&non-empty-string ' , $ s );
40+ }
41+
42+ /**
43+ * @param lowercase-string&non-empty-string $s
44+ */
45+ public function sayLowercase4 (string $ s ): void
46+ {
47+ if ('0 ' != $ s ) {
48+ assertType ('lowercase-string&non-falsy-string ' , $ s );
49+ }
50+ assertType ('lowercase-string&non-empty-string ' , $ s );
51+ }
52+
2053/**
2154 * @param uppercase-string $s
2255 */
@@ -28,6 +61,39 @@ public function sayUppercase(string $s): void
2861assertType ('uppercase-string ' , $ s );
2962}
3063
64+ /**
65+ * @param uppercase-string $s
66+ */
67+ public function sayUppercase2 (string $ s ): void
68+ {
69+ if ('' != $ s ) {
70+ assertType ('non-empty-string&uppercase-string ' , $ s );
71+ }
72+ assertType ('uppercase-string ' , $ s );
73+ }
74+
75+ /**
76+ * @param uppercase-string&non-empty-string $s
77+ */
78+ public function sayUppercase3 (string $ s ): void
79+ {
80+ if ($ s != '0 ' ) {
81+ assertType ('non-falsy-string&uppercase-string ' , $ s );
82+ }
83+ assertType ('non-empty-string&uppercase-string ' , $ s );
84+ }
85+
86+ /**
87+ * @param uppercase-string&non-empty-string $s
88+ */
89+ public function sayUppercase4 (string $ s ): void
90+ {
91+ if ('0 ' != $ s ) {
92+ assertType ('non-falsy-string&uppercase-string ' , $ s );
93+ }
94+ assertType ('non-empty-string&uppercase-string ' , $ s );
95+ }
96+
3197/**
3298 * @param lowercase-string&uppercase-string $s
3399 */
@@ -38,4 +104,37 @@ public function sayBoth(string $s): void
38104}
39105assertType ('lowercase-string&uppercase-string ' , $ s );
40106}
107+
108+ /**
109+ * @param lowercase-string&uppercase-string $s
110+ */
111+ public function sayBoth2 (string $ s ): void
112+ {
113+ if ('' != $ s ) {
114+ assertType ('lowercase-string&non-empty-string&uppercase-string ' , $ s );
115+ }
116+ assertType ('lowercase-string&uppercase-string ' , $ s );
117+ }
118+
119+ /**
120+ * @param lowercase-string&uppercase-string&non-empty-string $s
121+ */
122+ public function sayBoth3 (string $ s ): void
123+ {
124+ if ($ s != '0 ' ) {
125+ assertType ('lowercase-string&non-falsy-string&uppercase-string ' , $ s );
126+ }
127+ assertType ('lowercase-string&non-empty-string&uppercase-string ' , $ s );
128+ }
129+
130+ /**
131+ * @param lowercase-string&uppercase-string&non-empty-string $s
132+ */
133+ public function sayBoth4 (string $ s ): void
134+ {
135+ if ('0 ' != $ s ) {
136+ assertType ('lowercase-string&non-falsy-string&uppercase-string ' , $ s );
137+ }
138+ assertType ('lowercase-string&non-empty-string&uppercase-string ' , $ s );
139+ }
41140}
0 commit comments