angular-docs-cn/packages
Alex Rickabaugh 0823622202 fix(compiler-cli): track poisoned scopes with a flag (#39923)
To avoid overwhelming a user with secondary diagnostics that derive from a
"root cause" error, the compiler has the notion of a "poisoned" NgModule.
An NgModule becomes poisoned when its declaration contains semantic errors:
declarations which are not components or pipes, imports which are not other
NgModules, etc. An NgModule also becomes poisoned if it imports or exports
another poisoned NgModule.

Previously, the compiler tracked this poisoned status as an alternate state
for each scope. Either a correct scope could be produced, or the entire
scope would be set to a sentinel error value. This meant that the compiler
would not track any information about a scope that was determined to be in
error.

This method presents several issues:

1. The compiler is unable to support the language service and return results
when a component or its module scope is poisoned.

This is fine for compilation, since diagnostics will be produced showing the
error(s), but the language service needs to still work for incorrect code.

2. `getComponentScopes()` does not return components with a poisoned scope,
which interferes with resource tracking of incremental builds.

If the component isn't included in that list, then the NgModule for it will
not have its dependencies properly tracked, and this can cause future
incremental build steps to produce incorrect results.

This commit changes the tracking of poisoned module scopes to use a flag on
the scope itself, rather than a sentinel value that replaces the scope. This
means that the scope itself will still be tracked, even if it contains
semantic errors. A test is added to the language service which verifies that
poisoned scopes can still be used in template type-checking.

PR Close #39923
2020-12-03 13:42:13 -08:00
..
animations build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
bazel build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
benchpress build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
common docs(common): fix typo in HttpClient docs (#39904) 2020-12-02 11:16:43 -08:00
compiler feat(compiler): allow trailing comma in array literal (#22277) 2020-12-02 14:57:05 -08:00
compiler-cli fix(compiler-cli): track poisoned scopes with a flag (#39923) 2020-12-03 13:42:13 -08:00
core test(core): verify `onDestroy` callbacks are invoked when ComponentRef is destroyed (#39876) 2020-12-02 12:56:05 -08:00
docs docs(di): fix typo in advanced di doc (#36634) 2020-05-01 09:50:28 -07:00
elements fix(elements): update the view of an `OnPush` component when inputs change (#39452) 2020-11-06 09:31:46 -08:00
examples fix(core): Allow passing AbstractType to the inject function (#37958) 2020-11-24 10:42:21 -08:00
forms docs(forms): fix example 'Reset the form group values and disabled status' (#33137) 2020-12-02 11:14:25 -08:00
language-service fix(compiler-cli): track poisoned scopes with a flag (#39923) 2020-12-03 13:42:13 -08:00
localize feat(localize): support Application Resource Bundle (ARB) translation file format (#36795) 2020-11-25 10:55:40 -08:00
misc/angular-in-memory-web-api docs: update links to use HTTPS as protocol (#39718) 2020-11-20 12:52:16 -08:00
platform-browser feat(platform-browser): add doubletap HammerJS support (#26362) 2020-11-24 08:45:49 -08:00
platform-browser-dynamic docs: update links to use HTTPS as protocol (#39718) 2020-11-20 12:52:16 -08:00
platform-server build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
private/testing build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
router docs: update links to use HTTPS as protocol (#39718) 2020-11-20 12:52:16 -08:00
service-worker fix(service-worker): correctly handle failed cache-busted request (#39786) 2020-11-23 14:59:55 -08:00
upgrade build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
zone.js fix(zone.js): patch child method that overrides an already patched method (#39850) 2020-12-02 12:52:27 -08:00
BUILD.bazel build: replace @types/trusted-types dep with minimal type defs (#39211) 2020-10-15 09:08:00 -07:00
README.md
circular-deps-test.conf.js fix(platform-webworker): remove platform-webworker and platform-webworker-dynamic (#38846) 2020-09-30 09:13:59 -04:00
empty.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
goog.d.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
license-banner.txt
system.d.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
tsconfig-build-no-strict.json
tsconfig-build.json
tsconfig-test.json
tsconfig.json fix(platform-webworker): remove platform-webworker and platform-webworker-dynamic (#38846) 2020-09-30 09:13:59 -04:00
types.d.ts build: replace @types/trusted-types dep with minimal type defs (#39211) 2020-10-15 09:08:00 -07:00

README.md

Angular

The sources for this package are in the main Angular repo. Please file issues and pull requests against that repo.

Usage information and reference details can be found in Angular documentation.

License: MIT