-
Notifications
You must be signed in to change notification settings - Fork 119
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
Improve support for package-with-macro-application #3687
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
srawlins
force-pushed
the
fix-macros-2
branch
from
February 27, 2024 22:13
c06d53d
to
2cce047
Compare
The previous fix is no good; it was concerned with _augmentations_, assuming they cannot be read from disk. This is not the case. Only a macro-generated augmentation cannot be read from disk. Instead we change tactics and say we _can_ include source code from a macro (maybe we shouldn't), and just ask analyzer for all source files, from the AnalysisContext. Other changes to facilitate this: * Do not dispose the AnalysisContextCollection right away; we should wait until all docs are generated. * Pass the AnalysisContext to ModelNode, and no longer pass the ResourceProvider. * Remove the file cache thing in model_utils; instead ModelNode.sourceCode only relies on the AnalysisContext. Theoretically there is already caching over that at analyzer? But I benchmarked with Flutter and saw no time-to-document or max-RSS changes. * Do not ask the AnalysisContextCollection for the AnalysisContext _for every file_! Cache it. To facilitate that, change `PubPackageBuilder()` into a factory. * Sort the fields instantiated by the `PackageGraph.uninitialized` constructor above it. * In `addFilesReferencedBy`, also look at augmentation imports.
srawlins
force-pushed
the
fix-macros-2
branch
from
February 28, 2024 15:44
2cce047
to
df080df
Compare
kallentu
approved these changes
Feb 28, 2024
copybara-service bot
pushed a commit
to dart-lang/sdk
that referenced
this pull request
Mar 4, 2024
…shelf, sse, test, web Revisions updated by `dart tools/rev_sdk_deps.dart`. dartdoc (https://github.com/dart-lang/dartdoc/compare/eed92d3..cec45fb): cec45fbe 2024-02-29 Kallen Tu Deprecate --resources-dir option. (dart-lang/dartdoc#3696) 40fef4c2 2024-02-29 Sam Rawlins In PackageBuilder._discoverLibraries, initialize newFiles outside loop. (dart-lang/dartdoc#3695) 2760d254 2024-02-28 Sam Rawlins Deprecate the 'include-externals' option. (dart-lang/dartdoc#3694) c1c0854d 2024-02-28 Sam Rawlins Improve support for package-with-macro-application (dart-lang/dartdoc#3687) b28ee1f8 2024-02-28 Sam Rawlins Deprecate the `--nodoc` Option (dart-lang/dartdoc#3690) 7988d91f 2024-02-28 Sam Rawlins Improve some exception messaging and comments (dart-lang/dartdoc#3691) a1610aa6 2024-02-28 Sam Rawlins Bump to 8.0.6 (dart-lang/dartdoc#3692) ecosystem (https://github.com/dart-lang/ecosystem/compare/3e4f286..49a3cbb): 49a3cbb 2024-03-01 dependabot[bot] Bump peter-evans/find-comment (dart-lang/ecosystem#241) 9dd8384 2024-03-01 dependabot[bot] Bump subosito/flutter-action from 2.12.0 to 2.13.0 (dart-lang/ecosystem#240) 7acf3bc 2024-03-01 dependabot[bot] Bump actions/download-artifact from 4.1.1 to 4.1.3 (dart-lang/ecosystem#242) 5d6a0c0 2024-03-01 dependabot[bot] Bump peter-evans/create-or-update-comment (dart-lang/ecosystem#238) 91fcd1d 2024-03-01 dependabot[bot] Bump actions/upload-artifact from 4.0.0 to 4.3.1 (dart-lang/ecosystem#239) glob (https://github.com/dart-lang/glob/compare/ef5f065..379d60c): 379d60c 2024-02-28 Kevin Moore Require Dart 3.3 (dart-lang/glob#88) http (https://github.com/dart-lang/http/compare/6e0a46f..470d2c3): 470d2c3 2024-03-01 dependabot[bot] Bump actions/cache from 4.0.0 to 4.0.1 (dart-lang/http#1145) a5b17e0 2024-03-01 dependabot[bot] Bump actions/setup-java from 4.0.0 to 4.1.0 (dart-lang/http#1144) c1d3481 2024-02-29 Brian Quinlan Split package:http_profile into multiple files (dart-lang/http#1143) 69332d3 2024-02-29 Brian Quinlan API adjustments based on cupertino_http usage experience (dart-lang/http#1141) 199f9fa 2024-02-28 Brian Quinlan Add a dart:io WebSocket implementation (dart-lang/http#1139) 37fceb8 2024-02-28 Brian Quinlan Fix incorrect documentation that used the old `isOwned` name (dart-lang/http#1140) markdown (https://github.com/dart-lang/markdown/compare/62e3349..dd47c5d): dd47c5d 2024-02-28 Kevin Moore WIP: v0.31.2 spec updates (dart-lang/markdown#591) pool (https://github.com/dart-lang/pool/compare/782da82..c118f69): c118f69 2024-02-28 Kevin Moore Latest lints, test wasm on dev channel (dart-lang/pool#81) protobuf (https://github.com/dart-lang/protobuf/compare/ef0ab7d..b761358): b761358 2024-03-04 Nate Biggs Support unknown json data and add internal set/clear field methods for generated accessors. (google/protobuf.dart#918) 1822b81 2024-03-01 dependabot[bot] Bump dart-lang/setup-dart from 1.5.0 to 1.6.2 (google/protobuf.dart#917) adab58c 2024-03-01 dependabot[bot] Bump actions/cache from 3.3.1 to 4.0.1 (google/protobuf.dart#916) c283db5 2024-03-01 Ömer Sinan Ağacan Ignore the UnmodifiableUint8ListView deprecation warning (google/protobuf.dart#915) shelf (https://github.com/dart-lang/shelf/compare/b432620..da6a69b): da6a69b 2024-03-01 dependabot[bot] Bump actions/cache from 4.0.0 to 4.0.1 (dart-lang/shelf#415) sse (https://github.com/dart-lang/sse/compare/13ec752..b53ba14): b53ba14 2024-02-29 Kevin Moore Prepare release of v4.1.5 (dart-lang/sse#105) test (https://github.com/dart-lang/test/compare/26953ba..525f77b): 525f77b2 2024-03-01 dependabot[bot] Bump actions/cache from 4.0.0 to 4.0.1 (dart-lang/test#2191) b1041775 2024-03-01 dependabot[bot] Bump github/codeql-action from 3.23.2 to 3.24.6 (dart-lang/test#2193) web (https://github.com/dart-lang/web/compare/fa4280c..8870d04): 8870d04 2024-02-29 Devon Carew update the format of the web idl versions file (dart-lang/web#194) 641a8df 2024-02-29 Srujan Gaddam Add generated element constructors (dart-lang/web#185) 5e5adc8 2024-02-28 Srujan Gaddam Use URI instead of library name (dart-lang/web#191) 2f00226 2024-02-28 Kevin Moore Move IDL version details (dart-lang/web#189) 23475c0 2024-02-28 Devon Carew Include MDN API documentation as class and member dartdoc comments (dart-lang/web#143) Change-Id: Ia08bf4a304a1073473d6abddb64275cca84dea13 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/355521 Auto-Submit: Devon Carew <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The previous fix is no good; it was concerned with augmentations, assuming they cannot be read from disk. This is not the case. Only a macro-generated augmentation cannot be read from disk.
Instead we change tactics and say we can include source code from a macro (maybe we shouldn't), and just ask analyzer for all source files, from the AnalysisContext, instead of going straight to disk.
Other changes to facilitate this:
PubPackageBuilder()
into a factory.PackageGraph.uninitialized
constructor above it.addFilesReferencedBy
, also look at augmentation imports.Contribution guidelines:
dart format
.Note that many Dart repos have a weekly cadence for reviewing PRs - please allow for some latency before initial review feedback.