Skip to content

Fragment arguments/variables (syntax/validation/execution)#1081

Closed
JoviDeCroock wants to merge 54 commits into
graphql:mainfrom
JoviDeCroock:fragment-args-2024-amendments
Closed

Fragment arguments/variables (syntax/validation/execution)#1081
JoviDeCroock wants to merge 54 commits into
graphql:mainfrom
JoviDeCroock:fragment-args-2024-amendments

Conversation

@JoviDeCroock

@JoviDeCroock JoviDeCroock commented Feb 16, 2024

Copy link
Copy Markdown
Contributor

This spec contains amendments to #1010, a diffed view is available at mjmahone#3.

These amendments are made from comments on the implementation PR and alterations from the new implementation

In general the biggest changes are that we introduce fragmentVariableValues which will be on the groupedFieldSet, these are derived from the arguments in scope of the fragmentDefinition where this field is used.

We introduce localFragmentVariables which as we are traversing down fragment-spreads are a coerced set of variables i.e.

query($b: String!, $c: String!) {
  field3(b: $b) ## uses b from variable-values
  ...A(a: "A", b: "B")
}

fragment A($a: String!, $b: String!) on X {
  field(a: $a) ## uses $a from localVariableValues
  field2(c: $c) ## we have access to variableValues so we take c from there
  ...B(b: $b) ## uses $b from localVariableValues
}

fragment B($b: String!) on X {
  ## This fragment has access to $b and $c but not to $a
  field4(b: $b) ## uses $b from localVariableValues
}

Last but not least we introduce getArgumentValuesFromSpread which looks at the spread and fragment-definition and establishes a coerced set of localVariableValues.


@netlify

netlify Bot commented Feb 16, 2024

Copy link
Copy Markdown

Deploy Preview for graphql-spec-draft ready!

Name Link
🔨 Latest commit ef8aaa3
🔍 Latest deploy log https://app.netlify.com/projects/graphql-spec-draft/deploys/692980a0bbe76a00087ea4bd
😎 Deploy Preview https://deploy-preview-1081--graphql-spec-draft.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@mjmahone mjmahone left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is clear to me :)

Very excited to see progress, and thank you for cleaning up and clarifying the PR!

Comment thread spec/Section 2 -- Language.md Outdated
Comment thread spec/Section 5 -- Validation.md
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 2 -- Language.md Outdated
Comment thread spec/Section 5 -- Validation.md
@JoviDeCroock JoviDeCroock force-pushed the fragment-args-2024-amendments branch from 5a73543 to d7590fa Compare March 8, 2024 07:04
@JoviDeCroock

Copy link
Copy Markdown
Contributor Author

@graphql/tsc is there anything I can do to move this forward?

Comment thread spec/Section 6 -- Execution.md Outdated

@benjie benjie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels like section 2 should comment on the fact that shadowed variables may not be referenced implicitly by child fragment spreads. (This is probably not the right way of saying that!) E.g. in the following query, Forbidden is spread inside of F and attempts to use variable $a which is ambiguous, and hence not permitted.

query Q($a: Int!, $b: Int!) {
  ...F(a: 7)
}
fragment F($a: Int!) {
  ...Fine
  ...Forbidden
}
fragment Fine {
  b: echo(input: $b)
}
fragment Forbidden {
  a: echo(input: $a)
}

Comment thread spec/Section 2 -- Language.md Outdated
Comment thread spec/Section 2 -- Language.md Outdated
Comment thread spec/Section 2 -- Language.md Outdated
Comment thread spec/Section 2 -- Language.md Outdated
Comment thread spec/Section 2 -- Language.md Outdated
Comment thread spec/Section 2 -- Language.md Outdated
Comment thread spec/Section 2 -- Language.md Outdated
@JoviDeCroock

JoviDeCroock commented Mar 27, 2024

Copy link
Copy Markdown
Contributor Author

@benjie from a purely technical perspective I agree, I was approaching that more from a backwards compatibility perspective. The Fragments variables are only applicable within the context of a FragmentDefinitiion so we don't carry nested values. A fragment is always looked at in isolation and not from a call-stack point of view.

i.e.

query ($a: String!) {
  operation {
    ...fields(a: 'some-value')
  }
}

fragment fields($a: String) on Type {
  field(x: $a) ## this carries 'some-value'
  ...moreFields
}

fragment moreFields on Type {
  field2(x: $a) ## this would carry the value passed into the operation
}

This also makes Fragment-Arguments easier to reason about for me atleast as it's either the Variables passed into the definition or from the operation itself.

@JoviDeCroock JoviDeCroock force-pushed the fragment-args-2024-amendments branch from ac9fdbc to 03ba255 Compare March 27, 2024 13:39

@benjie benjie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't got as far as section 6 yet.

Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
@benjie

benjie commented Mar 27, 2024

Copy link
Copy Markdown
Member

@JoviDeCroock Ah! I thought we landed on the other side with this one, this does simplify things significantly because we can look at fragments in isolation 👍

@benjie benjie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work Jovi! Here's a few comments, but this was only a quick review so it's not exhaustive.

Comment thread spec/Section 5 -- Validation.md
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md Outdated
Comment thread spec/Section 5 -- Validation.md
@linux-foundation-easycla

linux-foundation-easycla Bot commented May 17, 2024

Copy link
Copy Markdown

CLA Signed

The committers listed above are authorized under a signed CLA.

@benjie

benjie commented May 20, 2024

Copy link
Copy Markdown
Member

@JoviDeCroock did you rebase on a different computer? Often this happens when git is configured to use a different email address on one computer than another, so some commits don't match EasyCLA whilst others do.

@JoviDeCroock

JoviDeCroock commented May 20, 2024

Copy link
Copy Markdown
Contributor Author

@benjie I did not, the commits it points at are code-suggestions I applied so maybe it's not good at the co-authored ones? Not sure 😅 can rebase to fix it

@JoviDeCroock JoviDeCroock force-pushed the fragment-args-2024-amendments branch from dc25c04 to f306736 Compare May 20, 2024 08:53

@benjie benjie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an excellent start, I've gone through and done a full review of sections 2 and 5 and applied a number of editorial changes and clarifications to the text to align it more with the conventions of the spec and ensure that any ambiguities or edge cases are clarified; since there was a lot of edits I've raised them as a separate pull request:

I've not yet fully reviewed section 6, but I see some of the edits there may overlap with the incremental delivery work (that needed similar changes to the collect fields algorithm) so it would be worth making sure that these align. @robrichard and I can probably work through that and make it consistent.

Thanks for your work on this!

yaacovCR added a commit to yaacovCR/graphql-js that referenced this pull request Dec 13, 2025
…l#4015)

This is a rebase of graphql#3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to yaacovCR/graphql-js that referenced this pull request Dec 16, 2025
…l#4015)

This is a rebase of graphql#3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to yaacovCR/graphql-js that referenced this pull request Dec 16, 2025
…l#4015)

This is a rebase of graphql#3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to yaacovCR/graphql-js that referenced this pull request Dec 16, 2025
…l#4015)

This is a rebase of graphql#3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to yaacovCR/graphql-js that referenced this pull request Dec 17, 2025
…l#4015)

This is a rebase of graphql#3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to yaacovCR/graphql-js that referenced this pull request Dec 17, 2025
…l#4015)

This is a rebase of graphql#3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to yaacovCR/graphql-js that referenced this pull request Dec 19, 2025
…l#4015)

This is a rebase of graphql#3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to yaacovCR/graphql-js that referenced this pull request Dec 22, 2025
…l#4015)

This is a rebase of graphql#3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to graphql/graphql-js that referenced this pull request Dec 22, 2025
This is a rebase of #3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to graphql/graphql-js that referenced this pull request Dec 22, 2025
This is a rebase of #3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to yaacovCR/graphql-js that referenced this pull request Jan 27, 2026
…l#4015)

This is a rebase of graphql#3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
whatasoda added a commit to whatasoda/soda-gql that referenced this pull request Feb 1, 2026
## Summary

- Add comprehensive RFC for building an independent GraphQL LSP for
soda-gql
- Add supplementary implementation details report

### Key design decisions

- **Callback + Tagged Template API**: `gql.{schemaName}(({ query,
fragment }) => query`...`)` — callback required for intermediate module
compatibility, tag names encode operation kind
- **Fragment Arguments RFC syntax**: Fragment variables declared in
GraphQL via [spec proposal
#1081](graphql/graphql-spec#1081)
- **Metadata chaining**: Tagged template results are callable for
attaching metadata
- **Hybrid LSP**: `vscode-languageserver` + `graphql-language-service`
interface layer (not server) + SWC parser
- **SWC for TS parsing**: Fast AST analysis for always-on LSP

### Documents

| File | Description |
|------|-------------|
| `docs/rfcs/graphql-lsp-multi-schema.md` | Main RFC: motivation, API
design, LSP architecture, implementation plan |
| `docs/rfcs/graphql-lsp-implementation-details.md` | Supplementary: LSP
protocol requirements, graphql-language-service analysis, extension
opportunities |

### Open questions (to be resolved during implementation)

- Type inference strategy (TypedDocumentNode vs $infer)
- Fragment cross-file resolution approach
- Schema reload strategy

## Test plan

- [ ] Review RFC for consistency and completeness
- [ ] Validate code examples match existing soda-gql patterns
- [ ] Confirm Fragment Arguments RFC syntax is correctly described

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
yaacovCR added a commit to graphql/graphql-js that referenced this pull request Feb 22, 2026
This is a rebase of #3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to graphql/graphql-js that referenced this pull request Feb 23, 2026
This is a rebase of #3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to graphql/graphql-js that referenced this pull request Feb 24, 2026
This is a rebase of #3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
@martinbonnin

Copy link
Copy Markdown
Contributor

Apollo Kotlin 5.0.0-alpha.5+ supports fragment arguments (PR)

yaacovCR added a commit to graphql/graphql-js that referenced this pull request Feb 24, 2026
This is a rebase of #3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to graphql/graphql-js that referenced this pull request Feb 24, 2026
This is a rebase of #3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
yaacovCR added a commit to graphql/graphql-js that referenced this pull request Feb 24, 2026
This is a rebase of #3847

This implements execution of Fragment Arguments, and more specifically
visiting, parsing and printing of fragment-spreads with arguments and
fragment definitions with variables, as described by the spec changes in
graphql/graphql-spec#1081. There are a few
amendments in terms of execution and keying the fragment-spreads, these
are reflected in mjmahone/graphql-spec#3

The purpose is to be able to independently review all the moving parts,
the stacked PR's will contain mentions of open feedback that was present
at the time.

- [execution changes](JoviDeCroock#2)
- [TypeInfo & validation
changes](JoviDeCroock#4)
- [validation changes in
isolation](JoviDeCroock#5)

CC @mjmahone the original author

---------

Co-authored-by: mjmahone <mahoney.mattj@gmail.com>
Co-authored-by: Yaacov Rydzinski <yaacovCR@gmail.com>
@JoviDeCroock

Copy link
Copy Markdown
Contributor Author

Thanks everyone for the discussion and work on this PR.

I won’t be able to continue championing or spending time on this proposal. If there’s still interest in moving this forward, it would likely benefit from someone else picking it up and driving it.

Appreciate all the input so far, and happy to see it continue if someone wants to take it further.

@github-project-automation github-project-automation Bot moved this from Planning to review to Done in Benjie's GraphQL tasks Mar 8, 2026
@JoviDeCroock JoviDeCroock deleted the fragment-args-2024-amendments branch March 8, 2026 11:35
@benjie benjie added the 👻 Needs Champion RFC Needs a champion to progress (See CONTRIBUTING.md) label Apr 15, 2026
@benjie

benjie commented Apr 15, 2026

Copy link
Copy Markdown
Member

Thanks for your work on this, @JoviDeCroock! I've re-opened it in #1224 to ensure the work isn't lost since it's RFC2; I've marked it as "needs champion". It already feels like it's fairly close to the finish line thanks to your hard work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📄 Draft (RFC 2) RFC Stage 2 (See CONTRIBUTING.md) 👻 Needs Champion RFC Needs a champion to progress (See CONTRIBUTING.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Parameterized fragments

8 participants