feat(ivy): setup boilerplate for component indexing API (#30961)
Set up the skeleton for a compiler API that indexes components and their templates on an independent indexing step. Part of #30959 PR Close #30961
This commit is contained in:

committed by
Andrew Kushnir

parent
a4601eca68
commit
4ad323a4d6
@ -12,6 +12,7 @@ ts_library(
|
||||
"//packages/compiler-cli/src/ngtsc/diagnostics",
|
||||
"//packages/compiler-cli/src/ngtsc/imports",
|
||||
"//packages/compiler-cli/src/ngtsc/incremental",
|
||||
"//packages/compiler-cli/src/ngtsc/indexer",
|
||||
"//packages/compiler-cli/src/ngtsc/perf",
|
||||
"//packages/compiler-cli/src/ngtsc/reflection",
|
||||
"//packages/compiler-cli/src/ngtsc/scope",
|
||||
|
@ -10,6 +10,7 @@ import {ConstantPool, Expression, Statement, Type} from '@angular/compiler';
|
||||
import * as ts from 'typescript';
|
||||
|
||||
import {Reexport} from '../../imports';
|
||||
import {IndexingContext} from '../../indexer';
|
||||
import {ClassDeclaration, Decorator} from '../../reflection';
|
||||
import {TypeCheckContext} from '../../typecheck';
|
||||
|
||||
@ -76,6 +77,13 @@ export interface DecoratorHandler<A, M> {
|
||||
*/
|
||||
analyze(node: ClassDeclaration, metadata: M): AnalysisOutput<A>;
|
||||
|
||||
/**
|
||||
* Registers information about the decorator for the indexing phase in a
|
||||
* `IndexingContext`, which stores information about components discovered in the
|
||||
* program.
|
||||
*/
|
||||
index?(context: IndexingContext, node: ClassDeclaration, metadata: M): void;
|
||||
|
||||
/**
|
||||
* Perform resolution on the given decorator along with the result of analysis.
|
||||
*
|
||||
|
@ -12,6 +12,7 @@ import * as ts from 'typescript';
|
||||
import {ErrorCode, FatalDiagnosticError} from '../../diagnostics';
|
||||
import {ImportRewriter} from '../../imports';
|
||||
import {IncrementalState} from '../../incremental';
|
||||
import {IndexingContext} from '../../indexer';
|
||||
import {PerfRecorder} from '../../perf';
|
||||
import {ClassDeclaration, ReflectionHost, isNamedClassDeclaration, reflectNameOfDeclaration} from '../../reflection';
|
||||
import {LocalModuleScopeRegistry} from '../../scope';
|
||||
@ -250,6 +251,11 @@ export class IvyCompilation {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Feeds components discovered in the compilation to a context for indexing.
|
||||
*/
|
||||
index(context: IndexingContext) { throw new Error('Method not implemented.'); }
|
||||
|
||||
resolve(): void {
|
||||
const resolveSpan = this.perf.start('resolve');
|
||||
this.ivyClasses.forEach((ivyClass, node) => {
|
||||
|
Reference in New Issue
Block a user