-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Update foundation library to export internal #170563
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
Update foundation library to export internal #170563
Conversation
|
go_router will need to be updated before this can land: flutter/packages#9434 |
justinmc
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 👍
Could you explain in more detail why this has to be exported? I guess that since debugEnabledFeatureFlags will be marked as internal in your other PR, users that import debugEnabledFeatureFlags need to also import internal?
|
It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging. If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group. |
|
@justinmc Good question! I added this to the PR description:
It's not very clear to me why the Flutter framework has this |
|
test-exempt: code refactor with no semantic change (Based on Discord discussion, apparently the convention in the framework is that the exported surface is only important to the extent that it affects customer tests, and so even though this is effectively new public API, it's not something we directly enforce via tests.) |
8293502 to
52c5977
Compare
|
@loic-sharma Just checking on this PR from triage, let me know if anything is still needed. |
|
Nope, this is good to go - submitting! |
Roll Flutter from d733bea58c1a to 2773c0c8e15e (42 revisions) flutter/flutter@d733bea...2773c0c 2025-06-25 [email protected] Log stack traces from exceptions thrown by devicelab test tasks (flutter/flutter#171165) 2025-06-25 [email protected] Revert "Move `web_long_running_tests_{1,5}_5` to `bringup`." (flutter/flutter#171100) 2025-06-25 [email protected] Add missing M3 tests for InputDecoration.isDense (flutter/flutter#171058) 2025-06-25 [email protected] Add Android specific sub-step to validate the Android sdk path has no spaces (flutter/flutter#170829) 2025-06-24 [email protected] Update foundation library to export internal (flutter/flutter#170563) 2025-06-24 [email protected] Remove stale references to `Release-process.md` and `conductor` (flutter/flutter#171046) 2025-06-24 [email protected] License cpp jun23 (flutter/flutter#171047) 2025-06-24 [email protected] Add android-reviewers to CODEOWNERS (flutter/flutter#170157) 2025-06-24 [email protected] Update tool/README.md regarding locally-built engine (flutter/flutter#171102) 2025-06-24 [email protected] [web] Align the PR triage process with the ecosystem's triage flow (flutter/flutter#171086) 2025-06-24 [email protected] [flutter_tool] Migrate DAP off `ProcessUtils.writelnToStdinUnsafe` (flutter/flutter#171081) 2025-06-24 [email protected] [web] More granular configuration of the test environment (flutter/flutter#168767) 2025-06-24 [email protected] Clean up Devfs_Web into separate files (flutter/flutter#170769) 2025-06-24 [email protected] Add RawMenuAnchor animation callbacks (flutter/flutter#167806) 2025-06-24 [email protected] Support wide gamut colors when applying a DlColor to an SkPaint (flutter/flutter#170613) 2025-06-24 [email protected] Remove temporary workaround for web testing (flutter/flutter#170949) 2025-06-24 [email protected] Roll Packages from 02770da to d9d3191 (6 revisions) (flutter/flutter#171075) 2025-06-24 [email protected] Add LLDB warnings (flutter/flutter#170827) 2025-06-24 [email protected] Update FormField.initialValue documentation (flutter/flutter#171061) 2025-06-24 [email protected] Roll Skia from 132cb2052565 to a462e701b493 (2 revisions) (flutter/flutter#171063) 2025-06-24 [email protected] Roll Skia from f88706e3a863 to 132cb2052565 (4 revisions) (flutter/flutter#171057) 2025-06-24 [email protected] When maintainHintSize is false, hint is centered and aligned, it is different from the original one (flutter/flutter#168654) 2025-06-24 [email protected] Deprecate DropdownButtonFormField "value" parameter in favor of "initialValue" (flutter/flutter#170805) 2025-06-24 [email protected] Roll Skia from af6feb799ea6 to f88706e3a863 (2 revisions) (flutter/flutter#171056) 2025-06-24 [email protected] Roll Dart SDK from aebd78999b1a to d9edd9e7a634 (1 revision) (flutter/flutter#171053) 2025-06-24 [email protected] Roll Skia from ae517eba0170 to af6feb799ea6 (1 revision) (flutter/flutter#171052) 2025-06-24 [email protected] Roll Skia from a7735d517e6a to ae517eba0170 (9 revisions) (flutter/flutter#171049) 2025-06-24 [email protected] Enable interpretation fallback when unable to JIT on iOS. (flutter/flutter#170835) 2025-06-24 [email protected] Flutter test cleanup (flutter/flutter#170891) 2025-06-24 [email protected] Move `packages_autoroller` out of the carcass of `conductor`, delete `conductor` (flutter/flutter#171029) 2025-06-23 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Don't strip symbols from `libapp.so` on android by default (#162464)" (flutter/flutter#171044) 2025-06-23 [email protected] Roll Dart SDK from a09de0d3556c to aebd78999b1a (2 revisions) (flutter/flutter#171039) 2025-06-23 [email protected] Don't strip symbols from `libapp.so` on android by default (flutter/flutter#162464) 2025-06-23 [email protected] Roll Skia from 0311837abe86 to a7735d517e6a (12 revisions) (flutter/flutter#171037) 2025-06-23 [email protected] Pass font scanner to font mgr that need it (flutter/flutter#170701) 2025-06-23 [email protected] Make service worker tests more lenient. (flutter/flutter#170939) 2025-06-23 [email protected] Remove update CHANGELOG step from stable cherry pick process (flutter/flutter#171017) 2025-06-23 [email protected] Include dev_dependencies in all builds for iOS and macOS (flutter/flutter#171015) 2025-06-23 [email protected] Move `web_long_running_tests_{1,5}_5` to `bringup`. (flutter/flutter#171026) 2025-06-23 [email protected] rename from announce to supportsAnnounce on engine (flutter/flutter#170618) 2025-06-23 [email protected] Roll pub packages (flutter/flutter#171016) 2025-06-23 [email protected] Enhance Text Contrast for WCAG AAA Compliance (flutter/flutter#170758) 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 ...
In the Flutter framework, only the `foundation` library is allowed to import `package:meta`. If other parts of the Flutter framework want to use `package:meta`, they must do so through the `foundation` library by exporting the desired `package:meta` member. This requirement is enforced through `dev/bots/analyze.dart` [here](https://github.com/flutter/flutter/blob/master/dev/bots/analyze.dart#L2749-L2750). This exports the `internal` attribute so that it can be used by the Flutter framework. This change was split off from flutter#168437 as it might cause problems in google3 if there is code that imports both `package:meta/meta.dart` and `package:flutter/foundation.dart`. I will get a test exemption. Part of: flutter#167668 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
…r#9495) Roll Flutter from d733bea58c1a to 2773c0c8e15e (42 revisions) flutter/flutter@d733bea...2773c0c 2025-06-25 [email protected] Log stack traces from exceptions thrown by devicelab test tasks (flutter/flutter#171165) 2025-06-25 [email protected] Revert "Move `web_long_running_tests_{1,5}_5` to `bringup`." (flutter/flutter#171100) 2025-06-25 [email protected] Add missing M3 tests for InputDecoration.isDense (flutter/flutter#171058) 2025-06-25 [email protected] Add Android specific sub-step to validate the Android sdk path has no spaces (flutter/flutter#170829) 2025-06-24 [email protected] Update foundation library to export internal (flutter/flutter#170563) 2025-06-24 [email protected] Remove stale references to `Release-process.md` and `conductor` (flutter/flutter#171046) 2025-06-24 [email protected] License cpp jun23 (flutter/flutter#171047) 2025-06-24 [email protected] Add android-reviewers to CODEOWNERS (flutter/flutter#170157) 2025-06-24 [email protected] Update tool/README.md regarding locally-built engine (flutter/flutter#171102) 2025-06-24 [email protected] [web] Align the PR triage process with the ecosystem's triage flow (flutter/flutter#171086) 2025-06-24 [email protected] [flutter_tool] Migrate DAP off `ProcessUtils.writelnToStdinUnsafe` (flutter/flutter#171081) 2025-06-24 [email protected] [web] More granular configuration of the test environment (flutter/flutter#168767) 2025-06-24 [email protected] Clean up Devfs_Web into separate files (flutter/flutter#170769) 2025-06-24 [email protected] Add RawMenuAnchor animation callbacks (flutter/flutter#167806) 2025-06-24 [email protected] Support wide gamut colors when applying a DlColor to an SkPaint (flutter/flutter#170613) 2025-06-24 [email protected] Remove temporary workaround for web testing (flutter/flutter#170949) 2025-06-24 [email protected] Roll Packages from 02770da to d9d3191 (6 revisions) (flutter/flutter#171075) 2025-06-24 [email protected] Add LLDB warnings (flutter/flutter#170827) 2025-06-24 [email protected] Update FormField.initialValue documentation (flutter/flutter#171061) 2025-06-24 [email protected] Roll Skia from 132cb2052565 to a462e701b493 (2 revisions) (flutter/flutter#171063) 2025-06-24 [email protected] Roll Skia from f88706e3a863 to 132cb2052565 (4 revisions) (flutter/flutter#171057) 2025-06-24 [email protected] When maintainHintSize is false, hint is centered and aligned, it is different from the original one (flutter/flutter#168654) 2025-06-24 [email protected] Deprecate DropdownButtonFormField "value" parameter in favor of "initialValue" (flutter/flutter#170805) 2025-06-24 [email protected] Roll Skia from af6feb799ea6 to f88706e3a863 (2 revisions) (flutter/flutter#171056) 2025-06-24 [email protected] Roll Dart SDK from aebd78999b1a to d9edd9e7a634 (1 revision) (flutter/flutter#171053) 2025-06-24 [email protected] Roll Skia from ae517eba0170 to af6feb799ea6 (1 revision) (flutter/flutter#171052) 2025-06-24 [email protected] Roll Skia from a7735d517e6a to ae517eba0170 (9 revisions) (flutter/flutter#171049) 2025-06-24 [email protected] Enable interpretation fallback when unable to JIT on iOS. (flutter/flutter#170835) 2025-06-24 [email protected] Flutter test cleanup (flutter/flutter#170891) 2025-06-24 [email protected] Move `packages_autoroller` out of the carcass of `conductor`, delete `conductor` (flutter/flutter#171029) 2025-06-23 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Don't strip symbols from `libapp.so` on android by default (#162464)" (flutter/flutter#171044) 2025-06-23 [email protected] Roll Dart SDK from a09de0d3556c to aebd78999b1a (2 revisions) (flutter/flutter#171039) 2025-06-23 [email protected] Don't strip symbols from `libapp.so` on android by default (flutter/flutter#162464) 2025-06-23 [email protected] Roll Skia from 0311837abe86 to a7735d517e6a (12 revisions) (flutter/flutter#171037) 2025-06-23 [email protected] Pass font scanner to font mgr that need it (flutter/flutter#170701) 2025-06-23 [email protected] Make service worker tests more lenient. (flutter/flutter#170939) 2025-06-23 [email protected] Remove update CHANGELOG step from stable cherry pick process (flutter/flutter#171017) 2025-06-23 [email protected] Include dev_dependencies in all builds for iOS and macOS (flutter/flutter#171015) 2025-06-23 [email protected] Move `web_long_running_tests_{1,5}_5` to `bringup`. (flutter/flutter#171026) 2025-06-23 [email protected] rename from announce to supportsAnnounce on engine (flutter/flutter#170618) 2025-06-23 [email protected] Roll pub packages (flutter/flutter#171016) 2025-06-23 [email protected] Enhance Text Contrast for WCAG AAA Compliance (flutter/flutter#170758) 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 ...
|
Btw, changing this export list can cause some confusion if you have a project which is intended to build with multiple versions of Flutter. Because now that 3.35.x includes this export, the analyzer will remove (I think?) the package:meta import you previously had, causing your sources to now only compile with Flutter 3.35.0 or later, even if you wanted to be able to compile with more than that. I'm not sure that matters a ton? But it came up today with a Shorebird customer. shorebirdtech/shorebird#3300 |
In the Flutter framework, only the
foundationlibrary is allowed to importpackage:meta. If other parts of the Flutter framework want to usepackage:meta, they must do so through thefoundationlibrary by exporting the desiredpackage:metamember. This requirement is enforced throughdev/bots/analyze.darthere.This exports the
internalattribute so that it can be used by the Flutter framework. This change was split off from #168437 as it might cause problems in google3 if there is code that imports bothpackage:meta/meta.dartandpackage:flutter/foundation.dart.I will get a test exemption.
Part of: #167668
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.