Skip to content

Commit 1abb4b3

Browse files
authored
Introduce criteria G - error propagation boundaries not impacted (#1654)
1 parent a0d1ea9 commit 1abb4b3

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

rfcs/SemanticNullability.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,20 @@ not cause confusion.
289289

290290
Criteria score: 🥇
291291

292+
## 🎯 G. Error propagation boundaries should not change in existing executable documents
293+
294+
An expansion of B, this states that the proposal will not change where errors
295+
propagate to when error propagation is enabled (i.e. existing documents will
296+
still keep errors local to the same positions that they did when they were
297+
published), allowing for the "partial success" feature of GraphQL to continue to
298+
shine and not compromising the resiliency of legacy deployed app versions.
299+
300+
| [1][solution-1] | [2][solution-2] | [3][solution-3] | [4][solution-4] |
301+
| --------------- | --------------- | --------------- | --------------- |
302+
|||||
303+
304+
Criteria score: 🥇
305+
292306
<!--
293307
294308
Template for new items:
@@ -369,6 +383,8 @@ have been discussed the choice of symbol comes down mostly to aesthetics.
369383
- ✅ Same syntax.
370384
- [F][criteria-f]
371385
- ✅ Same syntax.
386+
- [G][criteria-g]
387+
- ✅ Error capture positions unchanged when error propagation enabled
372388

373389
## 💡 2. "Strict Semantic Nullability"
374390

@@ -406,6 +422,8 @@ symbol) to indicate that a position may semantically be null.
406422
- ✅ The same syntax is used on input and output.
407423
- [F][criteria-f]
408424
- ✅ There is no alternative syntax.
425+
- [G][criteria-g]
426+
- ✅ Error capture positions unchanged when error propagation enabled
409427

410428
## 💡 3. New "Semantic Non-Null" type, usurping `!` syntax
411429

@@ -466,6 +484,8 @@ day-to-day work.
466484
non-nullable in both modes. Only the SDL ever uses `Int!!` and it still
467485
means non-null, just with the additional "kills parent on exception"
468486
behavior.
487+
- [G][criteria-g]
488+
- ✅ Error capture positions unchanged when error propagation enabled
469489

470490
## 💡 4. New "Semantic Non-Null" type, with `?` used for nullable types
471491

@@ -501,3 +521,5 @@ directive is present, and a `?` symbol is used to indicate a nullable position.
501521
- [F][criteria-f]
502522
- 🚫 `Int` being nullable in one mode and non-nullable in the other mode is
503523
unexpected and will likely lead to confusion.
524+
- [G][criteria-g]
525+
- ✅ Error capture positions unchanged when error propagation enabled

0 commit comments

Comments
 (0)