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

Fix class-string<*> being supertype of any string literal #2707

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
jrmajor wants to merge 8 commits into phpstan:1.10.x
base: 1.10.x
Choose a base branch
Loading
from jrmajor:fix-class-string-supertype

Conversation

@jrmajor
Copy link
Contributor

@jrmajor jrmajor commented Oct 31, 2023

Copy link
Collaborator

You've opened the pull request against the latest branch 1.11.x. If your code is relevant on 1.10.x and you want it to be released sooner, please rebase your pull request and change its target to 1.10.x.

@jrmajor jrmajor changed the base branch from 1.11.x to 1.10.x October 31, 2023 15:13
@jrmajor jrmajor force-pushed the fix-class-string-supertype branch from c0c711b to 428ba86 Compare October 31, 2023 15:22
Copy link
Member

Hi, changes to isSuperTypeOf need to be verified in TypeCombinatorTest::testUnion and testIntersect. So please add some cases to the data providers there.

You need to test expectations with different types that should hit different branches in that method.

Thank you.

@jrmajor jrmajor marked this pull request as ready for review October 31, 2023 15:40
Copy link
Collaborator

This pull request has been marked as ready for review.

Copy link
Contributor Author

jrmajor commented Oct 31, 2023

Hi, thank you for such a quick reply :)

You need to test expectations with different types that should hit different branches in that method.

Are the tests that I've added sufficient, or do I need to add some for the branches that I didn't touch too?

Copy link
Member

@ondrejmirtes ondrejmirtes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After these changes it will be good to merge 👍

)),
],
ConstantStringType::class,
"'Exception'",
Copy link
Member

@ondrejmirtes ondrejmirtes Oct 31, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please test intersection with 'array' too - should be NeverType.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixing the test for phpstan/phpstan#6697 would make it 'array'&class-string<T (function foo(), parameter)> instead of never, because we would need to assume that 'array' may be name of a class PHPStan doesn't know about. What should I do about that?

@jrmajor jrmajor force-pushed the fix-class-string-supertype branch from c038852 to a293912 Compare October 31, 2023 19:30
Copy link
Contributor Author

jrmajor commented Oct 31, 2023

This broke the test for phpstan/phpstan#6697. Not sure what to do here. Fixing phpstan/phpstan#10076 requires assuming that constant string is not a class-string unless PHPStan knows about that class, while phpstan/phpstan#6697 relies on the assumption that constant string may be a name of a class that PHPStan doesn't know about.

Copy link
Contributor Author

jrmajor commented Dec 15, 2023

@ondrejmirtes Friendly ping, I need your decision here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@ondrejmirtes ondrejmirtes ondrejmirtes requested changes

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Union of string literal and class-string<T> does not accept that string

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