refactor(compiler): rework defer block analysis#54759
Closed
crisbeto wants to merge 3 commits intoangular:mainfrom
Closed
refactor(compiler): rework defer block analysis#54759crisbeto wants to merge 3 commits intoangular:mainfrom
crisbeto wants to merge 3 commits intoangular:mainfrom
Conversation
Member
Author
|
Passing TGP, aside from some unrelated broken targets. |
AndrewKushnir
approved these changes
Mar 9, 2024
Contributor
AndrewKushnir
left a comment
There was a problem hiding this comment.
@crisbeto looks great 👍
Contributor
|
(adding the "cleanup" label, since there is a merge conflict with the main branch) |
57e6b42 to
dd1b5a6
Compare
crisbeto
added a commit
to crisbeto/angular
that referenced
this pull request
Mar 9, 2024
Bumps the local dependencies in an attempt to fix the frozen lockfile errors after rebasing some PRs like angular#54759.
Currently we have the `deferrableDeclToImportDecl`, `deferBlocks`, `deferrableTypes` and `deferBlockDepsEmitMode` fields on the `R3ComponentMetadata` which is incorrect, because the interface is used both for JIT and AOT mode even though the information for those fields is AOT-specific. It will be problematic for partial compilation since the runtime will have a reference to the dependency loading function, but will not be able to provide any of the other information. These changes make the following refactors: 1. It changes the defer-related information in `R3ComponentMetadata` to include only references to dependency functions which can be provided both in JIT and AOT. 2. Moves the AOT-specific defer analysis into the `ComponentResolutionData`. 3. Moves the construction the defer dependency function into the compilation phase of the `ComponentDecoratorHandler`. 4. Drops support for defer blocks from the `TemplateDefinitionBuilder`. This allows us to clean up some TDB-specific code and shouldn't have an effect on users since the TDB isn't used anymore.
…ndency Fixes an issue where we were outputting the reference to non-deferrable dependencies as strings, rather than going through the reference emitter. This caused some issues internally because the reference wasn't maintained in the generated JS.
… package Moves the logic that creates the defer resolver function into `@angular/compiler` for consistency with the rest of the compilation APIs. Also renames some of the symbols to make it clearer what they're used for.
dd1b5a6 to
e7ab3eb
Compare
Contributor
|
This PR was merged into the repository by commit 6ea208e. |
|
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
This file contains hidden or 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
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
This is a resubmit of #54700.
Currently we have the
deferrableDeclToImportDecl,deferBlocks,deferrableTypesanddeferBlockDepsEmitModefields on theR3ComponentMetadatawhich is incorrect, because the interface is used both for JIT and AOT mode even though the information for those fields is AOT-specific. It will be problematic for partial compilation since the runtime will have a reference to the dependency loading function, but will not be able to provide any of the other information.These changes make the following refactors:
R3ComponentMetadatato include only references to dependency functions which can be provided both in JIT and AOT.ComponentResolutionData.ComponentDecoratorHandler.TemplateDefinitionBuilder. This allows us to clean up some TDB-specific code and shouldn't have an effect on users since the TDB isn't used anymore.