Repository navigation
Conversation
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.
PendingAwaitablePageis documented as@mixin Webpage|AwaitableWebpage. Static analysers can't use that:Psalm ignores a union mixin entirely, and PHPStan only exposes methods that exist on both types, so
AwaitableWebpage::page()is missing. At runtime__call()forwards every call to theAwaitableWebpage, which in turn forwards toWebpage.Refs pestphp/pest#2021. Same change as #183, which was closed because the problem wasn't clear; the issue has a reproduction for both tools.
Solution
The mixin now names the class
__call()really forwards to.AwaitableWebpagealready mixes inWebpage, so everyWebpagemethod still resolves, andpage()resolves too. With Psalm 6.19, Psalm 7.0 and PHPStan 2.3 the undefined-method errors above are gone.Fluent calls are still typed as
Webpagerather thanAwaitableWebpage; that comes fromAwaitableWebpage's own mixin and is left for a separate change (see the issue). 4.x has the same docblock if you want it backported.