Skip to content

[05] feat(csharp): preserve generic invocation type arguments #12

Description

@fernandofielmann

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions