Skip to content

Commit

Permalink
[Visibility] Does not turn abstraction into static from implicit publ…
Browse files Browse the repository at this point in the history
…ic abstractions in ExplicitPublicClassMethodRector (#7483) (#2930)
  • Loading branch information
Goral64 committed Sep 16, 2022
1 parent cec7701 commit c119bba
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,4 @@ function notInScope()
{
}

?>
?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php

abstract class SomeAbstractClass
{
abstract function noExplicitVis();

abstract public function publicVis();

abstract protected function protectedVis();

abstract private function privateVis();

static function noExplicitVisStatic()
{
}

public static function publicVisStatic()
{
}

protected static function protectedVisStatic()
{
}

private static function privateVisStatic()
{
}
}

?>
-----
<?php

abstract class SomeAbstractClass
{
abstract public function noExplicitVis();

abstract public function publicVis();

abstract protected function protectedVis();

abstract private function privateVis();

public static function noExplicitVisStatic()
{
}

public static function publicVisStatic()
{
}

protected static function protectedVisStatic()
{
}

private static function privateVisStatic()
{
}
}

?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

final class SomeFinalClass
{
final function noExplicitVisFinal()
{
}
}

?>
-----
<?php

final class SomeFinalClass
{
final public function noExplicitVisFinal()
{
}
}

?>
19 changes: 16 additions & 3 deletions rules/Privatization/NodeManipulator/VisibilityManipulator.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,18 @@ public function makeStatic(ClassMethod | Property | ClassConst $node): void
$this->addVisibilityFlag($node, Visibility::STATIC);
}

/**
* @api
*/
public function makeNonStatic(ClassMethod | Property $node): void
{
if (! $node->isStatic()) {
return;
}

$node->flags -= Class_::MODIFIER_STATIC;
}

public function makeAbstract(ClassMethod | Class_ $node): void
{
$this->addVisibilityFlag($node, Visibility::ABSTRACT);
Expand All @@ -38,13 +50,13 @@ public function makeAbstract(ClassMethod | Class_ $node): void
/**
* @api
*/
public function makeNonStatic(ClassMethod | Property $node): void
public function makeNonAbstract(ClassMethod | Property $node): void
{
if (! $node->isStatic()) {
if (! $node instanceof ClassMethod || ! $node->isAbstract()) {
return;
}

$node->flags -= Class_::MODIFIER_STATIC;
$node->flags -= Class_::MODIFIER_ABSTRACT;
}

public function makeFinal(Class_ | ClassMethod | ClassConst $node): void
Expand Down Expand Up @@ -75,6 +87,7 @@ public function removeVisibility(ClassMethod | Property | ClassConst $node): voi
}

if ($node->isPublic()) {
$node->flags |= Class_::MODIFIER_PUBLIC;
$node->flags -= Class_::MODIFIER_PUBLIC;
}

Expand Down

0 comments on commit c119bba

Please sign in to comment.