-
Notifications
You must be signed in to change notification settings - Fork 25k
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
refactor(compiler): rework defer block analysis #54759
Conversation
Passing TGP, aside from some unrelated broken targets. |
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.
@crisbeto looks great 👍
(adding the "cleanup" label, since there is a merge conflict with the main branch) |
57e6b42
to
dd1b5a6
Compare
Bumps the local dependencies in an attempt to fix the frozen lockfile errors after rebasing some PRs like angular#54759.
Bumps the local dependencies in an attempt to fix the frozen lockfile errors after rebasing some PRs like angular#54759.
Bumps the local dependencies in an attempt to fix the frozen lockfile errors after rebasing some PRs like angular#54759.
Bumps the local dependencies in an attempt to fix the frozen lockfile errors after rebasing some PRs like angular#54759.
Bumps the local dependencies in an attempt to fix the frozen lockfile errors after rebasing some PRs like angular#54759.
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
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 is a resubmit of #54700.
Currently we have the
deferrableDeclToImportDecl
,deferBlocks
,deferrableTypes
anddeferBlockDepsEmitMode
fields on theR3ComponentMetadata
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:
R3ComponentMetadata
to 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.