File tree Expand file tree Collapse file tree 5 files changed +242
-10
lines changed
tests/PHPStan/Type/Generic Expand file tree Collapse file tree 5 files changed +242
-10
lines changed Original file line number Diff line number Diff line change @@ -24,3 +24,4 @@ parameters:
24
24
nullContextForVoidReturningFunctions : true
25
25
unescapeStrings : true
26
26
duplicateStubs : true
27
+ invarianceComposition : true
Original file line number Diff line number Diff line change @@ -54,6 +54,7 @@ parameters:
54
54
nullContextForVoidReturningFunctions : false
55
55
unescapeStrings : false
56
56
duplicateStubs : false
57
+ invarianceComposition : false
57
58
fileExtensions :
58
59
- php
59
60
checkAdvancedIsset : false
@@ -271,6 +272,7 @@ parametersSchema:
271
272
nullContextForVoidReturningFunctions : bool ()
272
273
unescapeStrings : bool ()
273
274
duplicateStubs : bool ()
275
+ invarianceComposition : bool ()
274
276
])
275
277
fileExtensions : listOf (string ())
276
278
checkAdvancedIsset : bool ()
Original file line number Diff line number Diff line change 21
21
use PHPStan \Reflection \ReflectionProvider ;
22
22
use PHPStan \Reflection \ReflectionProviderStaticAccessor ;
23
23
use PHPStan \Type \Accessory \AccessoryArrayListType ;
24
+ use PHPStan \Type \Generic \TemplateTypeVariance ;
24
25
use Symfony \Component \Finder \Finder ;
25
26
use function array_diff_key ;
26
27
use function array_map ;
@@ -174,6 +175,7 @@ public static function postInitializeContainer(Container $container): void
174
175
175
176
BleedingEdgeToggle::setBleedingEdge ($ container ->getParameter ('featureToggles ' )['bleedingEdge ' ]);
176
177
AccessoryArrayListType::setListTypeEnabled ($ container ->getParameter ('featureToggles ' )['listType ' ]);
178
+ TemplateTypeVariance::setInvarianceCompositionEnabled ($ container ->getParameter ('featureToggles ' )['invarianceComposition ' ]);
177
179
}
178
180
179
181
public function clearOldContainers (string $ tempDirectory ): void
Original file line number Diff line number Diff line change @@ -21,6 +21,8 @@ class TemplateTypeVariance
21
21
/** @var self[] */
22
22
private static array $ registry ;
23
23
24
+ private static bool $ invarianceCompositionEnabled = false ;
25
+
24
26
private function __construct (private int $ value )
25
27
{
26
28
}
@@ -93,7 +95,7 @@ public function compose(self $other): self
93
95
return self ::createInvariant ();
94
96
}
95
97
96
- if ($ this ->invariant ()) {
98
+ if (self :: $ invarianceCompositionEnabled && $ this ->invariant ()) {
97
99
return self ::createInvariant ();
98
100
}
99
101
@@ -177,4 +179,9 @@ public static function __set_state(array $properties): self
177
179
return new self ($ properties ['value ' ]);
178
180
}
179
181
182
+ public static function setInvarianceCompositionEnabled (bool $ enabled ): void
183
+ {
184
+ self ::$ invarianceCompositionEnabled = $ enabled ;
185
+ }
186
+
180
187
}
You can’t perform that action at this time.
0 commit comments