From 7169533b517cbf949e1b0d152fde83622a3d9915 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 23 May 2026 16:11:15 -0700 Subject: [PATCH 1/2] Interfaces with no fields --- spec/Section 3 -- Type System.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/spec/Section 3 -- Type System.md b/spec/Section 3 -- Type System.md index ba2c6a2f9..6a76d3f9c 100644 --- a/spec/Section 3 -- Type System.md +++ b/spec/Section 3 -- Type System.md @@ -1275,8 +1275,7 @@ Interfaces are never valid inputs. Interface types have the potential to be invalid if incorrectly defined. -1. An Interface type must define one or more fields. -2. For each field of an Interface type: +1. For each field of an Interface type: 1. The field must have a unique name within that Interface type; no two fields may share the same name. 2. The field must not have a name which begins with the characters {"\_\_"} @@ -1290,9 +1289,9 @@ Interface types have the potential to be invalid if incorrectly defined. arguments may share the same name. 3. The argument must accept a type where {IsInputType(argumentType)} returns {true}. -3. An interface type may declare that it implements one or more unique +2. An interface type may declare that it implements one or more unique interfaces, but may not implement itself. -4. An interface type must be a super-set of all interfaces it implements: +3. An interface type must be a super-set of all interfaces it implements: 1. Let this interface type be {implementingType}. 2. For each interface declared implemented as {implementedType}, {IsValidImplementation(implementingType, implementedType)} must be {true}. From fa2fb46cc9b7f6eae51bc20191ecb2775846e56f Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Sat, 23 May 2026 16:30:45 -0700 Subject: [PATCH 2/2] Allow a union to be empty --- spec/Section 3 -- Type System.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spec/Section 3 -- Type System.md b/spec/Section 3 -- Type System.md index 6a76d3f9c..ccc57d278 100644 --- a/spec/Section 3 -- Type System.md +++ b/spec/Section 3 -- Type System.md @@ -1449,8 +1449,7 @@ Unions are never valid inputs. Union types have the potential to be invalid if incorrectly defined. -1. A Union type must include one or more unique member types. -2. The member types of a Union type must all be Object base types; Scalar, +1. The member types of a Union type must all be Object base types; Scalar, Interface and Union types must not be member types of a Union. Similarly, wrapping types must not be member types of a Union.