Skip to content

Commit 6e615bc

Browse files
committed
response and validation
1 parent 2782099 commit 6e615bc

File tree

1 file changed

+21
-29
lines changed

1 file changed

+21
-29
lines changed

spec/Section 5 -- Validation.md

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,6 @@ FieldsInSetCanMerge(set):
426426

427427
SameResponseShape(fieldA, fieldB):
428428

429-
<<<<<<< HEAD
430429
- Let {typeA} be the return type of {fieldA}.
431430
- Let {typeB} be the return type of {fieldB}.
432431
- If {typeA} or {typeB} is Non-Null.
@@ -449,34 +448,6 @@ SameResponseShape(fieldA, fieldB):
449448
- Given each pair of members {subfieldA} and {subfieldB} in {fieldsForName}:
450449
- If {SameResponseShape(subfieldA, subfieldB)} is false, return false.
451450
- Return true.
452-
=======
453-
* Let {typeA} be the return type of {fieldA}.
454-
* Let {typeB} be the return type of {fieldB}.
455-
* Let {fieldARequiredStatus} be the required status of {fieldA}
456-
* Let {fieldBRequiredStatus} be the required status of {fieldB}
457-
* Let {typeA} be the result of {ModifiedOutputType(typeA, fieldARequiredStatus)}
458-
* Let {typeB} be the result of {ModifiedOutputType(typeB, fieldBRequiredStatus)}
459-
* If {typeA} or {typeB} is Non-Null.
460-
* If {typeA} or {typeB} is nullable, return false.
461-
* Let {typeA} be the nullable type of {typeA}
462-
* Let {typeB} be the nullable type of {typeB}
463-
* If {typeA} or {typeB} is List.
464-
* If {typeA} or {typeB} is not List, return false.
465-
* Let {typeA} be the item type of {typeA}
466-
* Let {typeB} be the item type of {typeB}
467-
* Repeat from step 3.
468-
* If {typeA} or {typeB} is Scalar or Enum.
469-
* If {typeA} and {typeB} are the same type return true, otherwise return
470-
false.
471-
* Assert: {typeA} and {typeB} are both composite types.
472-
* Let {mergedSet} be the result of adding the selection set of {fieldA} and
473-
the selection set of {fieldB}.
474-
* Let {fieldsForName} be the set of selections with a given response name in
475-
{mergedSet} including visiting fragments and inline fragments.
476-
* Given each pair of members {subfieldA} and {subfieldB} in {fieldsForName}:
477-
* If {SameResponseShape(subfieldA, subfieldB)} is false, return false.
478-
* Return true.
479-
>>>>>>> 9906241 (errors and validation formal definitions)
480451

481452
**Explanatory Text**
482453

@@ -608,6 +579,27 @@ fragment conflictingDifferingResponses on Pet {
608579
}
609580
```
610581

582+
### Client Controlled Nullability Designator List Dimensions
583+
584+
**Formal Specification**
585+
586+
* For each {field} in the document
587+
* Let {fieldDef} be the definition of {field}
588+
* Let {fieldType} be the type of {fieldDef}
589+
* Let {requiredStatus} be the required status of {field}
590+
* Let {designatorDepth} be the number of square bracket pairs in {requiredStatus}
591+
* Let {typeDepth} be the number of list dimensions in {fieldType}
592+
* If {typeDepth} equals {designatorDepth} return true
593+
* Otherwise return false
594+
595+
**Explanatory Text**
596+
597+
List fields can be marked with nullability designators that look like `[?]!` to indicate the
598+
nullability of the list's elements and the nullability of the list itself. For multi-dimensional
599+
lists, the designator would look something like `[[[!]?]]!`. The number of dimensions of the
600+
designator are required to match the number of dimensions of the field's type. If the two do not
601+
match then a validation error is thrown.
602+
611603
### Leaf Field Selections
612604

613605
**Formal Specification**

0 commit comments

Comments
 (0)