Repository navigation
Share evaluated constructor-row state across discovery modes - #7497
Conversation
|
No actionable comments were generated in the recent review. Walkthrough
Merge Risk:
|
|
@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. |
|
Codex Review: Didn't find any major issues. Hooray! 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; no actionable issues were found. SummaryThe PR adds
No actionable issues were found. Tests were not run during this review.
|
Review: shared EvaluatedDataRowI found no blocking issues. The change replaces three copies of the same logic with one type, and I checked that the behavior is preserved. Checked
Minor suggestions (non-blocking)
Approving in spirit. Net result is less code and one place for the semantics. |
|
Reviewed all review surfaces for 8bbcb7a. Claude and Codex both report no blocking findings; Greptile also found no actionable issues, and there are no inline threads. Disposition of Claude’s non-blocking suggestions: the only Row read is in reflection grouping before any fetch, so its current use is safe; a property documentation refinement is optional and does not require a new head. Delegate creation is confined to discovery and needs no performance change without measurement. Retaining the reviewed implementation. Marking ready to start CI. Promotion triggers a fresh Claude run; auto-merge must wait for that run and its review comment. |
|
The earlier wait on run 41631205058 was still active, but main had also made this PR conflicting. Rebased onto 374bb7c (#7459) and pushed c6d6fc0. The conflict resolution retains the isolated evaluation context and session-end disposal from #7459, and constructs the shared EvaluatedDataRow inside that context. The reflection merge was also checked to preserve its cleanup paths. Validation: net10.0 GenericClass*Tests passed 13/13 in generated mode and 13/13 with --reflection, including GenericClassRowPartitionCleanupTests. git diff --check passed. Engine.Tests was not run locally per repository instructions. Returned to draft for fresh reviews of the rebased head; requested Codex and the synchronize event starts Claude. The old run is no longer the gate for this new head. No prerequisite or superseding PR was identified; #7443 is delivered by this PR and its Closes reference remains in the body. |
Review: PR 7497, shared
|
8bbcb7a to
c6d6fc0
Compare
|
@codex review |
Review: shared
|
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. 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". |
|
Run 41631205058 completed successfully and belongs to the older head; it is no longer a blocker. Current head c6d6fc0 has positive Claude and Codex verdicts, no inline comments or review threads, and no failing checks. Verified the remaining review observations against the diff and CloneArguments: CloneArguments allocates an array and calls Array.Copy, so item?.ToArray() preserves its shallow copying semantics. A fresh fallback array per fetch does not change element ownership. Row is read only during grouping before fetching; its optional documentation suggestion and the optional discovery closure optimization are dispositioned without changing this reviewed head. The factory remains non-null by construction. Promoting to ready. This starts CI and a fresh Claude review; auto-merge must wait for that review to pass and its comment to be checked. #7443 is fully covered and remains linked with Closes; there is no prerequisite, superseding PR, stale issue scope, or finished parent requiring action. Promotion verified: ready state, unchanged head c6d6fc0. Waiting for post-promotion Claude run 41633685555 (https://github.com/thomhurst/TUnit/actions/runs/41633685555) and CI. Next unit should read its verdict and all review surfaces, then arm auto-merge if clean. No on-hold label is needed for this automatic gate. |
ReviewNice consolidation: one Two minor points, neither blocking:
Otherwise this looks good, and it cuts duplicate code with no public API change. |
|
Run 41633685555 completed successfully on c6d6fc0, so the earlier blocker is cleared. Read every review surface again: Codex completed with no findings for this head; Claude's post-promotion review has no blocking findings; Greptile and CodeRabbit report no actionable findings. There are no inline comments or review threads. Confirmed Claude's repeated clone question against this head: StaticDataSourceAttribute.CloneArguments creates an object array and calls Array.Copy; item?.ToArray() likewise makes a shallow array copy. Both retain the same element references. The new fallback creates a fresh array per fetch, without changing element ownership. Row is read in the grouping loop before FetchAsync can consume it. The optional Row documentation, discovery allocation suggestion, and CodeRabbit docstring coverage warning are non-blocking; retaining the reviewed implementation. No reviewer has challenged the earlier evidence or requested a required change. The merge gate passed: CLEAN, 34 checks green, no unresolved threads. Live protection requires eight CI checks and no formal approval; all eight passed. The documentation discrepancy is already tracked in #7444. #7443 remains fully delivered by this PR with Closes in the body; no prerequisite or replacement requires separate action. Proceeding through Merge-Pr.ps1. |
Summary
Generic constructor-row discovery now shares one internal
EvaluatedDataRowimplementation across generated partitions, inferred method sources, and reflection partitions. It hands out the already evaluated values once, then calls the original factory for fresh constructor data. Raw and grouped reflection sources share the same state instead of parallel first-fetch and factory arrays.Wrapped row settings, null-row fallback, and disposal ownership retain their existing paths. Added coverage for shared state across sources and enumerations, plus null evaluated rows. No public API or generator-output changes.
Validation
GenericClassSourceRuntimeTests: 11 passed._7210in generated and reflection modes: each 15 passed, 3 skipped, 1 intentional failure (19 total), including wrapped factory reuse/freshness._7223null/array fixtures in both modes: each 13 passed._7208: generated 39 passed / 4 discovery failures; reflection 42 passed / 1 intentional discovery failure. The additional generated class-inference failures remain tracked in Source-gen: generic test class does not infer its type arguments from a class-level [MethodDataSource]; reflection does #7333; evidence added there.-m:1. Published native_7210: 15 passed, 3 skipped, 1 intentional failure;_7223: 13 passed. Initial parallel publish lost MSBuild child nodes; the serial publish succeeded. Existing fixture/hook preservation warnings remain tracked in Regression test fixtures emit Native AOT preservation warnings #7493 and Generated instance hooks emit IL2075 during Native AOT publishing #7430.Closes #7443
Summary by CodeRabbit