When the switched expression is nested within a union, exhaustive typechecking needs to know which expression to check. This change adds the possibility of specifying the expression to check: ``` @Component({ selector: 'app-root', imports: [], template: ` @switch (state.mode) { @case ('show') { {{ state.menu }}; } @case ('hide') {} @default never(state); } `, changeDetection: ChangeDetectionStrategy.OnPush, }) export class App { state!: { mode: 'hide' } | { mode: 'show'; menu: number };; } ``` fixes #67406
@switch
consecutive `@case` blocks are now supported: ```ts @switch (case) { @case (0) @case (1) { case 0 or 1 } @case (2) { case 2 } @default { default } } ``` fixes #14659
PR Close #57059
Adds build rules for "artificially" generating `DocEntry` collections for block and element APIs. The two rules are very similar, but _just_ different enough that it's worth having two separate implementations. PR Close #52480