diff --git a/src/Reflection/InitializerExprTypeResolver.php b/src/Reflection/InitializerExprTypeResolver.php index dae4e11140..1eec9736d1 100644 --- a/src/Reflection/InitializerExprTypeResolver.php +++ b/src/Reflection/InitializerExprTypeResolver.php @@ -1192,17 +1192,16 @@ public function getMulType(Expr $left, Expr $right, callable $getTypeCallback): return TypeCombinator::union(...$resultTypes); } - $floatType = new FloatType(); $leftNumberType = $leftType->toNumber(); if ($leftNumberType instanceof ConstantIntegerType && $leftNumberType->getValue() === 0) { - if ($floatType->isSuperTypeOf($rightType)->yes()) { + if ($rightType->isFloat()->yes()) { return new ConstantFloatType(0.0); } return new ConstantIntegerType(0); } $rightNumberType = $rightType->toNumber(); if ($rightNumberType instanceof ConstantIntegerType && $rightNumberType->getValue() === 0) { - if ($floatType->isSuperTypeOf($leftType)->yes()) { + if ($leftType->isFloat()->yes()) { return new ConstantFloatType(0.0); } return new ConstantIntegerType(0); diff --git a/src/Type/ExponentiateHelper.php b/src/Type/ExponentiateHelper.php index 10da4dd484..fd65dc9e51 100644 --- a/src/Type/ExponentiateHelper.php +++ b/src/Type/ExponentiateHelper.php @@ -46,8 +46,7 @@ public static function exponentiate(Type $base, Type $exponent): Type } // exponentiation of a float, stays a float - $float = new FloatType(); - $isFloatBase = $float->isSuperTypeOf($base)->yes(); + $isFloatBase = $base->isFloat()->yes(); $isLooseZero = (new ConstantIntegerType(0))->isSuperTypeOf($exponent->toNumber()); if ($isLooseZero->yes()) {