Skip to content

Commit 88f974a

Browse files
committed
Fix NewHandler
1 parent 07700d8 commit 88f974a

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/Analyser/Generator/ExprHandler/NewHandler.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ public function analyseExpr(
173173

174174
if ($constructorReflection !== null) {
175175
$storage = yield new PersistStorageRequest();
176+
yield new RestoreStorageRequest($storage);
176177
$parametersAcceptor = (yield new RunInFiberRequest(static fn () => ParametersAcceptorSelector::selectFromArgs(
177178
$scope,
178179
$expr->getArgs(),
@@ -230,6 +231,7 @@ private function processAnonymousClass(
230231
if ($classReflection->hasConstructor()) {
231232
$constructorReflection = $classReflection->getConstructor();
232233
$storage = yield new PersistStorageRequest();
234+
yield new RestoreStorageRequest($storage);
233235
$parametersAcceptor = (yield new RunInFiberRequest(static fn () => ParametersAcceptorSelector::selectFromArgs(
234236
$scope,
235237
$expr->getArgs(),
@@ -397,6 +399,7 @@ private function exactInstantiation(GeneratorScope $scope, New_ $node, Name $cla
397399
);
398400

399401
$storage = yield new PersistStorageRequest();
402+
yield new RestoreStorageRequest($storage);
400403
$parametersAcceptor = (yield new RunInFiberRequest(static fn () => ParametersAcceptorSelector::selectFromArgs(
401404
$scope,
402405
$methodCall->getArgs(),
@@ -424,8 +427,6 @@ private function exactInstantiation(GeneratorScope $scope, New_ $node, Name $cla
424427
}
425428
}
426429

427-
yield new RestoreStorageRequest($storage);
428-
429430
if (count($resolvedTypes) > 0) {
430431
return TypeCombinator::union(...$resolvedTypes);
431432
}
@@ -435,6 +436,8 @@ private function exactInstantiation(GeneratorScope $scope, New_ $node, Name $cla
435436
return $methodResult;
436437
}
437438

439+
yield new RestoreStorageRequest($storage);
440+
438441
$objectType = $isStatic ? new StaticType($classReflection) : new ObjectType($resolvedClassName, classReflection: $classReflection);
439442
if (!$classReflection->isGeneric()) {
440443
return $objectType;

tests/PHPStan/Analyser/Generator/data/gnsr.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,6 @@ public function __construct($a)
168168
}
169169

170170
function (): void {
171-
//$foo = new FooGeneric(5);
172-
//assertType('GeneratorNodeScopeResolverTest\\FooGeneric<int>', $foo);
171+
$foo = new FooGeneric(5);
172+
assertType('GeneratorNodeScopeResolverTest\\FooGeneric<int>', $foo);
173173
};

0 commit comments

Comments
 (0)