Skip to content

Commit e6d3e56

Browse files
fix: Schema extension parser captures operations
1 parent a1871c4 commit e6d3e56

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

Sources/GraphQL/Language/Parser.swift

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1038,16 +1038,28 @@ func parseTypeExtensionDefinition(lexer: Lexer) throws -> TypeExtensionDefinitio
10381038
func parseSchemaExtensionDefinition(lexer: Lexer) throws -> SchemaExtensionDefinition {
10391039
let start = lexer.token
10401040
try expectKeyword(lexer: lexer, value: "extend")
1041-
let description = try parseDescription(lexer: lexer)
10421041
try expectKeyword(lexer: lexer, value: "schema")
10431042
let directives = try parseDirectives(lexer: lexer)
1043+
let operationTypes = try optionalMany(
1044+
lexer: lexer,
1045+
openKind: .openingBrace,
1046+
closeKind: .closingBrace,
1047+
parse: parseOperationTypeDefinition
1048+
)
1049+
if directives.isEmpty, operationTypes.isEmpty {
1050+
throw syntaxError(
1051+
source: lexer.source,
1052+
position: lexer.token.start,
1053+
description: "expected schema extend to have directive or operation"
1054+
)
1055+
}
10441056
return SchemaExtensionDefinition(
10451057
loc: loc(lexer: lexer, startToken: start),
10461058
definition: SchemaDefinition(
10471059
loc: loc(lexer: lexer, startToken: start),
1048-
description: description,
1060+
description: nil,
10491061
directives: directives,
1050-
operationTypes: []
1062+
operationTypes: operationTypes
10511063
)
10521064
)
10531065
}

0 commit comments

Comments
 (0)