@angular/compiler 16.1.2 → 16.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2022/src/compiler_util/expression_converter.mjs +2 -1
  2. package/esm2022/src/constant_pool.mjs +4 -1
  3. package/esm2022/src/output/output_ast.mjs +81 -1
  4. package/esm2022/src/render3/partial/class_metadata.mjs +1 -1
  5. package/esm2022/src/render3/partial/directive.mjs +1 -1
  6. package/esm2022/src/render3/partial/factory.mjs +1 -1
  7. package/esm2022/src/render3/partial/injectable.mjs +1 -1
  8. package/esm2022/src/render3/partial/injector.mjs +1 -1
  9. package/esm2022/src/render3/partial/ng_module.mjs +1 -1
  10. package/esm2022/src/render3/partial/pipe.mjs +1 -1
  11. package/esm2022/src/template/pipeline/ir/src/element.mjs +5 -2
  12. package/esm2022/src/template/pipeline/ir/src/enums.mjs +21 -1
  13. package/esm2022/src/template/pipeline/ir/src/expression.mjs +146 -1
  14. package/esm2022/src/template/pipeline/ir/src/ops/create.mjs +13 -1
  15. package/esm2022/src/template/pipeline/ir/src/ops/update.mjs +18 -3
  16. package/esm2022/src/template/pipeline/src/emit.mjs +19 -13
  17. package/esm2022/src/template/pipeline/src/ingest.mjs +68 -62
  18. package/esm2022/src/template/pipeline/src/phases/attribute_extraction.mjs +74 -0
  19. package/esm2022/src/template/pipeline/src/phases/expand_safe_reads.mjs +86 -0
  20. package/esm2022/src/template/pipeline/src/phases/nullish_coalescing.mjs +26 -0
  21. package/esm2022/src/version.mjs +1 -1
  22. package/fesm2022/compiler.mjs +1700 -1253
  23. package/fesm2022/compiler.mjs.map +1 -1
  24. package/fesm2022/testing.mjs +1 -1
  25. package/index.d.ts +28 -1
  26. package/package.json +2 -2
  27. package/testing/index.d.ts +1 -1
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import * as o from '../../../../output/output_ast';
9
+ import * as ir from '../../ir';
10
+ export function phaseNullishCoalescing(cpl) {
11
+ for (const view of cpl.views.values()) {
12
+ for (const op of view.ops()) {
13
+ ir.transformExpressionsInOp(op, expr => {
14
+ if (!(expr instanceof o.BinaryOperatorExpr) ||
15
+ expr.operator !== o.BinaryOperator.NullishCoalesce) {
16
+ return expr;
17
+ }
18
+ // TODO: We need to unconditionally emit a temporary variable to match
19
+ // TemplateDefinitionBuilder. (We could also emit one conditionally when not in
20
+ // compatibility mode.)
21
+ return new o.ConditionalExpr(new o.BinaryOperatorExpr(o.BinaryOperator.And, new o.BinaryOperatorExpr(o.BinaryOperator.NotIdentical, expr.lhs, o.NULL_EXPR), new o.BinaryOperatorExpr(o.BinaryOperator.NotIdentical, expr.lhs, new o.LiteralExpr(undefined))), expr.lhs, expr.rhs);
22
+ }, ir.VisitorContextFlag.None);
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbGlzaF9jb2FsZXNjaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcGlsZXIvc3JjL3RlbXBsYXRlL3BpcGVsaW5lL3NyYy9waGFzZXMvbnVsbGlzaF9jb2FsZXNjaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sS0FBSyxDQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0IsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEdBQXlCO0lBQzlELEtBQUssTUFBTSxJQUFJLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNyQyxLQUFLLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMzQixFQUFFLENBQUMsd0JBQXdCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxDQUFDLGtCQUFrQixDQUFDO29CQUN2QyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFO29CQUN0RCxPQUFPLElBQUksQ0FBQztpQkFDYjtnQkFFRCxzRUFBc0U7Z0JBQ3RFLCtFQUErRTtnQkFDL0UsdUJBQXVCO2dCQUN2QixPQUFPLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FDeEIsSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQ3BCLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUNwQixJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFDOUUsSUFBSSxDQUFDLENBQUMsa0JBQWtCLENBQ3BCLENBQUMsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFDL0UsSUFBSSxDQUFDLEdBQUcsRUFDUixJQUFJLENBQUMsR0FBRyxDQUNYLENBQUM7WUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hDO0tBQ0Y7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIG8gZnJvbSAnLi4vLi4vLi4vLi4vb3V0cHV0L291dHB1dF9hc3QnO1xuaW1wb3J0ICogYXMgaXIgZnJvbSAnLi4vLi4vaXInO1xuaW1wb3J0IHR5cGUge0NvbXBvbmVudENvbXBpbGF0aW9ufSBmcm9tICcuLi9jb21waWxhdGlvbic7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHBoYXNlTnVsbGlzaENvYWxlc2NpbmcoY3BsOiBDb21wb25lbnRDb21waWxhdGlvbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IHZpZXcgb2YgY3BsLnZpZXdzLnZhbHVlcygpKSB7XG4gICAgZm9yIChjb25zdCBvcCBvZiB2aWV3Lm9wcygpKSB7XG4gICAgICBpci50cmFuc2Zvcm1FeHByZXNzaW9uc0luT3Aob3AsIGV4cHIgPT4ge1xuICAgICAgICBpZiAoIShleHByIGluc3RhbmNlb2Ygby5CaW5hcnlPcGVyYXRvckV4cHIpIHx8XG4gICAgICAgICAgICBleHByLm9wZXJhdG9yICE9PSBvLkJpbmFyeU9wZXJhdG9yLk51bGxpc2hDb2FsZXNjZSkge1xuICAgICAgICAgIHJldHVybiBleHByO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVE9ETzogV2UgbmVlZCB0byB1bmNvbmRpdGlvbmFsbHkgZW1pdCBhIHRlbXBvcmFyeSB2YXJpYWJsZSB0byBtYXRjaFxuICAgICAgICAvLyBUZW1wbGF0ZURlZmluaXRpb25CdWlsZGVyLiAoV2UgY291bGQgYWxzbyBlbWl0IG9uZSBjb25kaXRpb25hbGx5IHdoZW4gbm90IGluXG4gICAgICAgIC8vIGNvbXBhdGliaWxpdHkgbW9kZS4pXG4gICAgICAgIHJldHVybiBuZXcgby5Db25kaXRpb25hbEV4cHIoXG4gICAgICAgICAgICBuZXcgby5CaW5hcnlPcGVyYXRvckV4cHIoXG4gICAgICAgICAgICAgICAgby5CaW5hcnlPcGVyYXRvci5BbmQsXG4gICAgICAgICAgICAgICAgbmV3IG8uQmluYXJ5T3BlcmF0b3JFeHByKG8uQmluYXJ5T3BlcmF0b3IuTm90SWRlbnRpY2FsLCBleHByLmxocywgby5OVUxMX0VYUFIpLFxuICAgICAgICAgICAgICAgIG5ldyBvLkJpbmFyeU9wZXJhdG9yRXhwcihcbiAgICAgICAgICAgICAgICAgICAgby5CaW5hcnlPcGVyYXRvci5Ob3RJZGVudGljYWwsIGV4cHIubGhzLCBuZXcgby5MaXRlcmFsRXhwcih1bmRlZmluZWQpKSksXG4gICAgICAgICAgICBleHByLmxocyxcbiAgICAgICAgICAgIGV4cHIucmhzLFxuICAgICAgICApO1xuICAgICAgfSwgaXIuVmlzaXRvckNvbnRleHRGbGFnLk5vbmUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -11,5 +11,5 @@
11
11
  * Entry point for all public APIs of the compiler package.
12
12
  */
13
13
  import { Version } from './util';
14
- export const VERSION = new Version('16.1.2');
14
+ export const VERSION = new Version('16.2.0-next.0');
15
15
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBpbGVyL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRS9CLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogQG1vZHVsZVxuICogQGRlc2NyaXB0aW9uXG4gKiBFbnRyeSBwb2ludCBmb3IgYWxsIHB1YmxpYyBBUElzIG9mIHRoZSBjb21waWxlciBwYWNrYWdlLlxuICovXG5cbmltcG9ydCB7VmVyc2lvbn0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBuZXcgVmVyc2lvbignMC4wLjAtUExBQ0VIT0xERVInKTtcbiJdfQ==