Skip to content
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

Immutable readonly atomics #8525

Merged
merged 260 commits into from Oct 19, 2022
Merged

Immutable readonly atomics #8525

merged 260 commits into from Oct 19, 2022

Conversation

danog
Copy link
Collaborator

@danog danog commented Sep 30, 2022

Based on #8449, this PR introduces fully immutable atomic types.
Next up on the roadmap, I just have

  • Fully immutable storages
  • (Maybe) Fully immutable Unions (as in, all properties should be immutable, not just types)
  • Remove excess clones

BenMorel and others added 30 commits July 11, 2022 11:51
Fix GEOSGeometry stubs with default values
… static methods inside a different class

differentiate between `static` defined in a class which CALLS a given static method, and `static` defined in the method which IS CALLED.
…xistingAtomicStaticCallAnalyzer::getMethodReturnType()
Adds support for fixing missing throws doc block
Fix nullable return types for CallMap functions
Improve inferring the "final" `static` type when calling static methods inside a different class
…fig-not-working

fix triggerErrorExits not working
Fixed ini_set types for arg value
…conditions

fix race conditions causing notices if directory does not exist
…pped in ExistingAtomicStaticCallAnalyzer#hasStaticInType()
vimeo#8330 - take into account that `static` type may have been unwrapped in `hasStaticInType()`
recognize `@psalm-allow-private-mutation` in PHP 8+ constructors
@danog
Copy link
Collaborator Author

danog commented Oct 14, 2022

Hi, are any other changes needed to merge this?
As you can see by the comment I left in psalm/endtoend-test-phpunit#6, this PR can be merged without breaking end-to-end tests, as long as the other PR is merged too.

@orklah
Copy link
Collaborator

orklah commented Oct 14, 2022

Hey! I'm just waiting because we need to merge 4.x into master before merging this and it can take some time. I'll try to do that this weekend

@danog
Copy link
Collaborator Author

danog commented Oct 14, 2022

Oh, all right then!
I could help with that if you want:

Actually, I wanted to ask if I could become maintainer: as you know, I regularly contribute to psalm and fixing&improving psalm is basically my main task @ work.
I could maybe directly start by merging 4.x into master & rebasing this PR, if that's OK for you :)

…-empty-strings

Add additional checks for concat of non-empty strings to return non-falsy
@orklah
Copy link
Collaborator

orklah commented Oct 15, 2022

Of course :)

Your help is very welcome!

I'll ask for you to get permissions :)

…meimmutable-sub

Correct return type of DateTimeImmutable sub method stub
@danog
Copy link
Collaborator Author

danog commented Oct 15, 2022

Yay!
Already working on the merge :)

@danog
Copy link
Collaborator Author

danog commented Oct 17, 2022

Yay, collaborator rights! :D
Still don't have merge rights, I suppose that's all right at the beginning, could you merge this @orklah now that 4.x is also merged into master? :)

@orklah orklah added the release:internal The PR will be included in 'Internal changes' section of the release notes label Oct 19, 2022
@orklah orklah merged commit e52b712 into vimeo:master Oct 19, 2022
@orklah
Copy link
Collaborator

orklah commented Oct 19, 2022

Thanks a lot for this huge work!

Sorry, I was not very available but this is very much appreciated :)

@danog
Copy link
Collaborator Author

danog commented Oct 19, 2022

Yay, thank you! 🎉
The next (and possibly final immutability-related) PR should be ready by this week, in the meantime could you also merge #8586?

Thanks again! :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release:internal The PR will be included in 'Internal changes' section of the release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet