Go to file
Alex Rickabaugh 3e5c1bcb9f fix(ivy): track cyclic imports that are added (#29040)
ngtsc has cyclic import detection, to determine when adding an import to a
directive or pipe would create a cycle. However, this detection must also
account for already inserted imports, as it's possible for both directions
of a circular import to be inserted by Ivy (as opposed to at least one of
those edges existing in the user's program).

This commit fixes the circular import detection for components to take into
consideration already added edges. This is difficult for one critical
reason: only edges to files which will *actually* be imported should be
considered. However, that depends on which directives & pipes are used in
a given template, which is currently only known by running the
TemplateDefinitionBuilder during the 'compile' phase. This is too late; the
decision whether to use remote scoping (which consults the import graph) is
made during the 'resolve' phase, before any compilation has taken place.

Thus, the only way to correctly consider synthetic edges is for the compiler
to know exactly which directives & pipes are used in a template during
'resolve'. There are two ways to achieve this:

1) refactor `TemplateDefinitionBuilder` to do its work in two phases, with
directive matching occurring as a separate step which can be performed
earlier.

2) use the `R3TargetBinder` in the 'resolve' phase to independently bind the
template and get information about used directives.

Option 1 is ideal, but option 2 is currently used for practical reasons. The
cost of binding the template can be shared with template-typechecking.

PR Close #29040
2019-03-01 15:18:50 -08:00
.buildkite ci: update buildkite provision instructions (#28273) 2019-02-07 12:36:27 -08:00
.circleci ci: increase parallelism for "test_docs_examples" jobs (#28984) 2019-02-28 10:46:12 -08:00
.github docs: add how to create a minimal repo in bug report template (#29022) 2019-03-01 10:15:29 -08:00
.vscode build: add VSCode extension recommendations (#28784) 2019-02-28 02:45:41 -08:00
aio ci(docs-infra): disable failing ivy jit systemjs examples (#28984) 2019-02-28 10:46:12 -08:00
docs build: update to rules_typescript 0.25.1 (#28625) 2019-02-21 07:46:21 -08:00
integration build: yarn.lock updates (#28871) 2019-02-28 12:06:36 -08:00
modules build: rules_nodejs 0.26.0 & use @npm instead of @ngdeps now that downstream angular build uses angular bundles (#28871) 2019-02-28 12:06:36 -08:00
packages fix(ivy): track cyclic imports that are added (#29040) 2019-03-01 15:18:50 -08:00
scripts build(bazel): run a number of web tests with karma_web_test in saucelabs in CircleCI (#27721) 2019-02-22 13:07:08 -08:00
third_party build: use vendored yarn under Bazel (#28839) 2019-02-20 09:19:03 -08:00
tools fix(ivy): move views that are already attached in insert() (#29047) 2019-03-01 15:17:24 -08:00
.bazelignore ci: share data between jobs using workspaces (#28928) 2019-02-22 13:24:11 -08:00
.bazelrc build(bazel): run a number of web tests with karma_web_test in saucelabs in CircleCI (#27721) 2019-02-22 13:07:08 -08:00
.clang-format feat(tooling): Add a .clang-format for automated JavaScript formatting. 2015-04-02 08:44:34 -07:00
.editorconfig build: use https link to editorconfig.org in .editorconfig (#27664) 2018-12-18 09:30:09 -08:00
.gitattributes chore: force lf EOL for ts files (#11143) 2016-08-29 12:41:58 -07:00
.gitignore build: update and unify gitignore (#28316) 2019-01-23 10:55:21 -08:00
.mailmap build: add a Git .mailmap with my new name (#19550) 2017-10-09 14:35:30 -07:00
.nvmrc build: update .nvmrc file to correct node version (#25992) 2018-09-18 13:11:58 -07:00
BUILD.bazel build: rules_nodejs 0.26.0 & use @npm instead of @ngdeps now that downstream angular build uses angular bundles (#28871) 2019-02-28 12:06:36 -08:00
CHANGELOG.md release: cut the v8.0.0-beta.6 release 2019-02-26 16:37:10 -08:00
CODE_OF_CONDUCT.md docs: fix community tab in GitHub by copying CoC 2018-02-27 19:02:30 -08:00
CONTRIBUTING.md build: remove travisci leftovers (#27979) 2019-01-09 10:41:16 -08:00
LICENSE build: bump year (#27880) 2019-01-11 11:15:59 -08:00
README.md docs: update link for CircleCI badge to point workflow 2019-02-07 14:14:59 -08:00
WORKSPACE build: minimum version of rules_nodejs is now 0.26.0 (#28871) 2019-02-28 12:06:36 -08:00
browser-providers.conf.js build: remove travisci leftovers (#27979) 2019-01-09 10:41:16 -08:00
gulpfile.js build: `gulp format` only changed lines by default (#28411) 2019-02-04 16:49:16 -05:00
karma-js.conf.js build: rules_nodejs 0.26.0 & use @npm instead of @ngdeps now that downstream angular build uses angular bundles (#28871) 2019-02-28 12:06:36 -08:00
package.json fix(bazel): api extractor don't generate tsdoc metadata (#29023) 2019-03-01 10:16:43 -08:00
protractor-perf.conf.js build: remove legacy e2e tests job (#28645) 2019-02-13 12:15:02 -08:00
renovate.json ci: add renovate configuration (#28121) 2019-02-19 11:09:01 -08:00
shims_for_IE.js Revert "refactor: add license header to JS files & format files (#12035)" 2016-10-04 14:06:41 -07:00
test-events.js fix(platform-browser): run BLACK_LISTED_EVENTS outside of ngZone (#18993) 2017-09-05 15:33:22 -05:00
test-main.js refactor(core): remove withBody from public testing API (#25171) 2018-07-31 15:09:32 -07:00
tslint.json build: remove unused rollup.config.js files (#28646) 2019-02-14 19:28:08 +00:00
yarn.lock fix(bazel): api extractor don't generate tsdoc metadata (#29023) 2019-03-01 10:16:43 -08:00
yarn.lock.readme.md build: remove travisci leftovers (#27979) 2019-01-09 10:41:16 -08:00

README.md

CircleCI BrowserStack Status Join the chat at https://gitter.im/angular/angular npm version

Angular

Angular is a development platform for building mobile and desktop web applications using Typescript/JavaScript and other languages.

Quickstart

Get started in 5 minutes.

Changelog

Learn about the latest improvements.

Want to help?

Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on our guidelines for contributing and then check out one of our issues in the hotlist: community-help.