diff --git a/src/Analyser/MutatingScope.php b/src/Analyser/MutatingScope.php index a43ba35dda5..bde1d432d31 100644 --- a/src/Analyser/MutatingScope.php +++ b/src/Analyser/MutatingScope.php @@ -3562,6 +3562,9 @@ private function createConditionalExpressions( $typeGuards = []; foreach ($newVariableTypes as $exprString => $holder) { + if ($holder->getExpr() instanceof VirtualNode) { + continue; + } if (!array_key_exists($exprString, $mergedExpressionTypes)) { continue; } @@ -3588,6 +3591,9 @@ private function createConditionalExpressions( } foreach ($newVariableTypes as $exprString => $holder) { + if ($holder->getExpr() instanceof VirtualNode) { + continue; + } if ( array_key_exists($exprString, $mergedExpressionTypes) && $mergedExpressionTypes[$exprString]->equals($holder) diff --git a/tests/bench/data/bug-14452.php b/tests/bench/data/bug-14452.php new file mode 100644 index 00000000000..71a4852ccad --- /dev/null +++ b/tests/bench/data/bug-14452.php @@ -0,0 +1,102 @@ +getInt('flat_fee'), 2); + $minimum_cost = round($input->getInt('minimum_cost'), 2); + + if ($prestatie) { + $seconds = $seconds_worked = $input->getInt('seconds_worked'); + $minutes = $minutes_worked = $input->getInt('minutes_worked'); + $hours = $hours_worked = $input->getInt('hours_worked'); + + $minimum_seconds = $input->getInt('minimum_seconds'); + $minimum_minutes = $input->getInt('minimum_minutes'); + $minimum_hours = $input->getInt('minimum_hours'); + + if ($input->has('different_billing_time')) { + $different_billing_time = 1; + $seconds = $input->getInt('seconds'); + $minutes = $input->getInt('minutes'); + $hours = $input->getInt('hours'); + } + + $hourly_rate = round($input->getInt('hourly_rate'), 2); + + $subtotal = Shared::calculateThings( + $input->get('prestation_type'), + $hours, + $minutes, + $seconds, + $hourly_rate, + $flat_fee, + $minimum_cost, + ); + } + + $subtype = $prestatie ? $input->getInt('prestation_type') : $input->getInt('cost_type'); + assertType('int', $subtype); + assertType('float', $flat_fee); + assertType('float', $minimum_cost); +}