Skip to content

Commit 6568103

Browse files
committed
[BCB] Type generalization precision is now a required argument
1 parent 4e7d60d commit 6568103

9 files changed

+19
-19
lines changed

composer.lock

+8-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Analyser/MutatingScope.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -1118,7 +1118,7 @@ private function resolveType(Expr $node): Type
11181118
foreach ($rightTypes as $rightType) {
11191119
$resultType = $this->calculateFromScalars($node, $leftType, $rightType);
11201120
if ($generalize) {
1121-
$resultType = TypeUtils::generalizeType($resultType);
1121+
$resultType = TypeUtils::generalizeType($resultType, GeneralizePrecision::lessSpecific());
11221122
}
11231123
$resultTypes[] = $resultType;
11241124
}

src/Type/Constant/ConstantArrayType.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ public function toFloat(): Type
619619
return $this->toBoolean()->toFloat();
620620
}
621621

622-
public function generalize(?GeneralizePrecision $precision = null): Type
622+
public function generalize(GeneralizePrecision $precision): Type
623623
{
624624
if (count($this->keyTypes) === 0) {
625625
return $this;

src/Type/Constant/ConstantStringType.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -301,25 +301,25 @@ public function append(self $otherString): self
301301
return new self($this->getValue() . $otherString->getValue());
302302
}
303303

304-
public function generalize(?GeneralizePrecision $precision = null): Type
304+
public function generalize(GeneralizePrecision $precision): Type
305305
{
306306
if ($this->isClassString) {
307-
if ($precision !== null && $precision->isMoreSpecific()) {
307+
if ($precision->isMoreSpecific()) {
308308
return new ClassStringType();
309309
}
310310

311311
return new StringType();
312312
}
313313

314-
if ($this->getValue() !== '' && $precision !== null && $precision->isMoreSpecific()) {
314+
if ($this->getValue() !== '' && $precision->isMoreSpecific()) {
315315
return new IntersectionType([
316316
new StringType(),
317317
new AccessoryNonEmptyStringType(),
318318
new AccessoryLiteralStringType(),
319319
]);
320320
}
321321

322-
if ($precision !== null && $precision->isMoreSpecific()) {
322+
if ($precision->isMoreSpecific()) {
323323
return new IntersectionType([
324324
new StringType(),
325325
new AccessoryLiteralStringType(),

src/Type/ConstantType.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
interface ConstantType extends Type
77
{
88

9-
public function generalize(?GeneralizePrecision $precision = null): Type;
9+
public function generalize(GeneralizePrecision $precision): Type;
1010

1111
}

src/Type/IntegerRangeType.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ public function equals(Type $type): bool
269269
}
270270

271271

272-
public function generalize(?GeneralizePrecision $precision = null): Type
272+
public function generalize(GeneralizePrecision $precision): Type
273273
{
274274
return new parent();
275275
}

src/Type/NullType.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public function getValue()
4545
return null;
4646
}
4747

48-
public function generalize(?GeneralizePrecision $precision = null): Type
48+
public function generalize(GeneralizePrecision $precision): Type
4949
{
5050
return $this;
5151
}

src/Type/Traits/ConstantScalarTypeTrait.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public function isSmallerThanOrEqual(Type $otherType): TrinaryLogic
7272
return TrinaryLogic::createMaybe();
7373
}
7474

75-
public function generalize(?GeneralizePrecision $precision = null): Type
75+
public function generalize(GeneralizePrecision $precision): Type
7676
{
7777
return new parent();
7878
}

src/Type/TypeUtils.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ public static function getAnyArrays(Type $type): array
119119
return self::map(ArrayType::class, $type, true, false);
120120
}
121121

122-
public static function generalizeType(Type $type, ?GeneralizePrecision $precision = null): Type
122+
public static function generalizeType(Type $type, GeneralizePrecision $precision): Type
123123
{
124124
return TypeTraverser::map($type, static function (Type $type, callable $traverse) use ($precision): Type {
125125
if ($type instanceof ConstantType) {

0 commit comments

Comments
 (0)