Goal
Preserve C# generic invocation arguments so later .NET semantic passes can reason about DI registrations, handlers, and contracts.
Scope
- Extend
CBMCall to retain ordered type arguments from C# generic_name invocations.
- Cover calls such as
AddScoped<TService, TImplementation>(), Send<TResponse>(), and generic response helpers.
- Preserve fully qualified or resolvable type references where available.
- Keep non-generic calls unchanged and reject malformed/ambiguous generic syntax conservatively.
- Maintain parity between extraction, C# LSP resolution, and sequential/parallel pipelines.
Dependencies
Acceptance criteria
CBMCall exposes generic argument count and ordered type arguments.
- Generic service/implementation pairs survive extraction and LSP resolution.
- Nested and qualified generic types are covered without changing the callee identity.
- Non-generic invocations and comparison expressions do not produce false type arguments.
- Sequential and parallel extraction results are equivalent.
- Internal API changes are documented and memory ownership is tested.
Validation
- Add positive, negative, nested, qualified, ambiguity, and deduplication fixtures.
- Run C# extraction/LSP and convergence suites,
lint-ci, and scripts/test.sh.
Goal
Preserve C# generic invocation arguments so later .NET semantic passes can reason about DI registrations, handlers, and contracts.
Scope
CBMCallto retain ordered type arguments from C#generic_nameinvocations.AddScoped<TService, TImplementation>(),Send<TResponse>(), and generic response helpers.Dependencies
Acceptance criteria
CBMCallexposes generic argument count and ordered type arguments.Validation
lint-ci, andscripts/test.sh.