Skip to content

[CodeQuality] Add EventSubscriberMethodReturnVoidRector#949

Merged
TomasVotruba merged 1 commit into
mainfrom
event-subscriber-void-return
Jun 26, 2026
Merged

[CodeQuality] Add EventSubscriberMethodReturnVoidRector#949
TomasVotruba merged 1 commit into
mainfrom
event-subscriber-void-return

Conversation

@TomasVotruba

Copy link
Copy Markdown
Member

Add new code quality rule EventSubscriberMethodReturnVoidRector.

Event subscriber methods that hook into an event must return void — the event is a class passed by reference, so returning it has no effect.

How it works

  1. Class implements EventSubscriberInterface and has getSubscribedEvents().
  2. Parses the getSubscribedEvents() return array to collect hook method names. Supports all formats:
    • 'event' => 'method'
    • 'event' => ['method', $priority]
    • 'event' => [['m1', 10], ['m2']]
  3. For each registered hook method that returns the event, sets return type to void and rewrites return $event->setX(...) into $event->setX(...) (keeping an early return; inside branches, dropping it on the final statement).
  4. Skips methods already void or returning a non-event value. Non-registered methods are left untouched.

Before

public function onEvent(SomeEvent $event): SomeEvent
{
    if (...) {
        return $event->setResult($response);
    }

    return $event->setFailed(...);
}

After

public function onEvent(SomeEvent $event): void
{
    if (...) {
        $event->setResult($response);
        return;
    }

    $event->setFailed(...);
}

Registered in the symfony-code-quality set.

@TomasVotruba TomasVotruba force-pushed the event-subscriber-void-return branch from 7e26f5e to 9a374b0 Compare June 26, 2026 10:36
@TomasVotruba TomasVotruba merged commit 56ff621 into main Jun 26, 2026
8 checks passed
@TomasVotruba TomasVotruba deleted the event-subscriber-void-return branch June 26, 2026 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant