Skip to content

Commit 0599414

Browse files
committed
Clarify that composite types must define at least one field.
As pointed out by graphql/graphql-js#368
1 parent 7c36326 commit 0599414

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

spec/Section 3 -- Type System.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -506,9 +506,10 @@ treated in documentation and tooling.
506506
Object types have the potential to be invalid if incorrectly defined. This set
507507
of rules must be adhered to by every Object type in a GraphQL schema.
508508

509-
1. The fields of an Object type must have unique names within that Object type;
509+
1. An Object type must define one or more fields.
510+
2. The fields of an Object type must have unique names within that Object type;
510511
no two fields may share the same name.
511-
2. An object type must be a super-set of all interfaces it implements.
512+
3. An object type must be a super-set of all interfaces it implements:
512513
1. The object type must include a field of the same name for every field
513514
defined in an interface.
514515
1. The object field must be of a type which is equal to or a sub-type of
@@ -633,7 +634,8 @@ Interfaces are never valid inputs.
633634

634635
Interface types have the potential to be invalid if incorrectly defined.
635636

636-
1. The fields of an Interface type must have unique names within that Interface
637+
1. An Interface type must define one or more fields.
638+
2. The fields of an Interface type must have unique names within that Interface
637639
type; no two fields may share the same name.
638640

639641

@@ -776,6 +778,13 @@ corresponding entry, the value is the result of coercing null. The input
776778
coercion above should be performed according to the input coercion rules of the
777779
type declared by the input field.
778780

781+
#### Input Object type validation
782+
783+
1. An Input Object type must define one or more fields.
784+
2. The fields of an Input Object type must have unique names within that
785+
Input Object type; no two fields may share the same name.
786+
3. The return types of each defined field must be an Input type.
787+
779788

780789
### Lists
781790

@@ -863,6 +872,10 @@ query withNullableVariable($var: String) {
863872
}
864873
```
865874

875+
#### Non-Null type validation
876+
877+
1. A Non-Null type must not wrap another Non-Null type.
878+
866879

867880
## Directives
868881

0 commit comments

Comments
 (0)