Skip to content

Preserve explicit-interface qualifiers in C# symbol identity #4866

Description

@Widthdom

Summary

Explicit-interface members such as IFoo.Changed and IFoo.Run<T> collapse into ordinary Changed/Run families, losing the qualifier that distinguishes implementations.

Audit IDs: G-06. Reproduced with locally built cdidx v1.40.3 at 404db09489c305f17d94f37026e00564d3ac527a.

Existing issue relationship

Closed #333, #351, and #356 are adjacent explicit-interface/identity work; no exact open issue exists.

Expected behavior and PR scope

Canonical identity and exact navigation distinguish explicit-interface members from public/other implementations while keeping readable display output. Keep this PR to C# symbol identity, extraction, and resolution for explicit members.

Implementation guide for Codex 5.6 sol xhigh

  • Retain interface qualifier, member kind, generic arity, and normalized signature in canonical identity.
  • Define display name versus exact query name explicitly so compatibility aliases do not merge families.
  • Cover properties/events/indexers, generic/non-generic methods, multiple interfaces, inherited interfaces, and same-named public members.
  • Verify symbols, definition, references, inspect, outline, and LSP navigation.
  • Add focused regression/contract tests, run the full net8.0 and net9.0 suite, and add the required bilingual changelog.d/unreleased/ fragment.

Acceptance criteria

  • Exact queries can distinguish IFoo.Run<T> from ordinary Run.
  • Explicit properties/events do not merge with unrelated families.
  • Existing unqualified discovery remains usable through documented ranking/aliases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    .NETPull requests that update .NET codebugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions