@@ -21,15 +21,18 @@ import {getCompilationUnitMetadata} from './batch/extract';
2121import { mergeCompilationUnitData } from './batch/merge_unit_data' ;
2222import { Replacement } from '../../../utils/tsurge/replacement' ;
2323import { populateKnownInputsFromGlobalData } from './batch/populate_global_data' ;
24- import { InheritanceGraph } from './utils/inheritance_graph' ;
2524import { executeMigrationPhase } from './phase_migrate' ;
2625import { filterIncompatibilitiesForBestEffortMode } from './best_effort_mode' ;
27- import { createNgtscProgram } from '../../../utils/tsurge/helpers/ngtsc_program' ;
2826import assert from 'assert' ;
29- import { InputIncompatibilityReason } from './input_detection/incompatibility' ;
27+ import {
28+ ClassIncompatibilityReason ,
29+ InputIncompatibilityReason ,
30+ } from './input_detection/incompatibility' ;
3031import { isInputDescriptor } from './utils/input_id' ;
3132import { MigrationConfig } from './migration_config' ;
3233import { ClassFieldUniqueKey } from './passes/reference_resolution/known_fields' ;
34+ import { MigrationStats } from '../../../utils/tsurge' ;
35+ import { createNgtscProgram } from '../../../utils/tsurge/helpers/ngtsc_program' ;
3336
3437/**
3538 * Tsurge migration for migrating Angular `@Input()` declarations to
@@ -176,6 +179,50 @@ export class SignalInputMigration extends TsurgeComplexMigration<
176179
177180 return result . replacements ;
178181 }
182+
183+ override async stats ( globalMetadata : CompilationUnitData ) : Promise < MigrationStats > {
184+ let fullCompilationInputs = 0 ;
185+ let sourceInputs = 0 ;
186+ let incompatibleInputs = 0 ;
187+ const fieldIncompatibleCounts : Partial <
188+ Record < `input-field-incompatibility-${string } `, number >
189+ > = { } ;
190+ const classIncompatibleCounts : Partial <
191+ Record < `input-owning-class-incompatibility-${string } `, number >
192+ > = { } ;
193+
194+ for ( const [ id , input ] of Object . entries ( globalMetadata . knownInputs ) ) {
195+ fullCompilationInputs ++ ;
196+ if ( input . seenAsSourceInput ) {
197+ sourceInputs ++ ;
198+ }
199+ if ( input . memberIncompatibility !== null || input . owningClassIncompatibility !== null ) {
200+ incompatibleInputs ++ ;
201+ }
202+ if ( input . memberIncompatibility !== null ) {
203+ const reasonName = InputIncompatibilityReason [ input . memberIncompatibility ] ;
204+ const key = `input-field-incompatibility-${ reasonName } ` as const ;
205+ fieldIncompatibleCounts [ key ] ??= 0 ;
206+ fieldIncompatibleCounts [ key ] ++ ;
207+ }
208+ if ( input . owningClassIncompatibility !== null ) {
209+ const reasonName = ClassIncompatibilityReason [ input . owningClassIncompatibility ] ;
210+ const key = `input-owning-class-incompatibility-${ reasonName } ` as const ;
211+ classIncompatibleCounts [ key ] ??= 0 ;
212+ classIncompatibleCounts [ key ] ++ ;
213+ }
214+ }
215+
216+ return {
217+ counters : {
218+ fullCompilationInputs,
219+ sourceInputs,
220+ incompatibleInputs,
221+ ...fieldIncompatibleCounts ,
222+ ...classIncompatibleCounts ,
223+ } ,
224+ } ;
225+ }
179226}
180227
181228/**
0 commit comments