Use [<Struct>] ? optional parameters and voption in Define/DefineRec and the introspection chain - #604
Merged
Conversation
xperiandri
force-pushed
the
struct-optional-params
branch
2 times, most recently
from
September 15, 2026 22:18
098f349 to
5f4eb75
Compare
xperiandri
force-pushed
the
task-seq-field
branch
from
September 15, 2026 23:26
cb9ef43 to
f484cc2
Compare
xperiandri
force-pushed
the
struct-optional-params
branch
3 times, most recently
from
September 16, 2026 09:29
d889e68 to
521be88
Compare
xperiandri
force-pushed
the
task-seq-field
branch
from
September 18, 2026 13:41
137fd2c to
60987fd
Compare
xperiandri
force-pushed
the
struct-optional-params
branch
from
September 18, 2026 17:01
521be88 to
53e9c4c
Compare
xperiandri
force-pushed
the
struct-optional-params
branch
from
September 18, 2026 17:57
53e9c4c to
ec0ebbc
Compare
Test Results 9 files 9 suites 13m 29s ⏱️ Results for commit dc55ad1. ♻️ This comment has been updated with latest results. |
xperiandri
force-pushed
the
struct-active-patterns
branch
from
September 18, 2026 19:54
31d3b6e to
bf8f8f3
Compare
xperiandri
force-pushed
the
struct-optional-params
branch
from
September 18, 2026 19:54
ec0ebbc to
4b599d1
Compare
xperiandri
force-pushed
the
struct-active-patterns
branch
from
September 18, 2026 21:47
2f5b33c to
cbfb9f1
Compare
xperiandri
force-pushed
the
struct-optional-params
branch
from
September 18, 2026 23:26
4b599d1 to
758ed1a
Compare
[<Struct>] ? optional parameters and voption in Define/DefineRec and the introspection chain[<Struct>] ? optional parameters and voption in Define/DefineRec and the introspection chain
xperiandri
force-pushed
the
struct-optional-params
branch
2 times, most recently
from
September 19, 2026 14:00
0134df3 to
a9e1bad
Compare
(cherry picked from commit 4b599d1) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
xperiandri
force-pushed
the
struct-optional-params
branch
from
September 19, 2026 14:09
a9e1bad to
e85b254
Compare
Contributor
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
The broad cross-layer optional-value migration warrants final human review.
Review effort: Lite
Findings: None
What changed in this PR
This pull request migrates optional-value plumbing in Define/DefineRec, introspection, execution, and client metadata from reference options to voption/ValueOption.
Changes:
- Updates schema and type-system optional metadata.
- Adapts validation, execution, introspection, and client handling.
- Updates tests and middleware definitions.
| File | Summary |
|---|---|
tests/FSharp.Data.GraphQL.Tests/Variables and Inputs/OptionalsNormalizationTests.ValidString.fs |
Updates optional-parameter test helpers. |
tests/FSharp.Data.GraphQL.Tests/AstValidationTests.fs |
Uses ValueNone for directive descriptions. |
src/FSharp.Data.GraphQL.Shared/Validation.fs |
Migrates validation optional values. |
src/FSharp.Data.GraphQL.Shared/TypeSystem.fs |
Converts type metadata to voption. |
src/FSharp.Data.GraphQL.Shared/SchemaDefinitions.fs |
Updates definitions and optional parameters. |
src/FSharp.Data.GraphQL.Shared/Introspection.fs |
Uses struct-nullable introspection fields. |
src/FSharp.Data.GraphQL.Server/Values.fs |
Handles value-option input defaults. |
src/FSharp.Data.GraphQL.Server/Schema.fs |
Produces voption introspection metadata. |
src/FSharp.Data.GraphQL.Server/Planning.fs |
Updates introspection argument definitions. |
src/FSharp.Data.GraphQL.Server/Linq.fs |
Resolves optional arguments with ValueOption. |
src/FSharp.Data.GraphQL.Server/Execution.fs |
Handles value-option defaults and resolvers. |
src/FSharp.Data.GraphQL.Server.Middleware/SchemaDefinitions.fs |
Updates filter metadata. |
src/FSharp.Data.GraphQL.Client/Serialization.fs |
Adjusts optional-value serialization. |
src/FSharp.Data.GraphQL.Client/BaseTypes.fs |
Handles value-option introspection references. |
src/FSharp.Data.GraphQL.Client.DesignTime/ProvidedTypesHelper.fs |
Migrates client metadata and schema traversal. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
xperiandri
force-pushed
the
struct-optional-params
branch
from
September 19, 2026 14:51
dc55ad1 to
a3911d7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Converts optional-value plumbing in
Define/DefineRec, schema/type-system/introspection, and client metadata from referenceoptionvalues to struct optional parameters withvoption/ValueOption.Review scope
Please review only optional-parameter and stored optional-value plumbing. All F# partial active-pattern conversions, including the new
ValueOptionreflection pattern, are isolated in the base PR #610 and should not be reviewed again here.The previously added middleware/helper optional-parameter changes are intentionally excluded from this PR.
Base active-pattern PR: #610
Verification
git diff --checkis clean.