@@ -568,14 +568,26 @@ set or coercing a scalar value.
568568
569569ExecuteField(objectType, objectValue, fieldType, fields, variableValues):
570570
571- - Let {field} be the first entry in {fields}.
572- - Let {fieldName} be the field name of {field}.
573- - Let {argumentValues} be the result of {CoerceArgumentValues(objectType, field,
574- variableValues)}
575- - Let {resolvedValue} be {ResolveFieldValue(objectType, objectValue, fieldName,
576- argumentValues)}.
577- - Return the result of {CompleteValue(fieldType, fields, resolvedValue,
578- variableValues)}.
571+ - Let {field} be the first entry in {fields}.
572+ - Let {fieldName} be the field name of {field}.
573+ - Let {requiredStatus} be the required status of {field}.
574+ - Let {argumentValues} be the result of {CoerceArgumentValues(objectType, field, variableValues)}
575+ - Let {resolvedValue} be {ResolveFieldValue(objectType, objectValue, fieldName, argumentValues)}.
576+ - Let {modifiedFieldType} be {ModifiedOutputType(fieldType, requiredStatus)}.
577+ - Return the result of {CompleteValue(modifiedFieldType, fields, resolvedValue, variableValues)}.
578+
579+ ModifiedOutputType(outputType, requiredStatus):
580+
581+ - If {requiredStatus} is 'required' and {outputType} is not a Non-Nullable type:
582+ - Return Non-Null with an inner type of {outputType}.
583+ - Otherwise if {requiredStatus} is 'optional':
584+ - If {outputType} is not a Non-Nullable type:
585+ - Return {outputType}.
586+ - Otherwise if {outputType} is a Non-Nullable type:
587+ - Let {innerOutputType} be the inner type of {outputType}.
588+ - Return {innerOutputType}.
589+ - Otherwise:
590+ - Return {outputType}.
579591
580592### Coercing Field Arguments
581593
0 commit comments