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

Enable the weak_delegate SwiftLint rule #21068

Merged
merged 2 commits into from
Jul 19, 2023
Merged

Conversation

crazytonyli
Copy link
Contributor

Fixes #21050.

The weak_delegate SwiftLint rule reports issues on all strong references to types whose name has 'Delegate' in it. Enabling this SwiftLint rule will help us catching retain cycles.

Majority of "delegate" types follow observer pattern, which should be declared as weak references. For those cases where the "delegate" should be strongly referenced, we can use SwiftLint's swiftlint:disable special code comments to ignore the issue.

Regression Notes

  1. Potential unintended areas of impact
    None.

  2. What I did to test those areas of impact (or what existing automated tests I relied on)
    None.

  3. What automated tests I added (or what prevented me from doing so)
    None.

PR submission checklist:

  • I have completed the Regression Notes.
  • I have considered adding unit tests for my changes.
  • I have considered adding accessibility improvements for my changes.
  • I have considered if this change warrants user-facing release notes and have added them to RELEASE-NOTES.txt if necessary.

UI Changes testing checklist: N/A

Copy link
Contributor

@staskus staskus left a comment

Choose a reason for hiding this comment

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

👍 Yes, yes, yes.

For those cases where the "delegate" should be strongly referenced, we can use SwiftLint's swiftlint:disable special code comments to ignore the issue.

Agree. Looking into the future, we should call something a delegate where it behaves as expectedly, especially in iOS ecosystem. This rule will ensure that.

I'm approving the change, the CI will do the rest.

As I understand the plan would be to merge it after dealing with all incorrectly non-weak delegates?

@crazytonyli
Copy link
Contributor Author

As I understand the plan would be to merge it after dealing with all incorrectly non-weak delegates?

Yes. I have addressed all the violations. Once all the PRs (all referenced in #21050) are merged, I'll get this PR out of draft state.

@crazytonyli crazytonyli marked this pull request as ready for review July 19, 2023 04:03
@crazytonyli crazytonyli force-pushed the enable-weak-delegate-rule branch from 6b8e224 to e662c7c Compare July 19, 2023 04:03
@crazytonyli crazytonyli enabled auto-merge July 19, 2023 04:04
@crazytonyli crazytonyli self-assigned this Jul 19, 2023
@crazytonyli crazytonyli added this to the 22.9 milestone Jul 19, 2023
@wpmobilebot
Copy link
Contributor

Jetpack Alpha📲 You can test the changes from this Pull Request in Jetpack Alpha by scanning the QR code below to install the corresponding build.
App NameJetpack Alpha Jetpack Alpha
ConfigurationRelease-Alpha
Build Numberpr21068-e662c7c
Version22.8
Bundle IDcom.jetpack.alpha
Commite662c7c
App Center Buildjetpack-installable-builds #5431
Automatticians: You can use our internal self-serve MC tool to give yourself access to App Center if needed.

@wpmobilebot
Copy link
Contributor

WordPress Alpha📲 You can test the changes from this Pull Request in WordPress Alpha by scanning the QR code below to install the corresponding build.
App NameWordPress Alpha WordPress Alpha
ConfigurationRelease-Alpha
Build Numberpr21068-e662c7c
Version22.8
Bundle IDorg.wordpress.alpha
Commite662c7c
App Center BuildWPiOS - One-Offs #6404
Automatticians: You can use our internal self-serve MC tool to give yourself access to App Center if needed.

@crazytonyli crazytonyli merged commit 01a59f7 into trunk Jul 19, 2023
@crazytonyli crazytonyli deleted the enable-weak-delegate-rule branch July 19, 2023 04:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Some "delegate" instances are incorrectly declared as strong references
3 participants