@@ -48,6 +48,8 @@ import type {
48
48
EnumTypeDefinition ,
49
49
EnumValueDefinition ,
50
50
InputObjectTypeDefinition ,
51
+
52
+ TypeExtensionDefinition ,
51
53
} from './ast' ;
52
54
53
55
import {
@@ -89,6 +91,8 @@ import {
89
91
ENUM_TYPE_DEFINITION ,
90
92
ENUM_VALUE_DEFINITION ,
91
93
INPUT_OBJECT_TYPE_DEFINITION ,
94
+
95
+ TYPE_EXTENTION_DEFINITION ,
92
96
} from './kinds' ;
93
97
94
98
@@ -177,6 +181,7 @@ function parseDocument(parser): Document {
177
181
* - OperationDefinition
178
182
* - FragmentDefinition
179
183
* - TypeDefinition
184
+ * - TypeExtensionDefinition
180
185
*/
181
186
function parseDefinition ( parser ) : Definition {
182
187
if ( peek ( parser , TokenKind . BRACE_L ) ) {
@@ -196,6 +201,8 @@ function parseDefinition(parser): Definition {
196
201
case 'scalar' :
197
202
case 'enum' :
198
203
case 'input' : return parseTypeDefinition ( parser ) ;
204
+
205
+ case 'extend' : return parseTypeExtensionDefinition ( parser ) ;
199
206
}
200
207
}
201
208
@@ -883,6 +890,23 @@ function parseInputObjectTypeDefinition(parser): InputObjectTypeDefinition {
883
890
}
884
891
885
892
893
+ // Implements the parsing rules for Type Extension
894
+
895
+ /**
896
+ * TypeExtensionDefinition : extend ObjectTypeDefinition
897
+ */
898
+ function parseTypeExtensionDefinition ( parser ) : TypeExtensionDefinition {
899
+ var start = parser . token . start ;
900
+ expectKeyword ( parser , 'extend' ) ;
901
+ var definition = parseObjectTypeDefinition ( parser ) ;
902
+ return {
903
+ kind : TYPE_EXTENTION_DEFINITION ,
904
+ definition,
905
+ loc : loc ( parser , start ) ,
906
+ } ;
907
+ }
908
+
909
+
886
910
// Core parsing utility functions
887
911
888
912
/**
0 commit comments