Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ffd297a

Browse files
committed
simplify diff
1 parent 7cb9f2c commit ffd297a

File tree

1 file changed

+41
-33
lines changed

1 file changed

+41
-33
lines changed

‎src/Analyser/MutatingScope.php‎

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3708,41 +3708,21 @@ private function enterAnonymousFunctionWithoutReflection(
37083708
foreach ($this->invalidateStaticExpressions($this->expressionTypes) as $exprString => $typeHolder) {
37093709
$expr = $typeHolder->getExpr();
37103710

3711-
if (
3712-
$expr instanceof PropertyFetch
3713-
&& $expr->name instanceof Node\Identifier
3714-
&& $expr->var instanceof Variable
3715-
&& is_string($expr->var->name)
3716-
&& $expr->var->name === 'this'
3717-
&& !$closure->static
3718-
&& $this->hasVariableType('this')->yes()
3719-
&& $this->phpVersion->supportsReadOnlyProperties()
3720-
) {
3721-
$propertyReflection = $this->propertyReflectionFinder->findPropertyReflectionFromNode($expr, $this);
3722-
if ($propertyReflection === null) {
3723-
continue;
3724-
}
3725-
$nativePropertyReflection = $propertyReflection->getNativeReflection();
3726-
if ($nativePropertyReflection === null || !$nativePropertyReflection->isReadOnly()) {
3727-
continue;
3728-
}
3729-
} else {
3730-
if ($expr instanceof Variable) {
3731-
continue;
3732-
}
3711+
if ($expr instanceof Variable) {
3712+
continue;
3713+
}
37333714

3734-
$variables = (new NodeFinder())->findInstanceOf([$expr], Variable::class);
3735-
if ($variables === [] && !$this->expressionTypeIsUnchangeable($typeHolder)) {
3736-
continue;
3737-
}
3715+
$variables = (new NodeFinder())->findInstanceOf([$expr], Variable::class);
3716+
if ($variables === [] && !$this->expressionTypeIsUnchangeable($typeHolder)) {
3717+
continue;
3718+
}
37383719

3739-
foreach ($variables as $variable) {
3740-
if (!is_string($variable->name)) {
3741-
continue 2;
3742-
}
3743-
if (!array_key_exists($variable->name, $nonRefVariableNames)) {
3744-
continue 2;
3745-
}
3720+
foreach ($variables as $variable) {
3721+
if (!is_string($variable->name)) {
3722+
continue 2;
3723+
}
3724+
if (!array_key_exists($variable->name, $nonRefVariableNames)) {
3725+
continue 2;
37463726
}
37473727
}
37483728

@@ -3753,6 +3733,34 @@ private function enterAnonymousFunctionWithoutReflection(
37533733
$node = new Variable('this');
37543734
$expressionTypes['$this'] = ExpressionTypeHolder::createYes($node, $this->getType($node));
37553735
$nativeTypes['$this'] = ExpressionTypeHolder::createYes($node, $this->getNativeType($node));
3736+
3737+
if ($this->phpVersion->supportsReadOnlyProperties()) {
3738+
foreach ($this->invalidateStaticExpressions($this->expressionTypes) as $exprString => $typeHolder) {
3739+
$expr = $typeHolder->getExpr();
3740+
3741+
if (
3742+
!$expr instanceof PropertyFetch
3743+
|| !$expr->name instanceof Node\Identifier
3744+
|| !$expr->var instanceof Variable
3745+
|| !is_string($expr->var->name)
3746+
|| $expr->var->name !== 'this'
3747+
) {
3748+
continue;
3749+
}
3750+
3751+
$propertyReflection = $this->propertyReflectionFinder->findPropertyReflectionFromNode($expr, $this);
3752+
if ($propertyReflection === null) {
3753+
continue;
3754+
}
3755+
3756+
$nativePropertyReflection = $propertyReflection->getNativeReflection();
3757+
if ($nativePropertyReflection === null || !$nativePropertyReflection->isReadOnly()) {
3758+
continue;
3759+
}
3760+
3761+
$expressionTypes[$exprString] = $typeHolder;
3762+
}
3763+
}
37563764
}
37573765

37583766
return $this->scopeFactory->create(

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /