Skip to content

Commit 991bd1c

Browse files
committed
introduce modified field types
1 parent 5e8db9d commit 991bd1c

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

spec/Section 6 -- Execution.md

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,9 +552,23 @@ set or coercing a scalar value.
552552
ExecuteField(objectType, objectValue, fieldType, fields, variableValues):
553553
* Let {field} be the first entry in {fields}.
554554
* Let {fieldName} be the field name of {field}.
555+
* Let {requiredStatus} be the required status of {field}.
555556
* Let {argumentValues} be the result of {CoerceArgumentValues(objectType, field, variableValues)}
556557
* Let {resolvedValue} be {ResolveFieldValue(objectType, objectValue, fieldName, argumentValues)}.
557-
* Return the result of {CompleteValue(fieldType, fields, resolvedValue, variableValues)}.
558+
* Let {modifiedFieldType} be {ModifiedOutputType(fieldType, requiredStatus)}.
559+
* Return the result of {CompleteValue(modifiedFieldType, fields, resolvedValue, variableValues)}.
560+
561+
ModifiedOutputType(outputType, requiredStatus):
562+
* If {requiredStatus} is 'required' and {outputType} is not a Non-Nullable type:
563+
* Return Non-Null with an inner type of {outputType}.
564+
* Otherwise if {requiredStatus} is 'optional':
565+
* If {outputType} is not a Non-Nullable type:
566+
* Return {outputType}.
567+
* Otherwise if {outputType} is a Non-Nullable type:
568+
* Let {innerOutputType} be the inner type of {outputType}.
569+
* Return {innerOutputType}.
570+
* Otherwise:
571+
* Return {outputType}.
558572

559573

560574
### Coercing Field Arguments

0 commit comments

Comments
 (0)