diff --git a/spec/Section 6 -- Execution.md b/spec/Section 6 -- Execution.md index 28862ea89..bfe09e874 100644 --- a/spec/Section 6 -- Execution.md +++ b/spec/Section 6 -- Execution.md @@ -734,9 +734,21 @@ the {objectValue}. ResolveAbstractType(abstractType, objectValue): -- Return the result of calling the internal method provided by the type system - for determining the Object type of {abstractType} given the value - {objectValue}. +- Let {resolvedType} be the result of calling the internal method provided by + the type system for determining the Object type of {abstractType} given the + value {objectValue}. +- Assert {resolvedType} is an Object type. +- Assert {IsSubType(abstractType, resolvedType)}. +- Return {resolvedType}. + +IsSubType(abstractType, objectType): + +- If {abstractType} is an Interface type. + - If {objectType} implements {abstractType}, return {true}. + - Otherwise, return {false}. +- If {abstractType} is a Union type. + - If {objectType} is a member type of {abstractType}, return {true}. + - Otherwise, return {false}. **Merging Selection Sets**