diff --git a/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php b/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php index c6504afff93..1d8c1308538 100644 --- a/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php +++ b/packages/NodeTypeResolver/PHPStan/Scope/PHPStanNodeScopeResolver.php @@ -451,15 +451,14 @@ private function resolveClassOrInterfaceScope( $classReflection = $this->reflectionProvider->getClass($className); } - $context = $this->privatesAccessor->getPrivateProperty($mutatingScope, 'context'); - try { - $this->privatesAccessor->setPrivateProperty($context, 'classReflection', $classReflection); return $mutatingScope->enterClass($classReflection); } catch (\PHPStan\ShouldNotHappenException) { - $this->privatesAccessor->setPrivateProperty($context, 'classReflection', null); } + $context = $this->privatesAccessor->getPrivateProperty($mutatingScope, 'context'); + $this->privatesAccessor->setPrivateProperty($context, 'classReflection', null); + return $mutatingScope->enterClass($classReflection); } diff --git a/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_inner_class.php.inc b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_inner_class.php.inc new file mode 100644 index 00000000000..3db4284261d --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_inner_class.php.inc @@ -0,0 +1,20 @@ +logged = $value; + } + }; + + echo $box->logged; + } +} diff --git a/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_pull_from_different_class.php.inc b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_pull_from_different_class.php.inc new file mode 100644 index 00000000000..ed12ee3ecc8 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/skip_pull_from_different_class.php.inc @@ -0,0 +1,14 @@ +property; + } +} diff --git a/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Source/DifferentClass.php b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Source/DifferentClass.php new file mode 100644 index 00000000000..7499b5e76ac --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Source/DifferentClass.php @@ -0,0 +1,10 @@ +