[DeadCode] Keep empty method when parent class or interface is out of analyzed scope - #8433
Closed
TomasVotruba wants to merge 1 commit into
Closed
[DeadCode] Keep empty method when parent class or interface is out of analyzed scope#8433TomasVotruba wants to merge 1 commit into
TomasVotruba wants to merge 1 commit into
Conversation
… analyzed scope RemoveEmptyClassMethodRector removed an empty method whose abstract requirement lives in a parent class or interface outside the analyzed paths, because the reflection could not see it. Keep the method when the parent class cannot be resolved (protected override) or an implemented interface is out of scope. Fixes rectorphp/rector#9881 Claude-Session: https://claude.ai/code/session_01QswFbKfL2DRR9FTdAAKZPL
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes rectorphp/rector#9881
RemoveEmptyClassMethodRectorremoved an empty method whose abstract requirement lives in a parent class or interface located outside the analyzed paths. Reflection cannot see the out-of-scope parent, so the rule wrongly treated the method as unnecessary.Before (analyzing only the child directory,
AbstractPostingout of scope):was reduced to an empty class, breaking the abstract requirement.
Now the method is kept when:
protectedand the parent class cannot be resolved (typical abstract override), orPublic methods on classes extending an unresolvable framework base (e.g. Presenter/Controller) still get removed as before, so existing behavior is preserved.
https://claude.ai/code/session_01QswFbKfL2DRR9FTdAAKZPL