-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Replace RenderBox.compute* with RenderBox.get* and add @visibleForOverriding
#145503
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
Replace RenderBox.compute* with RenderBox.get* and add @visibleForOverriding
#145503
Conversation
1fb4212 to
9313411
Compare
RenderBox.compute* with RenderBox.get* and enforce it in the frameworkRenderBox.compute* with RenderBox.get* and add @visibleForOverriding
ffb572a to
0a4d005
Compare
goderbauer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Looks like we had more violations than expected...
| for (final MapEntry<ResolvedUnitResult, List<(AstNode, String)>> entry in _errors.entries) | ||
| for (final (AstNode node, String suggestion) in entry.value) | ||
| '${locationInFile(entry.key, node, workingDirectory)}: ${node.parent}. Consider calling $suggestion instead.', | ||
| '\n${bold}Typically the get* methods should be used to compute the intrinsics of a RenderBox.$reset', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe: compute -> obtain? (It sounds odd to say don't use the compute* methods to compute the thing)
| // Framework naming convention: a RenderObject subclass names have "Render" in its name. | ||
| if (!interfaceElement.name.contains('Render')) { | ||
| return false; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why this shortcut? Can we not just check if it inherits from RenderBox?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The only way I found for checking the "implements" relationship is to traverse the subclass hierarchy so it's a small optimization to reduce the number of branches to check.
|
auto label is removed for flutter/flutter/145503, due to - The status or check suite Google testing has failed. Please fix the issues identified (or deflake) before re-applying this label. |
…visibleForOverriding` (flutter/flutter#145503)
…visibleForOverriding` (flutter/flutter#145503)
…visibleForOverriding` (flutter/flutter#145503)
flutter/flutter@18340ea...14774b9 2024-03-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from eba6e31498b8 to 09dadce76828 (1 revision) (flutter/flutter#145603) 2024-03-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from f9a34ae0b14f to eba6e31498b8 (1 revision) (flutter/flutter#145598) 2024-03-22 nate.w5687@gmail.com Intensive `if` chain refactoring (flutter/flutter#145194) 2024-03-22 leroux_bruno@yahoo.fr Adds numpad navigation shortcuts for Linux (flutter/flutter#145464) 2024-03-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from 5a12de1beab7 to f9a34ae0b14f (1 revision) (flutter/flutter#145581) 2024-03-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from e2f324beac3b to 5a12de1beab7 (1 revision) (flutter/flutter#145578) 2024-03-22 31859944+LongCatIsLooong@users.noreply.github.com Replace `RenderBox.compute*` with `RenderBox.get*` and add `@visibleForOverriding` (flutter/flutter#145503) 2024-03-22 gspencergoog@users.noreply.github.com Add some cross references in the docs, move an example to a dartpad example (flutter/flutter#145571) 2024-03-22 bernaferrari2@gmail.com Fix `BorderSide.none` requiring explicit transparent color for `UnderlineInputBorder` (flutter/flutter#145329) 2024-03-22 engine-flutter-autoroll@skia.org Roll Flutter Engine from a46a7b273a5b to e2f324beac3b (1 revision) (flutter/flutter#145576) 2024-03-21 goderbauer@google.com Fix nullability of getFullHeightForCaret (flutter/flutter#145554) 2024-03-21 34871572+gmackall@users.noreply.github.com Add a `--no-gradle-generation` mode to the `generate_gradle_lockfiles.dart` script (flutter/flutter#145568) 2024-03-21 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1b842ae58b3d to a46a7b273a5b (2 revisions) (flutter/flutter#145569) 2024-03-21 chingjun@google.com Fixed race condition in PollingDeviceDiscovery. (flutter/flutter#145506) 2024-03-21 engine-flutter-autoroll@skia.org Roll Flutter Engine from a2ed373fa70f to 1b842ae58b3d (1 revision) (flutter/flutter#145565) 2024-03-21 ian@hixie.ch Clarify AutomaticKeepAliveClientMixin semantics in build method (flutter/flutter#145297) 2024-03-21 goderbauer@google.com Eliminate more window singleton usages (flutter/flutter#145560) 2024-03-21 jacksongardner@google.com `flutter test --wasm` support (flutter/flutter#145347) 2024-03-21 engine-flutter-autoroll@skia.org Roll Flutter Engine from eb262e9c34db to a2ed373fa70f (2 revisions) (flutter/flutter#145556) 2024-03-21 engine-flutter-autoroll@skia.org Roll Flutter Engine from bad4a30e1c75 to eb262e9c34db (1 revision) (flutter/flutter#145555) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC camillesimon@google.com,rmistry@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…visibleForOverriding` (flutter/flutter#145503)
@visibleForOverriding+@protectedunfortunately does not catch the case where acompute*method was overridden in a subtype and the overide was called in that same type's implementation.I did not add a
flutter_ignorefor this because it doesn't seem there will be false positives.Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.