Repository navigation
Conversation
|
Caution Review failedThe pull request is closed. Walkthrough
Pre-merge checks:
|
|
@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 of #7422 The change fits the existing design. Class-level Concerns
Verdict: The direction is sound and both-mode test coverage is good. Please resolve point 1 (the |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c1c37a38de
ℹ️ 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".
[Medium impact] The changes appear safe to merge; no new blocking issue was found. SummaryGeneric classes now infer their types from class-level
|
|
Review dispositions for 9b59b31:
Also fixed the Codex/Greptile empty-method-row finding with a both-mode regression. Full generator snapshots pass: 218 passed, 1 skipped. _7333 now has 10 passes and its one expected discovery failure in each mode. Engine integration assertions are updated for CI; the engine suite was not run locally per repository instructions. |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9b59b313ac
ℹ️ 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 |
Review of #7422I read the generator diff, the new What looks good
Points to check (non-blocking)
Overall this is a solid fix with strong test coverage. I'd like the AOT check from point 1 before merge, but nothing here looks like a correctness blocker. 🤖 Generated with Claude Code |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7c87a5ec3c
ℹ️ 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".
|
The fixed-runtime-type guard now accepts arrays when their element types cannot vary (recursively), including value, sealed-reference, nested, and nullable-element arrays. Covariant arrays still use runtime partitioning. Scalar nullable values also retain runtime partitioning because their non-null values box as the underlying type. Added fixtures and reviewed snapshots for Claude's latest non-blocking points repeat the earlier review disposition in #7422 (comment): the closed-type Activator path completed native code generation; linking remains limited by missing local libssl. No new reflection path is introduced by this follow-up. The removed Arguments attribute was method-row metadata, and coverage/helper refactors remain optional follow-ups. Existing _7161 and cross-product validation remains documented in the PR. Separate pre-existing problems found during validation are recorded in #7427 (explicit array type arguments), #7428 (snapshot test build warnings), and #7412 (vulnerable transitive package). |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 425bb59885
ℹ️ 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".
|
Review of #7422. I read the generator diff and the snapshot changes. I didn't build or run anything. The approach looks sound. It reuses the existing own-class row inference, and it keeps runtime partitioning when a row type can't fix the runtime type. The Points to check
Minor: Overall this is good work. The one thing I'd resolve before merge is point 1, the 🤖 Generated with Claude Code |
|
Review follow-up in 1396417 and 5f43bb8:
Validation: full net10 generator suite 218 passed / 1 skipped; full net10 PublicAPI suite 19 passed. Expanded _7333 fixtures in source-generated mode, reflection mode and the published native AOT executable each run 29 tests: 28 passed and the existing intentional uninferable-class discovery failure. Neighboring reflection _7208, _7161 and _7210 retain their documented outcomes. Native AOT publish now succeeds and the executable runs, superseding the earlier local linker limitation; only the pre-existing _7161 collection-equivalency IL2026 warning remains. Engine.Tests was not run locally per repository instructions. Other runtime/framework validation remains for CI. |
|
@codex review |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. 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". |
|
Disposition of current-head Claude review 6595448989: Codex completed review of bfcc91e with no findings; Claude explicitly reports no blockers on the same head. All 33 review threads are resolved. Promoting the unchanged head for CI. |
Review of #7422I read the What looks good
Concerns
None of these block the change. Overall the approach is good and the PR is well tested; I'd address 1, 3 and 5 before merging. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bfcc91e665
ℹ️ 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".
|
Fixed Codex finding 4450986596 in a6b3a7a. Directly filtered inferred class sources now suppress empty-source skipped placeholders; explicit and constructor-fallback sources keep their original setting. The exact regression produced 1 pass + 1 unwanted skip before; the full _7333 fixtures now produce 67 passes, 8 existing intentional failures, 0 skips in both generated and reflection modes (75 total). Validation: full net10 generator suite 218 passed / 1 existing skip. Reviewed and accepted the additive Tests7333 snapshot. Neighboring _7210 in both modes remains 15 passed / 3 skipped / 1 intentional failure. Engine integration assertions updated for CI; Engine.Tests was not run per AGENTS.md. This follow-up adds no public API or reflection paths; Native AOT and other framework runs remain for CI. Disposition of Claude review 6595605926: The previous blocker, run 41579303929, completed successfully. The pushed fix now awaits current-head CI and review. |
Review of #7422: infer generic class types from class-level
|
Review of #7422: infer generic class types from class-level
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: df168fa58f
ℹ️ 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".
|
The earlier blocker, run 41579303929, completed successfully. Current checks are running on df168fa, but the latest Codex review has a verified blocking finding: an own-class null enumerable is converted into a null constructor row. This PR has reached 21 automated review rounds and still has that blocking finding. Per the loop rework budget, no further fixes will be pushed here. Split into native children of #7333:
There have been no force-push conflict cycles; no files repeatedly conflict. The coupled review surface is TestMetadataGenerator.cs, MethodDataSourceAttribute.cs, GenericClassRowPartition.cs and ReflectionTestDataCollector.cs. Splitting runtime support from generator activation gives each a separately mergeable validation boundary. Preserve branch issue-7333-class-method-source at df168fa for extraction, not wholesale reapplication. Disposition of Claude comments 6595697190 and 6595715302:
Closing this PR without merging, keeping its branch and parent #7333 open. No tests were run in this administrative split unit. Existing pending checks cannot establish approval of the unresolved finding. |
Summary
A generic test class whose types come only from a class-level
[MethodDataSource]silently disappears in source-generated mode. Infer its types from the member's declared row type and the constructor parameters, using the same row-shape and constructor matching already used for own-class members. Both external and own-class members now instantiate the class, including async factory rows, multiple sources of the same type, and generic methods with their own rows.Class sources join the instantiation they infer, alongside matching class
[Arguments]rows. Sources already covered by runtime class-row partitioning remain covered. When an uncovered source cannot supply accessible class type arguments, report a discovery failure with guidance to declare concrete rows or use[GenerateGenericTest]. This also enables the existing constructor-selection and null-row regressions in both modes. Inferred class instantiations without matching method rows are omitted, while method-only constructor fallback remains unchanged.Reviewed and updated the affected snapshots. Removed redundant nullable access on the non-null compilation argument in the touched inference code, which caused a compiler warning, and corrected an outdated fixture comment.
Validation
TUnit.Core.SourceGenerator.Tests, net10.0: 218 passed, 1 skipped. This machine has only the net10.0 runtime; other target frameworks remain for CI._7333fixtures: source-gen and reflection each run 17 tests: 16 pass and 1 expected uninferable-class discovery failure. Before the fix the six inferable classes produced zero tests in source-gen._7208fixtures: both modes run 43 tests, 42 pass and 1 expected discovery failure; source-gen previously omitted four tests._7161: both modes 7 total, 6 pass and 1 intentional unmatched-row failure._7210: both modes 19 total, 15 pass, 3 skipped and 1 intentional failure._7108,_7107,_7117,_7118, and_7156checks retain their expected outcomes, including the intentional failures and private-row-type reporting difference in_7108.TUnit.Engine.Testslocally per repository instructions.libssl. Full AOT validation remains for CI.#7334 retains the separate reflection tuple-splitting and failed-row reporting work; its native prerequisite points to this issue.
Review follow-up: preserve method data sources on class-inferred entries even without method
[Arguments], and retain runtime partitioning for polymorphic external class sources. Both regressions were reproduced on the previous generator. The class/method source fixture now runs all four row combinations; the interface-declared source joins both integer rows on the integer instantiation in both modes. Full net10.0 generator suite: 218 passed, 1 skipped. Engine integration assertions are updated for CI.Closes #7333
Array/nullable review follow-up (425bb59): external fixed arrays infer their class types recursively; covariant arrays and scalar nullable values retain runtime-value inference. Added int[], string[], int[][], int?[], covariant object[]/string[], and nullable scalar fixtures. Full net10.0 generator suite: 218 passed, 1 skipped. Updated _7333 runs in both modes: 24 passed and 1 expected uninferable-class discovery failure (25 total). Engine integration counts updated for CI; engine suite remains unrun locally per repository instructions.
Latest review follow-up (5f43bb8): nullable array constructor rows now infer consistently in both modes; fixed external rows match constructor positions and preserve all-null-row filtering. Newly inferred MethodDataSource entries use typed construction. Full net10 generator suite: 218 passed, 1 skipped. Full net10 PublicAPI suite: 19 passed. Expanded _7333 source-generated, reflection and published native AOT execution each run 29 tests (28 passed, one existing intentional discovery failure). Native AOT publish and execution now succeed, superseding the earlier linker limitation. Reviewed additive generated-code FilterNullClassRows property baselines for all frameworks; other framework execution remains for CI.
Tuple-column follow-up (d158aea): only columns that determine class type arguments must have fixed runtime types. Added an unrelated object-column regression. Final _7333 source-generated/reflection/native AOT execution each run 30 tests: 29 passed and one existing intentional discovery failure. Full net10 generator suite remains 218 passed, 1 skipped; preceding API validation remains 19 passed.
Factory/constructor review follow-up (e0e6dc9): class sources preserve fresh factory objects, fixed value-type sources suppress empty fallback rows, and typed construction uses the inference constructor. Added three regression classes; _7333 source-generated/reflection/native AOT each run 34 total (33 passed, one existing intentional discovery failure). Native AOT publish succeeds; full net10 generator suite 218 passed, 1 skipped. Neighboring _7208, _7210 and _7161 outcomes remain unchanged. Engine integration counts updated for CI; that suite remains unrun locally.
Own-class empty-source review follow-up (df67d20): inferred own-class sources now suppress empty fallback rows while retaining valid null values. Cache source inference and its selected constructor through emission, and share the all-null predicate between discovery modes. Added own-empty, own-null, and unsealed-row regressions. Full net10 generator suite: 218 passed / 1 skipped; full net10 PublicAPI suite: 20 passed. Updated _7333 source-generated/reflection/native AOT each run 38 total (37 passed, one existing intentional failure); native publish succeeds. Neighboring _7208 and _7161 retain their expected outcomes in both modes. Fixed one incidental API path-scrubber case where the
.csextension wraps across string literals, with a regression. Engine.Tests remains for CI. The hidden additive generated-code property is now named FilterClassRows and remains public because generated consumer code lives in another assembly.Explicit-instantiation follow-up (4b3353d): preserve external null rows when GenerateGenericTest explicitly supplies the class types; use a safe constructor-symbol fallback. FilterClassRows is deliberately public for generated consumer assemblies and is hidden with EditorBrowsable(Never). Expanded _7333 fixtures in both modes: 43 total, 42 passed, one existing intentional discovery failure. Full net10 generator suite: 218 passed / 1 skipped. Updated snapshot and CI integration counts. Engine.Tests, Native AOT and other framework runs remain for CI for this follow-up.
Method-only fallback follow-up (285eb28): filter class rows only when their source supplies the current entry's inferred class rows. Raw empty rows remain visible to method-only constructor fallback. Added a constructor-failure regression and CI integration assertions; reviewed Tests7333 and Tests7161 snapshots. Full net10 generator suite: 218 passed / 1 skipped. Expanded _7333 in generated, reflection and published Native AOT: 44 total, 42 passed, two intentional failures. Native AOT publish succeeds; _7161 retains 6 passed / 1 intentional failure in both managed modes. Engine.Tests and other framework runs remain for CI. The separate pre-existing missing-constructor-argument behavior difference is tracked in #7442.
Grouped explicit-instantiation follow-up (01cf701): retain external null-row filtering when method rows merge explicit class types into an inferred group; standalone explicit null rows remain supported. Extracted class-source inference/coverage caching, cached explicit types on instantiations, shared constructor preference and added a constructor-mapping debug assertion. Full net10 generator suite: 218 passed / 1 skipped; reviewed and updated Tests7333 snapshot. Expanded _7333 in generated, reflection and published Native AOT execution: 45 total, 43 passed and the same two intentional failures. The new regression alone passes with one case; before the fix generated mode ran two cases with one failure, while reflection ran one passing case. Neighboring _7208 remains 42 passed / 1 intentional discovery failure in both managed modes. Native AOT publish succeeds. Updated engine integration assertions for CI; Engine.Tests was not run locally per AGENTS.md. Other frameworks and hosted checks remain for CI.
Explicit null-only follow-up (615d7b4): Full net10 generator suite: 218 passed / 1 skipped. Full net10 PublicAPI suite: 20 passed. Expanded _7333 fixtures in generated, reflection and published Native AOT each run 49 tests: 47 passed and the same two intentional failures. Native AOT publish succeeds. Neighboring _7161 retains 6 passed / 1 intentional failure in both managed modes. Updated engine integration assertions; Engine.Tests and other framework execution remain for CI per AGENTS.md. Explicit grouped instantiations now decide from actual rows whether to use grouped or raw data. Added null-only, own-null, and array-row regressions. FilterClassRows is internal; generated code configures it through the existing generated-code-only partition helper. Nonblocking refactors are tracked in #7377 and #7443.
Runtime-grouping review follow-up (2d6821f): preserve constructor-mapped class Arguments, deferred own-null rows, explicit generic-method grouping, and matching-empty-source fallback. Cache the closed inference constructor and clarify coverage predicates, with an explicit/uninferable-source regression. Full net10 generator suite: 218 passed / 1 skipped. Full net10 PublicAPI: 20 passed. Expanded _7333 generated/reflection/published Native AOT each run 56 total, 53 passed and three intentional failures; native publish succeeds. _7208, _7161 and _7210 retain their expected outcomes in both managed modes. Engine.Tests and other framework execution remain for CI.
Mixed-partition review follow-up (9910c8c): inferred sources outside PartitionedIndices retain null/empty-row filtering when a sibling creates a runtime partition. Three new regressions reproduce seven cases with three failures before the fix and four passing cases after. Full net10 generator suite: 218 passed / 1 skipped. Full _7333 generated and reflection runs: 60 total, 57 passed and three existing intentional failures each. Reviewed snapshot changes and updated engine integration counts/cases for CI; Engine.Tests was not run locally. Native AOT and other framework execution remain for CI for this follow-up.
Constructor-selection follow-up (737b5eb): preserve the cached inferred constructor for grouped rows while retaining the missing-row guard. Added a marked-object-overload regression: two failures before, two passes after in both modes. Full net10 generator suite 218 passed / 1 skipped. Expanded _7333 generated/reflection runs each 63 total, 59 passed / four intentional failures; neighboring _7210 unchanged. Updated engine integration assertions; Engine.Tests, Native AOT and other frameworks remain for CI for this follow-up.
External constraint-row follow-up (35b418c): defer external source constraint violations until an eligible row exists in both discovery modes. Added empty, null-only and nonempty invalid regressions; reviewed generator and additive optional GenericConstraintViolationEntry.DataSources API baselines. Full net10 generator suite 218 passed / 1 skipped; PublicAPI 20 passed. Expanded _7333 generated/reflection/native AOT each run 70 total, 64 passed and six intentional failures. Native _7161 runs 6 passed / one intentional failure, confirming constructor fallback. Explicit comparer removes its incidental AOT assertion warning; final native publish has no IL warnings. Engine integration assertions updated for CI; Engine.Tests remains unrun locally per AGENTS.md.
Summary by CodeRabbit