Repository navigation
Infer typed row generic arguments through interfaces and base classes - #7508
Conversation
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 2 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. CodeRabbit Verify
|
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Review: PR 7508 (assignable typed-row inference)I found no blocking issues. The change looks correct and well tested. What I checked
Non-blocking suggestions
Good to merge once CI is green on the other target frameworks. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2f32e16da2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Fixed the containing-type inference finding in 79f52e3. Full net10.0 generator suite: 269 passed, 1 skipped; analyzer suite: 965 passed, 1 skipped. No snapshot changes; all 30 generator/reflection parity cases pass. Disposition of Claude’s non-blocking suggestions: the existing generator documentation already identifies the reflection counterpart, and parity tests enforce synchronization. Interface caching remains a profiling-driven optimization; no performance change is justified here. Nullable annotation equality intentionally follows runtime type identity (reflection does not retain nullable annotations in Type); no inference semantic change is needed. The PR remains draft for fresh reviews of this head. Other framework validation remains for CI; no reflection execution path or public API changed in this fix. |
Review of #7508I found no blocking issues. The change does what it describes. What I checked
Non-blocking suggestions
Overall this is a clean, well-tested change. Approving from my side, pending CI on the other target frameworks. |
|
Codex Review: Didn't find any major issues. Chef's kiss. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
[Medium impact] The PR appears safe to merge; the previous nested-type build failure is fixed. SummaryTyped rows now infer method type arguments through interfaces and base classes in generated and reflection discovery.
The previous nested-type finding is fully addressed. No new actionable issues were found in the changes since that review. Reviews (2) · Last reviewed commit: "Fix nested containing-type analyzer chec..." · Reviewed by Greptile |
|
@codex review Fixed the nested containing-type analyzer finding in ebbd9f9. Both helper checks now recurse through containing types. The nested-base positive regression failed before the fix and passes afterward; nested generic positive and invalid-row cases also pass. Full net10.0 generator suite: 272 passed, 1 skipped; analyzer suite: 965 passed, 1 skipped. Snapshots unchanged; git diff --check passed. Other framework legs remain for CI. Claude suggestions disposition: parity tests continue to guard the two backends; interface caching remains profiling-driven. Exact binding rather than covariance merging remains the existing conservative inference policy. Remaining draft for fresh reviews of this head. |
ReviewReviewed the diff for #7508. It looks good and I found no blocking issues. What I checked
Suggestions (non-blocking)
I couldn't run the tests here. Please confirm the multi-framework CI legs pass, since the PR notes only .NET 10 was tested locally. |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
Marked ready for review at unchanged head ebbd9f9 after confirming positive Claude and Codex verdicts and all review threads resolved. The latest non-blocking suggestions have the same disposition already recorded: existing backend documentation and parity tests guard synchronization; interface caching remains profiling-driven. Waiting for the ready-for-review Claude run 41660232844 and multi-framework CI. Auto-merge has not been armed: the fresh Claude run must pass and its review must be read first. |
Review: PR 7508 (infer
|
|
The earlier blocker is cleared: run 41660232844 passed on ebbd9f9. I read its Claude review and all review surfaces; Codex also reports completed with no findings on this head. Both finding threads remain resolved with no later reviewer replies. All current CI legs, including multi-framework, engine and AOT jobs, passed. Latest non-blocking suggestions: keep helper extraction and caching profiling-driven; existing backend cross-references and parity tests guard synchronization. The suggested conflicting-interface case already exists as Ambiguous and AmbiguousReversed implementing IMarker and IMarker, with null inference expected in both modes. No additional code changes are needed. |
Typed rows such as
[Arguments<int[]>]now inferT = intforRun<T>(IEnumerable<T>). Source-generated and reflection discovery traverse implemented interfaces and base classes, including nested generic shapes. All matching constructions must agree on each binding; conflicting bindings produce no declared-row inference, independent of interface order. Repeated identical bindings and interface diamonds are accepted.The analyzer closes array and constructed generic parameter types using the same inference before checking row compatibility. Added parity cases, analyzer positive/negative cases, a reviewed generator snapshot, and targeted execution regressions. Updated the earlier explicit-generic regression's comment to reflect the new inference.
Closes #7466
Validation on macOS arm64, SDK 10.0.403:
AssignableTypedRowTests: 2 passed in each of generated and reflection modes.TypedCollectionRowWithGenerateGenericTest: 1 passed in each mode.git diff --checkpassed. No public API changes.Only .NET 10 is installed locally; other framework legs remain for CI. The engine test suite was not run per repository instructions. Publish emits existing unrelated trimming/AOT warnings; the core generator restore's known Pkcs vulnerability warning is tracked in #7412.