@angular/compiler 21.2.0-next.3 → 21.2.0-rc.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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v21.2.0-next.3
2
+ * @license Angular v21.2.0-rc.0
3
3
  * (c) 2010-2026 Google LLC. https://angular.dev/
4
4
  * License: MIT
5
5
  */
@@ -4953,11 +4953,13 @@ class SwitchBlock extends BlockNode {
4953
4953
  expression;
4954
4954
  groups;
4955
4955
  unknownBlocks;
4956
- constructor(expression, groups, unknownBlocks, sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {
4956
+ exhaustiveCheck;
4957
+ constructor(expression, groups, unknownBlocks, exhaustiveCheck, sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {
4957
4958
  super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);
4958
4959
  this.expression = expression;
4959
4960
  this.groups = groups;
4960
4961
  this.unknownBlocks = unknownBlocks;
4962
+ this.exhaustiveCheck = exhaustiveCheck;
4961
4963
  }
4962
4964
  visit(visitor) {
4963
4965
  return visitor.visitSwitchBlock(this);
@@ -4987,6 +4989,14 @@ class SwitchBlockCaseGroup extends BlockNode {
4987
4989
  return visitor.visitSwitchBlockCaseGroup(this);
4988
4990
  }
4989
4991
  }
4992
+ class SwitchExhaustiveCheck extends BlockNode {
4993
+ constructor(sourceSpan, startSourceSpan, endSourceSpan, nameSpan) {
4994
+ super(nameSpan, sourceSpan, startSourceSpan, endSourceSpan);
4995
+ }
4996
+ visit(visitor) {
4997
+ return visitor.visitSwitchExhaustiveCheck(this);
4998
+ }
4999
+ }
4990
5000
  class ForLoopBlock extends BlockNode {
4991
5001
  item;
4992
5002
  expression;
@@ -5305,6 +5315,7 @@ let RecursiveVisitor$1 = class RecursiveVisitor {
5305
5315
  visitAll$1(this, block.cases);
5306
5316
  visitAll$1(this, block.children);
5307
5317
  }
5318
+ visitSwitchExhaustiveCheck(block) {}
5308
5319
  visitForLoopBlock(block) {
5309
5320
  const blockItems = [block.item, ...block.contextVariables, ...block.children];
5310
5321
  block.empty && blockItems.push(block.empty);
@@ -7513,11 +7524,6 @@ var SemanticVariableKind;
7513
7524
  SemanticVariableKind[SemanticVariableKind["SavedView"] = 2] = "SavedView";
7514
7525
  SemanticVariableKind[SemanticVariableKind["Alias"] = 3] = "Alias";
7515
7526
  })(SemanticVariableKind || (SemanticVariableKind = {}));
7516
- var CompatibilityMode;
7517
- (function (CompatibilityMode) {
7518
- CompatibilityMode[CompatibilityMode["Normal"] = 0] = "Normal";
7519
- CompatibilityMode[CompatibilityMode["TemplateDefinitionBuilder"] = 1] = "TemplateDefinitionBuilder";
7520
- })(CompatibilityMode || (CompatibilityMode = {}));
7521
7527
  var BindingKind;
7522
7528
  (function (BindingKind) {
7523
7529
  BindingKind[BindingKind["Attribute"] = 0] = "Attribute";
@@ -9522,12 +9528,10 @@ var TemplateCompilationMode;
9522
9528
  class CompilationJob {
9523
9529
  componentName;
9524
9530
  pool;
9525
- compatibility;
9526
9531
  mode;
9527
- constructor(componentName, pool, compatibility, mode) {
9532
+ constructor(componentName, pool, mode) {
9528
9533
  this.componentName = componentName;
9529
9534
  this.pool = pool;
9530
- this.compatibility = compatibility;
9531
9535
  this.mode = mode;
9532
9536
  }
9533
9537
  kind = CompilationJobKind.Both;
@@ -9543,8 +9547,8 @@ class ComponentCompilationJob extends CompilationJob {
9543
9547
  allDeferrableDepsFn;
9544
9548
  relativeTemplatePath;
9545
9549
  enableDebugLocations;
9546
- constructor(componentName, pool, compatibility, mode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations) {
9547
- super(componentName, pool, compatibility, mode);
9550
+ constructor(componentName, pool, mode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations) {
9551
+ super(componentName, pool, mode);
9548
9552
  this.relativeContextFilePath = relativeContextFilePath;
9549
9553
  this.i18nUseExternalIds = i18nUseExternalIds;
9550
9554
  this.deferMeta = deferMeta;
@@ -9629,8 +9633,8 @@ class ViewCompilationUnit extends CompilationUnit {
9629
9633
  decls = null;
9630
9634
  }
9631
9635
  class HostBindingCompilationJob extends CompilationJob {
9632
- constructor(componentName, pool, compatibility, mode) {
9633
- super(componentName, pool, compatibility, mode);
9636
+ constructor(componentName, pool, mode) {
9637
+ super(componentName, pool, mode);
9634
9638
  this.root = new HostBindingCompilationUnit(this);
9635
9639
  }
9636
9640
  kind = CompilationJobKind.Host;
@@ -9824,7 +9828,7 @@ function extractAttributes(job) {
9824
9828
  break;
9825
9829
  case OpKind.StyleProp:
9826
9830
  case OpKind.ClassProp:
9827
- if (unit.job.compatibility === CompatibilityMode.TemplateDefinitionBuilder && op.expression instanceof EmptyExpr) {
9831
+ if (op.expression instanceof EmptyExpr) {
9828
9832
  OpList.insertBefore(createExtractedAttributeOp(op.target, BindingKind.Property, null, op.name, null, null, null, SecurityContext.STYLE), lookupElement$3(elements, op.target));
9829
9833
  }
9830
9834
  break;
@@ -9832,10 +9836,7 @@ function extractAttributes(job) {
9832
9836
  if (!op.isLegacyAnimationListener) {
9833
9837
  const extractedAttributeOp = createExtractedAttributeOp(op.target, BindingKind.Property, null, op.name, null, null, null, SecurityContext.NONE);
9834
9838
  if (job.kind === CompilationJobKind.Host) {
9835
- if (job.compatibility) {
9836
- break;
9837
- }
9838
- unit.create.push(extractedAttributeOp);
9839
+ break;
9839
9840
  } else {
9840
9841
  OpList.insertBefore(extractedAttributeOp, lookupElement$3(elements, op.target));
9841
9842
  }
@@ -9862,11 +9863,7 @@ function extractAttributeOp(unit, op, elements) {
9862
9863
  if (op.expression instanceof Interpolation) {
9863
9864
  return;
9864
9865
  }
9865
- let extractable = op.isTextAttribute || op.expression.isConstant();
9866
- if (unit.job.compatibility === CompatibilityMode.TemplateDefinitionBuilder) {
9867
- extractable &&= op.isTextAttribute;
9868
- }
9869
- if (extractable) {
9866
+ if (op.isTextAttribute) {
9870
9867
  const extractedAttributeOp = createExtractedAttributeOp(op.target, op.isStructuralTemplateAttribute ? BindingKind.Template : BindingKind.Attribute, op.namespace, op.name, op.expression, op.i18nContext, op.i18nMessage, op.securityContext);
9871
9868
  if (unit.job.kind === CompilationJobKind.Host) {
9872
9869
  unit.create.push(extractedAttributeOp);
@@ -10070,7 +10067,7 @@ function collectElementConsts(job) {
10070
10067
  for (const unit of job.units) {
10071
10068
  for (const op of unit.create) {
10072
10069
  if (op.kind === OpKind.ExtractedAttribute) {
10073
- const attributes = allElementAttributes.get(op.target) || new ElementAttributes(job.compatibility);
10070
+ const attributes = allElementAttributes.get(op.target) || new ElementAttributes();
10074
10071
  allElementAttributes.set(op.target, attributes);
10075
10072
  attributes.add(op.bindingKind, op.name, op.expression, op.namespace, op.trustedValueFn);
10076
10073
  OpList.remove(op);
@@ -10120,7 +10117,6 @@ function getConstIndex(job, allElementAttributes, xref) {
10120
10117
  }
10121
10118
  const FLYWEIGHT_ARRAY = Object.freeze([]);
10122
10119
  class ElementAttributes {
10123
- compatibility;
10124
10120
  known = new Map();
10125
10121
  byKind = new Map();
10126
10122
  propertyBindings = null;
@@ -10143,9 +10139,6 @@ class ElementAttributes {
10143
10139
  get i18n() {
10144
10140
  return this.byKind.get(BindingKind.I18n) ?? FLYWEIGHT_ARRAY;
10145
10141
  }
10146
- constructor(compatibility) {
10147
- this.compatibility = compatibility;
10148
- }
10149
10142
  isKnown(kind, name) {
10150
10143
  const nameToValue = this.known.get(kind) ?? new Set();
10151
10144
  this.known.set(kind, nameToValue);
@@ -10156,7 +10149,7 @@ class ElementAttributes {
10156
10149
  return false;
10157
10150
  }
10158
10151
  add(kind, name, value, namespace, trustedValueFn) {
10159
- const allowDuplicates = this.compatibility === CompatibilityMode.TemplateDefinitionBuilder && (kind === BindingKind.Attribute || kind === BindingKind.ClassName || kind === BindingKind.StyleProperty);
10152
+ const allowDuplicates = kind === BindingKind.Attribute || kind === BindingKind.ClassName || kind === BindingKind.StyleProperty;
10160
10153
  if (!allowDuplicates && this.isKnown(kind, name)) {
10161
10154
  return;
10162
10155
  }
@@ -10396,12 +10389,8 @@ function deduplicateTextBindings(job) {
10396
10389
  for (const op of unit.update.reversed()) {
10397
10390
  if (op.kind === OpKind.Binding && op.isTextAttribute) {
10398
10391
  const seenForElement = seen.get(op.target) || new Set();
10399
- if (seenForElement.has(op.name)) {
10400
- if (job.compatibility === CompatibilityMode.TemplateDefinitionBuilder) {
10401
- if (op.name === 'style' || op.name === 'class') {
10402
- OpList.remove(op);
10403
- }
10404
- }
10392
+ if (seenForElement.has(op.name) && (op.name === 'style' || op.name === 'class')) {
10393
+ OpList.remove(op);
10405
10394
  }
10406
10395
  seenForElement.add(op.name);
10407
10396
  seen.set(op.target, seenForElement);
@@ -10591,7 +10580,7 @@ function eliminateTemporaryAssignments(e, tmps, ctx) {
10591
10580
  transformExpressionsInExpression(e, e => {
10592
10581
  if (e instanceof AssignTemporaryExpr && tmps.has(e.xref)) {
10593
10582
  const read = new ReadTemporaryExpr(e.xref);
10594
- return ctx.job.compatibility === CompatibilityMode.TemplateDefinitionBuilder ? new AssignTemporaryExpr(read, read.xref) : read;
10583
+ return new AssignTemporaryExpr(read, read.xref);
10595
10584
  }
10596
10585
  return e;
10597
10586
  }, VisitorContextFlag.None);
@@ -10604,7 +10593,7 @@ function safeTernaryWithTemporary(guard, body, ctx) {
10604
10593
  result = [new AssignTemporaryExpr(guard, xref), new ReadTemporaryExpr(xref)];
10605
10594
  } else {
10606
10595
  result = [guard, guard.clone()];
10607
- eliminateTemporaryAssignments(result[1], temporariesIn(result[0]), ctx);
10596
+ eliminateTemporaryAssignments(result[1], temporariesIn(result[0]));
10608
10597
  }
10609
10598
  return new SafeTernaryExpr(result[0], body(result[1]));
10610
10599
  }
@@ -10880,7 +10869,7 @@ function generateLocalLetReferences(job) {
10880
10869
  }
10881
10870
 
10882
10871
  function generateProjectionDefs(job) {
10883
- const share = job.compatibility === CompatibilityMode.TemplateDefinitionBuilder;
10872
+ const share = true;
10884
10873
  const selectors = [];
10885
10874
  let projectionSlotIndex = 0;
10886
10875
  for (const unit of job.units) {
@@ -13669,6 +13658,13 @@ class _Tokenizer {
13669
13658
  this._requireCharCode($AT);
13670
13659
  this._beginToken(24, start);
13671
13660
  const startToken = this._endToken([this._getBlockName()]);
13661
+ if (startToken.parts[0] === 'default never' && this._attemptCharCode($SEMICOLON)) {
13662
+ this._beginToken(25);
13663
+ this._endToken([]);
13664
+ this._beginToken(26);
13665
+ this._endToken([]);
13666
+ return;
13667
+ }
13672
13668
  if (this._cursor.peek() === $LPAREN) {
13673
13669
  this._cursor.advance();
13674
13670
  this._consumeBlockParameters();
@@ -15121,8 +15117,15 @@ class _TreeBuilder {
15121
15117
  this._pushContainer(block, false);
15122
15118
  }
15123
15119
  _consumeBlockClose(token) {
15120
+ const initialStackLength = this._containerStack.length;
15121
+ const topNode = this._containerStack[initialStackLength - 1];
15124
15122
  if (!this._popContainer(null, Block, token.sourceSpan)) {
15125
- this.errors.push(TreeError.create(null, token.sourceSpan, `Unexpected closing block. The block may have been closed earlier. ` + `If you meant to write the } character, you should use the "}" ` + `HTML entity instead.`));
15123
+ if (this._containerStack.length < initialStackLength) {
15124
+ const nodeName = topNode instanceof Component ? topNode.fullName : topNode.name;
15125
+ this.errors.push(TreeError.create(null, token.sourceSpan, `Unexpected closing block. The block may have been closed earlier. ` + `Did you forget to close the <${nodeName}> element? ` + `If you meant to write the \`}\` character, you should use the "&#125;" ` + `HTML entity instead.`));
15126
+ return;
15127
+ }
15128
+ this.errors.push(TreeError.create(null, token.sourceSpan, `Unexpected closing block. The block may have been closed earlier. ` + `If you meant to write the \`}\` character, you should use the "&#125;" ` + `HTML entity instead.`));
15126
15129
  }
15127
15130
  }
15128
15131
  _consumeIncompleteBlock(token) {
@@ -18867,9 +18870,9 @@ function parseExtractedStyles(job) {
18867
18870
  function nameFunctionsAndVariables(job) {
18868
18871
  addNamesToView(job.root, job.componentName, {
18869
18872
  index: 0
18870
- }, job.compatibility === CompatibilityMode.TemplateDefinitionBuilder);
18873
+ });
18871
18874
  }
18872
- function addNamesToView(unit, baseName, state, compatibility) {
18875
+ function addNamesToView(unit, baseName, state) {
18873
18876
  if (unit.fnName === null) {
18874
18877
  unit.fnName = unit.job.pool.uniqueName(sanitizeIdentifier(`${baseName}_${unit.job.fnSuffix}`), false);
18875
18878
  }
@@ -18933,7 +18936,7 @@ function addNamesToView(unit, baseName, state, compatibility) {
18933
18936
  op.handlerFnName = sanitizeIdentifier(`${unit.fnName}_${op.tag.replace('-', '_')}_${op.name}_${op.targetSlot.slot}_listener`);
18934
18937
  break;
18935
18938
  case OpKind.Variable:
18936
- varNames.set(op.xref, getVariableName(unit, op.variable, state));
18939
+ varNames.set(op.xref, getVariableName(op.variable, state));
18937
18940
  break;
18938
18941
  case OpKind.RepeaterCreate:
18939
18942
  if (!(unit instanceof ViewCompilationUnit)) {
@@ -18944,9 +18947,9 @@ function addNamesToView(unit, baseName, state, compatibility) {
18944
18947
  }
18945
18948
  if (op.emptyView !== null) {
18946
18949
  const emptyView = unit.job.views.get(op.emptyView);
18947
- addNamesToView(emptyView, `${baseName}_${op.functionNameSuffix}Empty_${op.handle.slot + 2}`, state, compatibility);
18950
+ addNamesToView(emptyView, `${baseName}_${op.functionNameSuffix}Empty_${op.handle.slot + 2}`, state);
18948
18951
  }
18949
- addNamesToView(unit.job.views.get(op.xref), `${baseName}_${op.functionNameSuffix}_${op.handle.slot + 1}`, state, compatibility);
18952
+ addNamesToView(unit.job.views.get(op.xref), `${baseName}_${op.functionNameSuffix}_${op.handle.slot + 1}`, state);
18950
18953
  break;
18951
18954
  case OpKind.Projection:
18952
18955
  if (!(unit instanceof ViewCompilationUnit)) {
@@ -18957,7 +18960,7 @@ function addNamesToView(unit, baseName, state, compatibility) {
18957
18960
  }
18958
18961
  if (op.fallbackView !== null) {
18959
18962
  const fallbackView = unit.job.views.get(op.fallbackView);
18960
- addNamesToView(fallbackView, `${baseName}_ProjectionFallback_${op.handle.slot}`, state, compatibility);
18963
+ addNamesToView(fallbackView, `${baseName}_ProjectionFallback_${op.handle.slot}`, state);
18961
18964
  }
18962
18965
  break;
18963
18966
  case OpKind.ConditionalCreate:
@@ -18971,18 +18974,13 @@ function addNamesToView(unit, baseName, state, compatibility) {
18971
18974
  throw new Error(`Expected slot to be assigned`);
18972
18975
  }
18973
18976
  const suffix = op.functionNameSuffix.length === 0 ? '' : `_${op.functionNameSuffix}`;
18974
- addNamesToView(childView, `${baseName}${suffix}_${op.handle.slot}`, state, compatibility);
18977
+ addNamesToView(childView, `${baseName}${suffix}_${op.handle.slot}`, state);
18975
18978
  break;
18976
18979
  case OpKind.StyleProp:
18977
- op.name = normalizeStylePropName(op.name);
18978
- if (compatibility) {
18979
- op.name = stripImportant(op.name);
18980
- }
18980
+ op.name = stripImportant(normalizeStylePropName(op.name));
18981
18981
  break;
18982
18982
  case OpKind.ClassProp:
18983
- if (compatibility) {
18984
- op.name = stripImportant(op.name);
18985
- }
18983
+ op.name = stripImportant(op.name);
18986
18984
  break;
18987
18985
  }
18988
18986
  }
@@ -18998,19 +18996,15 @@ function addNamesToView(unit, baseName, state, compatibility) {
18998
18996
  });
18999
18997
  }
19000
18998
  }
19001
- function getVariableName(unit, variable, state) {
18999
+ function getVariableName(variable, state) {
19002
19000
  if (variable.name === null) {
19003
19001
  switch (variable.kind) {
19004
19002
  case SemanticVariableKind.Context:
19005
19003
  variable.name = `ctx_r${state.index++}`;
19006
19004
  break;
19007
19005
  case SemanticVariableKind.Identifier:
19008
- if (unit.job.compatibility === CompatibilityMode.TemplateDefinitionBuilder) {
19009
- const compatPrefix = variable.identifier === CONTEXT_NAME ? 'i' : '';
19010
- variable.name = `${variable.identifier}_${compatPrefix}r${++state.index}`;
19011
- } else {
19012
- variable.name = `${variable.identifier}_i${state.index++}`;
19013
- }
19006
+ const compatPrefix = variable.identifier === CONTEXT_NAME ? 'i' : '';
19007
+ variable.name = `${variable.identifier}_${compatPrefix}r${++state.index}`;
19014
19008
  break;
19015
19009
  default:
19016
19010
  variable.name = `_r${++state.index}`;
@@ -19265,15 +19259,11 @@ function processPipeBindingsInView(unit) {
19265
19259
  if (flags & VisitorContextFlag.InChildOperation) {
19266
19260
  throw new Error(`AssertionError: pipe bindings should not appear in child expressions`);
19267
19261
  }
19268
- if (unit.job.compatibility) {
19269
- const slotHandle = updateOp.target;
19270
- if (slotHandle == undefined) {
19271
- throw new Error(`AssertionError: expected slot handle to be assigned for pipe creation`);
19272
- }
19273
- addPipeToCreationBlock(unit, updateOp.target, expr);
19274
- } else {
19275
- unit.create.push(createPipeOp(expr.target, expr.targetSlot, expr.name));
19262
+ const slotHandle = updateOp.target;
19263
+ if (slotHandle == undefined) {
19264
+ throw new Error(`AssertionError: expected slot handle to be assigned for pipe creation`);
19276
19265
  }
19266
+ addPipeToCreationBlock(unit, updateOp.target, expr);
19277
19267
  });
19278
19268
  }
19279
19269
  }
@@ -21345,7 +21335,7 @@ function countVariables(job) {
21345
21335
  if (!isIrExpression(expr)) {
21346
21336
  return;
21347
21337
  }
21348
- if (job.compatibility === CompatibilityMode.TemplateDefinitionBuilder && expr instanceof PureFunctionExpr) {
21338
+ if (expr instanceof PureFunctionExpr) {
21349
21339
  return;
21350
21340
  }
21351
21341
  if (hasUsesVarOffsetTrait(expr)) {
@@ -21372,13 +21362,11 @@ function countVariables(job) {
21372
21362
  for (const updateOp of unit.update) {
21373
21363
  visitExpressionsInOp(updateOp, firstPassCountExpressionVars);
21374
21364
  }
21375
- if (job.compatibility === CompatibilityMode.TemplateDefinitionBuilder) {
21376
- for (const createOp of unit.create) {
21377
- visitExpressionsInOp(createOp, secondPassCountExpressionVars);
21378
- }
21379
- for (const updateOp of unit.update) {
21380
- visitExpressionsInOp(updateOp, secondPassCountExpressionVars);
21381
- }
21365
+ for (const createOp of unit.create) {
21366
+ visitExpressionsInOp(createOp, secondPassCountExpressionVars);
21367
+ }
21368
+ for (const updateOp of unit.update) {
21369
+ visitExpressionsInOp(updateOp, secondPassCountExpressionVars);
21382
21370
  }
21383
21371
  unit.vars = varCount;
21384
21372
  }
@@ -21476,19 +21464,19 @@ function optimizeVariables(job) {
21476
21464
  }
21477
21465
  }
21478
21466
  for (const expr of unit.functions) {
21479
- optimizeVariablesInOpList(expr.ops, job.compatibility, null);
21467
+ optimizeVariablesInOpList(expr.ops, null);
21480
21468
  optimizeSaveRestoreView(expr.ops);
21481
21469
  }
21482
21470
  for (const op of unit.create) {
21483
21471
  if (op.kind === OpKind.Listener || op.kind === OpKind.Animation || op.kind === OpKind.AnimationListener || op.kind === OpKind.TwoWayListener) {
21484
- optimizeVariablesInOpList(op.handlerOps, job.compatibility, skipArrowFunctionOps);
21472
+ optimizeVariablesInOpList(op.handlerOps, skipArrowFunctionOps);
21485
21473
  optimizeSaveRestoreView(op.handlerOps);
21486
21474
  } else if (op.kind === OpKind.RepeaterCreate && op.trackByOps !== null) {
21487
- optimizeVariablesInOpList(op.trackByOps, job.compatibility, skipArrowFunctionOps);
21475
+ optimizeVariablesInOpList(op.trackByOps, skipArrowFunctionOps);
21488
21476
  }
21489
21477
  }
21490
- optimizeVariablesInOpList(unit.create, job.compatibility, skipArrowFunctionOps);
21491
- optimizeVariablesInOpList(unit.update, job.compatibility, skipArrowFunctionOps);
21478
+ optimizeVariablesInOpList(unit.create, skipArrowFunctionOps);
21479
+ optimizeVariablesInOpList(unit.update, skipArrowFunctionOps);
21492
21480
  }
21493
21481
  }
21494
21482
  var Fence;
@@ -21524,7 +21512,7 @@ function inlineAlwaysInlineVariables(ops) {
21524
21512
  OpList.remove(op);
21525
21513
  }
21526
21514
  }
21527
- function optimizeVariablesInOpList(ops, compatibility, predicate) {
21515
+ function optimizeVariablesInOpList(ops, predicate) {
21528
21516
  const varDecls = new Map();
21529
21517
  const varUsages = new Map();
21530
21518
  const varRemoteUsages = new Set();
@@ -21584,7 +21572,7 @@ function optimizeVariablesInOpList(ops, compatibility, predicate) {
21584
21572
  for (let targetOp = decl.next; targetOp.kind !== OpKind.ListEnd; targetOp = targetOp.next) {
21585
21573
  const opInfo = opMap.get(targetOp);
21586
21574
  if (opInfo.variablesUsed.has(candidate)) {
21587
- if (compatibility === CompatibilityMode.TemplateDefinitionBuilder && !allowConservativeInlining(decl, targetOp)) {
21575
+ if (!allowConservativeInlining(decl, targetOp)) {
21588
21576
  break;
21589
21577
  }
21590
21578
  if (tryInlineVariableInitializer(candidate, decl.initializer, targetOp, varInfo.fences)) {
@@ -22120,7 +22108,6 @@ function emitHostBindingFunction(job) {
22120
22108
  return fn([new FnParam(RENDER_FLAGS), new FnParam(CONTEXT_NAME)], [...createCond, ...updateCond], undefined, undefined, job.root.fnName);
22121
22109
  }
22122
22110
 
22123
- const compatibilityMode = CompatibilityMode.TemplateDefinitionBuilder;
22124
22111
  const domSchema = new DomElementSchemaRegistry();
22125
22112
  const NG_TEMPLATE_TAG_NAME = 'ng-template';
22126
22113
  const ANIMATE_PREFIX$1 = 'animate.';
@@ -22131,12 +22118,12 @@ function isSingleI18nIcu(meta) {
22131
22118
  return isI18nRootNode(meta) && meta.nodes.length === 1 && meta.nodes[0] instanceof Icu;
22132
22119
  }
22133
22120
  function ingestComponent(componentName, template, constantPool, compilationMode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations) {
22134
- const job = new ComponentCompilationJob(componentName, constantPool, compatibilityMode, compilationMode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations);
22121
+ const job = new ComponentCompilationJob(componentName, constantPool, compilationMode, relativeContextFilePath, i18nUseExternalIds, deferMeta, allDeferrableDepsFn, relativeTemplatePath, enableDebugLocations);
22135
22122
  ingestNodes(job.root, template);
22136
22123
  return job;
22137
22124
  }
22138
22125
  function ingestHostBinding(input, bindingParser, constantPool) {
22139
- const job = new HostBindingCompilationJob(input.componentName, constantPool, compatibilityMode, TemplateCompilationMode.DomOnly);
22126
+ const job = new HostBindingCompilationJob(input.componentName, constantPool, TemplateCompilationMode.DomOnly);
22140
22127
  for (const property of input.properties ?? []) {
22141
22128
  let bindingKind = BindingKind.Property;
22142
22129
  if (property.name.startsWith('attr.')) {
@@ -22304,8 +22291,7 @@ function ingestBoundText(unit, text, icuPlaceholder) {
22304
22291
  }
22305
22292
  const textXref = unit.job.allocateXrefId();
22306
22293
  unit.create.push(createTextOp(textXref, '', icuPlaceholder, text.sourceSpan));
22307
- const baseSourceSpan = unit.job.compatibility ? null : text.sourceSpan;
22308
- unit.update.push(createInterpolateTextOp(textXref, new Interpolation(value.strings, value.expressions.map(expr => convertAst(expr, unit.job, baseSourceSpan)), i18nPlaceholders), text.sourceSpan));
22294
+ unit.update.push(createInterpolateTextOp(textXref, new Interpolation(value.strings, value.expressions.map(expr => convertAst(expr, unit.job, null)), i18nPlaceholders), text.sourceSpan));
22309
22295
  }
22310
22296
  function ingestIfBlock(unit, ifBlock) {
22311
22297
  let firstXref = null;
@@ -23591,18 +23577,31 @@ function createSwitchBlock(ast, visitor, bindingParser) {
23591
23577
  const unknownBlocks = [];
23592
23578
  let collectedCases = [];
23593
23579
  let firstCaseStart = null;
23580
+ let exhaustiveCheck = null;
23594
23581
  for (const node of ast.children) {
23595
23582
  if (!(node instanceof Block)) {
23596
23583
  continue;
23597
23584
  }
23598
- if ((node.name !== 'case' || node.parameters.length === 0) && node.name !== 'default') {
23585
+ if ((node.name !== 'case' || node.parameters.length === 0) && node.name !== 'default' && node.name !== 'default never') {
23599
23586
  unknownBlocks.push(new UnknownBlock(node.name, node.sourceSpan, node.nameSpan));
23600
23587
  continue;
23601
23588
  }
23589
+ if (exhaustiveCheck !== null) {
23590
+ errors.push(new ParseError(node.sourceSpan, '@default block with "never" parameter must be the last case in a switch'));
23591
+ }
23602
23592
  const isCase = node.name === 'case';
23603
23593
  let expression = null;
23604
23594
  if (isCase) {
23605
23595
  expression = parseBlockParameterToBinding(node.parameters[0], bindingParser);
23596
+ } else if (node.name === 'default never') {
23597
+ if (node.children.length > 0 || node.endSourceSpan !== null && node.endSourceSpan.start.offset !== node.endSourceSpan.end.offset) {
23598
+ errors.push(new ParseError(node.sourceSpan, '@default block with "never" parameter cannot have a body'));
23599
+ }
23600
+ if (collectedCases.length > 0) {
23601
+ errors.push(new ParseError(node.sourceSpan, 'A @case block with no body cannot be followed by a @default block with "never" parameter'));
23602
+ }
23603
+ exhaustiveCheck = new SwitchExhaustiveCheck(node.sourceSpan, node.startSourceSpan, node.endSourceSpan, node.nameSpan);
23604
+ continue;
23606
23605
  }
23607
23606
  const switchCase = new SwitchBlockCase(expression, node.sourceSpan, node.startSourceSpan, node.endSourceSpan, node.nameSpan);
23608
23607
  collectedCases.push(switchCase);
@@ -23624,7 +23623,7 @@ function createSwitchBlock(ast, visitor, bindingParser) {
23624
23623
  groups.push(group);
23625
23624
  collectedCases = [];
23626
23625
  }
23627
- const node = new SwitchBlock(primaryExpression, groups, unknownBlocks, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.nameSpan);
23626
+ const node = new SwitchBlock(primaryExpression, groups, unknownBlocks, exhaustiveCheck, ast.sourceSpan, ast.startSourceSpan, ast.endSourceSpan, ast.nameSpan);
23628
23627
  return {
23629
23628
  node,
23630
23629
  errors
@@ -23751,11 +23750,16 @@ function validateSwitchBlock(ast) {
23751
23750
  if (node instanceof Comment || node instanceof Text && node.value.trim().length === 0) {
23752
23751
  continue;
23753
23752
  }
23754
- if (!(node instanceof Block) || node.name !== 'case' && node.name !== 'default') {
23753
+ if (!(node instanceof Block) || node.name !== 'case' && node.name !== 'default' && node.name !== 'default never') {
23755
23754
  errors.push(new ParseError(node.sourceSpan, '@switch block can only contain @case and @default blocks'));
23756
23755
  continue;
23757
23756
  }
23758
- if (node.name === 'default') {
23757
+ if (node.name === 'default never') {
23758
+ if (hasDefault) {
23759
+ errors.push(new ParseError(node.startSourceSpan, '@switch block can only have one @default block'));
23760
+ }
23761
+ hasDefault = true;
23762
+ } else if (node.name === 'default') {
23759
23763
  if (hasDefault) {
23760
23764
  errors.push(new ParseError(node.startSourceSpan, '@switch block can only have one @default block'));
23761
23765
  } else if (node.parameters.length > 0) {
@@ -25575,6 +25579,7 @@ class CombinedRecursiveAstVisitor extends RecursiveAstVisitor {
25575
25579
  this.visitAllTemplateNodes(block.cases);
25576
25580
  this.visitAllTemplateNodes(block.children);
25577
25581
  }
25582
+ visitSwitchExhaustiveCheck(block) {}
25578
25583
  visitForLoopBlock(block) {
25579
25584
  block.item.visit(this);
25580
25585
  this.visitAllTemplateNodes(block.contextVariables);
@@ -25773,6 +25778,7 @@ class Scope {
25773
25778
  visitSwitchBlockCaseGroup(block) {
25774
25779
  this.ingestScopedNode(block);
25775
25780
  }
25781
+ visitSwitchExhaustiveCheck(block) {}
25776
25782
  visitForLoopBlock(block) {
25777
25783
  this.ingestScopedNode(block);
25778
25784
  block.empty?.visit(this);
@@ -25893,6 +25899,7 @@ class DirectiveBinder {
25893
25899
  visitSwitchBlockCaseGroup(block) {
25894
25900
  block.children.forEach(node => node.visit(this));
25895
25901
  }
25902
+ visitSwitchExhaustiveCheck(block) {}
25896
25903
  visitForLoopBlock(block) {
25897
25904
  block.item.visit(this);
25898
25905
  block.contextVariables.forEach(v => v.visit(this));
@@ -26129,6 +26136,7 @@ class TemplateBinder extends CombinedRecursiveAstVisitor {
26129
26136
  block.cases.forEach(caseNode => caseNode.visit(this));
26130
26137
  this.ingestScopedNode(block);
26131
26138
  }
26139
+ visitSwitchExhaustiveCheck(block) {}
26132
26140
  visitForLoopBlock(block) {
26133
26141
  block.expression.visit(this);
26134
26142
  this.ingestScopedNode(block);
@@ -28522,7 +28530,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
28522
28530
  function compileDeclareClassMetadata(metadata) {
28523
28531
  const definitionMap = new DefinitionMap();
28524
28532
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
28525
- definitionMap.set('version', literal('21.2.0-next.3'));
28533
+ definitionMap.set('version', literal('21.2.0-rc.0'));
28526
28534
  definitionMap.set('ngImport', importExpr(Identifiers.core));
28527
28535
  definitionMap.set('type', metadata.type);
28528
28536
  definitionMap.set('decorators', metadata.decorators);
@@ -28540,7 +28548,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
28540
28548
  callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? literal(null));
28541
28549
  callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? literal(null));
28542
28550
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
28543
- definitionMap.set('version', literal('21.2.0-next.3'));
28551
+ definitionMap.set('version', literal('21.2.0-rc.0'));
28544
28552
  definitionMap.set('ngImport', importExpr(Identifiers.core));
28545
28553
  definitionMap.set('type', metadata.type);
28546
28554
  definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
@@ -28613,7 +28621,7 @@ function createDirectiveDefinitionMap(meta) {
28613
28621
  const definitionMap = new DefinitionMap();
28614
28622
  const minVersion = getMinimumVersionForPartialOutput(meta);
28615
28623
  definitionMap.set('minVersion', literal(minVersion));
28616
- definitionMap.set('version', literal('21.2.0-next.3'));
28624
+ definitionMap.set('version', literal('21.2.0-rc.0'));
28617
28625
  definitionMap.set('type', meta.type.value);
28618
28626
  if (meta.isStandalone !== undefined) {
28619
28627
  definitionMap.set('isStandalone', literal(meta.isStandalone));
@@ -28955,7 +28963,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
28955
28963
  function compileDeclareFactoryFunction(meta) {
28956
28964
  const definitionMap = new DefinitionMap();
28957
28965
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
28958
- definitionMap.set('version', literal('21.2.0-next.3'));
28966
+ definitionMap.set('version', literal('21.2.0-rc.0'));
28959
28967
  definitionMap.set('ngImport', importExpr(Identifiers.core));
28960
28968
  definitionMap.set('type', meta.type.value);
28961
28969
  definitionMap.set('deps', compileDependencies(meta.deps));
@@ -28981,7 +28989,7 @@ function compileDeclareInjectableFromMetadata(meta) {
28981
28989
  function createInjectableDefinitionMap(meta) {
28982
28990
  const definitionMap = new DefinitionMap();
28983
28991
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
28984
- definitionMap.set('version', literal('21.2.0-next.3'));
28992
+ definitionMap.set('version', literal('21.2.0-rc.0'));
28985
28993
  definitionMap.set('ngImport', importExpr(Identifiers.core));
28986
28994
  definitionMap.set('type', meta.type.value);
28987
28995
  if (meta.providedIn !== undefined) {
@@ -29022,7 +29030,7 @@ function compileDeclareInjectorFromMetadata(meta) {
29022
29030
  function createInjectorDefinitionMap(meta) {
29023
29031
  const definitionMap = new DefinitionMap();
29024
29032
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
29025
- definitionMap.set('version', literal('21.2.0-next.3'));
29033
+ definitionMap.set('version', literal('21.2.0-rc.0'));
29026
29034
  definitionMap.set('ngImport', importExpr(Identifiers.core));
29027
29035
  definitionMap.set('type', meta.type.value);
29028
29036
  definitionMap.set('providers', meta.providers);
@@ -29049,7 +29057,7 @@ function createNgModuleDefinitionMap(meta) {
29049
29057
  throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
29050
29058
  }
29051
29059
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
29052
- definitionMap.set('version', literal('21.2.0-next.3'));
29060
+ definitionMap.set('version', literal('21.2.0-rc.0'));
29053
29061
  definitionMap.set('ngImport', importExpr(Identifiers.core));
29054
29062
  definitionMap.set('type', meta.type.value);
29055
29063
  if (meta.bootstrap.length > 0) {
@@ -29087,7 +29095,7 @@ function compileDeclarePipeFromMetadata(meta) {
29087
29095
  function createPipeDefinitionMap(meta) {
29088
29096
  const definitionMap = new DefinitionMap();
29089
29097
  definitionMap.set('minVersion', literal(MINIMUM_PARTIAL_LINKER_VERSION));
29090
- definitionMap.set('version', literal('21.2.0-next.3'));
29098
+ definitionMap.set('version', literal('21.2.0-rc.0'));
29091
29099
  definitionMap.set('ngImport', importExpr(Identifiers.core));
29092
29100
  definitionMap.set('type', meta.type.value);
29093
29101
  if (meta.isStandalone !== undefined) {
@@ -29161,9 +29169,9 @@ function compileHmrUpdateCallback(definitions, constantStatements, meta) {
29161
29169
  return new DeclareFunctionStmt(`${meta.className}_UpdateMetadata`, params, body, null, StmtModifier.Final);
29162
29170
  }
29163
29171
 
29164
- const VERSION = new Version('21.2.0-next.3');
29172
+ const VERSION = new Version('21.2.0-rc.0');
29165
29173
 
29166
29174
  publishFacade(_global);
29167
29175
 
29168
- export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunction, ArrowFunctionExpr$1 as ArrowFunctionExpr, ArrowFunctionIdentifierParameter, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingPipeType, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CombinedRecursiveAstVisitor, CommaExpr, Comment, CompilerConfig, CompilerFacadeImpl, Component, Conditional, ConditionalExpr, ConstantPool, CssSelector, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, Directive, DomElementSchemaRegistry, DynamicImportExpr, EOF, Element, ElementSchemaRegistry, EmitterVisitorContext, EmptyExpr$1 as EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, FactoryTarget, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, LeadingComment, LetDeclaration, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralMapPropertyAssignment, LiteralMapSpreadAssignment, LiteralPrimitive, LocalizedString, MapType, MessageBundle, NONE_TYPE, NO_ERRORS_SCHEMA, NodeWithI18n, NonNullAssert, NotExpr, ParenthesizedExpr, ParenthesizedExpression, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedEventType, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser, PrefixNot, PropertyRead, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, RegularExpressionLiteral, RegularExpressionLiteralExpr, ResourceLoader, ReturnStatement, SCHEMA, SECURITY_SCHEMA, STRING_TYPE, SafeCall, SafeKeyedRead, SafePropertyRead, SelectorContext, SelectorListContext, SelectorMatcher, SelectorlessMatcher, Serializer, SplitInterpolation, SpreadElement, SpreadElementExpr, Statement, StmtModifier, StringToken, StringTokenKind, TagContentType, TaggedTemplateLiteral, TaggedTemplateLiteralExpr, TemplateBindingParseResult, TemplateLiteral, TemplateLiteralElement, TemplateLiteralElementExpr, TemplateLiteralExpr, Text, ThisReceiver, BlockNode as TmplAstBlockNode, BoundAttribute as TmplAstBoundAttribute, BoundDeferredTrigger as TmplAstBoundDeferredTrigger, BoundEvent as TmplAstBoundEvent, BoundText as TmplAstBoundText, Component$1 as TmplAstComponent, Content as TmplAstContent, DeferredBlock as TmplAstDeferredBlock, DeferredBlockError as TmplAstDeferredBlockError, DeferredBlockLoading as TmplAstDeferredBlockLoading, DeferredBlockPlaceholder as TmplAstDeferredBlockPlaceholder, DeferredTrigger as TmplAstDeferredTrigger, Directive$1 as TmplAstDirective, Element$1 as TmplAstElement, ForLoopBlock as TmplAstForLoopBlock, ForLoopBlockEmpty as TmplAstForLoopBlockEmpty, HostElement as TmplAstHostElement, HoverDeferredTrigger as TmplAstHoverDeferredTrigger, Icu$1 as TmplAstIcu, IdleDeferredTrigger as TmplAstIdleDeferredTrigger, IfBlock as TmplAstIfBlock, IfBlockBranch as TmplAstIfBlockBranch, ImmediateDeferredTrigger as TmplAstImmediateDeferredTrigger, InteractionDeferredTrigger as TmplAstInteractionDeferredTrigger, LetDeclaration$1 as TmplAstLetDeclaration, NeverDeferredTrigger as TmplAstNeverDeferredTrigger, RecursiveVisitor$1 as TmplAstRecursiveVisitor, Reference as TmplAstReference, SwitchBlock as TmplAstSwitchBlock, SwitchBlockCase as TmplAstSwitchBlockCase, SwitchBlockCaseGroup as TmplAstSwitchBlockCaseGroup, Template as TmplAstTemplate, Text$3 as TmplAstText, TextAttribute as TmplAstTextAttribute, TimerDeferredTrigger as TmplAstTimerDeferredTrigger, UnknownBlock as TmplAstUnknownBlock, Variable as TmplAstVariable, ViewportDeferredTrigger as TmplAstViewportDeferredTrigger, Token, TokenType, TransplantedType, TreeError, Type, TypeModifier, TypeofExpr, TypeofExpression, Unary, UnaryOperator, UnaryOperatorExpr, VERSION, VariableBinding, Version, ViewEncapsulation$1 as ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, _ATTR_TO_PROP, compileClassDebugInfo, compileClassMetadata, compileComponentClassMetadata, compileComponentDeclareClassMetadata, compileComponentFromMetadata, compileDeclareClassMetadata, compileDeclareComponentFromMetadata, compileDeclareDirectiveFromMetadata, compileDeclareFactoryFunction, compileDeclareInjectableFromMetadata, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileDeclarePipeFromMetadata, compileDeferResolverFunction, compileDirectiveFromMetadata, compileFactoryFunction, compileHmrInitializer, compileHmrUpdateCallback, compileInjectable, compileInjector, compileNgModule, compileOpaqueAsyncClassMetadata, compilePipeFromMetadata, computeMsgId, core, createCssSelectorFromNode, createInjectableType, createMayBeForwardRefExpression, devOnlyGuardedExpression, emitDistinctChangesOnlyDefaultValue, encapsulateStyle, escapeRegExp, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, setEnableTemplateSourceLocations, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };
29176
+ export { AST, ASTWithName, ASTWithSource, AbsoluteSourceSpan, ArrayType, ArrowFunction, ArrowFunctionExpr$1 as ArrowFunctionExpr, ArrowFunctionIdentifierParameter, Attribute, Binary, BinaryOperator, BinaryOperatorExpr, BindingPipe, BindingPipeType, BindingType, Block, BlockParameter, BoundElementProperty, BuiltinType, BuiltinTypeName, CUSTOM_ELEMENTS_SCHEMA, Call, Chain, ChangeDetectionStrategy, CombinedRecursiveAstVisitor, CommaExpr, Comment, CompilerConfig, CompilerFacadeImpl, Component, Conditional, ConditionalExpr, ConstantPool, CssSelector, DYNAMIC_TYPE, DeclareFunctionStmt, DeclareVarStmt, Directive, DomElementSchemaRegistry, DynamicImportExpr, EOF, Element, ElementSchemaRegistry, EmitterVisitorContext, EmptyExpr$1 as EmptyExpr, Expansion, ExpansionCase, Expression, ExpressionBinding, ExpressionStatement, ExpressionType, ExternalExpr, ExternalReference, FactoryTarget, FunctionExpr, HtmlParser, HtmlTagDefinition, I18NHtmlParser, IfStmt, ImplicitReceiver, InstantiateExpr, Interpolation$1 as Interpolation, InvokeFunctionExpr, JSDocComment, JitEvaluator, KeyedRead, LeadingComment, LetDeclaration, Lexer, LiteralArray, LiteralArrayExpr, LiteralExpr, LiteralMap, LiteralMapExpr, LiteralMapPropertyAssignment, LiteralMapSpreadAssignment, LiteralPrimitive, LocalizedString, MapType, MessageBundle, NONE_TYPE, NO_ERRORS_SCHEMA, NodeWithI18n, NonNullAssert, NotExpr, ParenthesizedExpr, ParenthesizedExpression, ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan, ParseSpan, ParseTreeResult, ParsedEvent, ParsedEventType, ParsedProperty, ParsedPropertyType, ParsedVariable, Parser, PrefixNot, PropertyRead, Identifiers as R3Identifiers, R3NgModuleMetadataKind, R3SelectorScopeMode, R3TargetBinder, R3TemplateDependencyKind, ReadKeyExpr, ReadPropExpr, ReadVarExpr, RecursiveAstVisitor, RecursiveVisitor, RegularExpressionLiteral, RegularExpressionLiteralExpr, ResourceLoader, ReturnStatement, SCHEMA, SECURITY_SCHEMA, STRING_TYPE, SafeCall, SafeKeyedRead, SafePropertyRead, SelectorContext, SelectorListContext, SelectorMatcher, SelectorlessMatcher, Serializer, SplitInterpolation, SpreadElement, SpreadElementExpr, Statement, StmtModifier, StringToken, StringTokenKind, TagContentType, TaggedTemplateLiteral, TaggedTemplateLiteralExpr, TemplateBindingParseResult, TemplateLiteral, TemplateLiteralElement, TemplateLiteralElementExpr, TemplateLiteralExpr, Text, ThisReceiver, BlockNode as TmplAstBlockNode, BoundAttribute as TmplAstBoundAttribute, BoundDeferredTrigger as TmplAstBoundDeferredTrigger, BoundEvent as TmplAstBoundEvent, BoundText as TmplAstBoundText, Component$1 as TmplAstComponent, Content as TmplAstContent, DeferredBlock as TmplAstDeferredBlock, DeferredBlockError as TmplAstDeferredBlockError, DeferredBlockLoading as TmplAstDeferredBlockLoading, DeferredBlockPlaceholder as TmplAstDeferredBlockPlaceholder, DeferredTrigger as TmplAstDeferredTrigger, Directive$1 as TmplAstDirective, Element$1 as TmplAstElement, ForLoopBlock as TmplAstForLoopBlock, ForLoopBlockEmpty as TmplAstForLoopBlockEmpty, HostElement as TmplAstHostElement, HoverDeferredTrigger as TmplAstHoverDeferredTrigger, Icu$1 as TmplAstIcu, IdleDeferredTrigger as TmplAstIdleDeferredTrigger, IfBlock as TmplAstIfBlock, IfBlockBranch as TmplAstIfBlockBranch, ImmediateDeferredTrigger as TmplAstImmediateDeferredTrigger, InteractionDeferredTrigger as TmplAstInteractionDeferredTrigger, LetDeclaration$1 as TmplAstLetDeclaration, NeverDeferredTrigger as TmplAstNeverDeferredTrigger, RecursiveVisitor$1 as TmplAstRecursiveVisitor, Reference as TmplAstReference, SwitchBlock as TmplAstSwitchBlock, SwitchBlockCase as TmplAstSwitchBlockCase, SwitchBlockCaseGroup as TmplAstSwitchBlockCaseGroup, SwitchExhaustiveCheck as TmplAstSwitchExhaustiveCheck, Template as TmplAstTemplate, Text$3 as TmplAstText, TextAttribute as TmplAstTextAttribute, TimerDeferredTrigger as TmplAstTimerDeferredTrigger, UnknownBlock as TmplAstUnknownBlock, Variable as TmplAstVariable, ViewportDeferredTrigger as TmplAstViewportDeferredTrigger, Token, TokenType, TransplantedType, TreeError, Type, TypeModifier, TypeofExpr, TypeofExpression, Unary, UnaryOperator, UnaryOperatorExpr, VERSION, VariableBinding, Version, ViewEncapsulation$1 as ViewEncapsulation, VoidExpr, VoidExpression, WrappedNodeExpr, Xliff, Xliff2, Xmb, XmlParser, Xtb, _ATTR_TO_PROP, compileClassDebugInfo, compileClassMetadata, compileComponentClassMetadata, compileComponentDeclareClassMetadata, compileComponentFromMetadata, compileDeclareClassMetadata, compileDeclareComponentFromMetadata, compileDeclareDirectiveFromMetadata, compileDeclareFactoryFunction, compileDeclareInjectableFromMetadata, compileDeclareInjectorFromMetadata, compileDeclareNgModuleFromMetadata, compileDeclarePipeFromMetadata, compileDeferResolverFunction, compileDirectiveFromMetadata, compileFactoryFunction, compileHmrInitializer, compileHmrUpdateCallback, compileInjectable, compileInjector, compileNgModule, compileOpaqueAsyncClassMetadata, compilePipeFromMetadata, computeMsgId, core, createCssSelectorFromNode, createInjectableType, createMayBeForwardRefExpression, devOnlyGuardedExpression, emitDistinctChangesOnlyDefaultValue, encapsulateStyle, escapeRegExp, findMatchingDirectivesAndPipes, getHtmlTagDefinition, getNsPrefix, getSafePropertyAccessString, identifierName, isNgContainer, isNgContent, isNgTemplate, jsDocComment, leadingComment, literal, literalMap, makeBindingParser, mergeNsAndName, output_ast as outputAst, parseHostBindings, parseTemplate, preserveWhitespacesDefault, publishFacade, r3JitTypeSourceSpan, sanitizeIdentifier, setEnableTemplateSourceLocations, splitNsName, visitAll$1 as tmplAstVisitAll, verifyHostBindings, visitAll };
29169
29177
  //# sourceMappingURL=compiler.mjs.map