@@ -173,8 +173,7 @@ class SchemaParser internal constructor(
173
173
return output.toTypedArray()
174
174
}
175
175
176
- private fun createInputObject (definition : InputObjectTypeDefinition , inputObjects : List <GraphQLInputObjectType >,
177
- referencingInputObjects : MutableSet <String >): GraphQLInputObjectType {
176
+ private fun createInputObject (definition : InputObjectTypeDefinition , inputObjects : List <GraphQLInputObjectType >, referencingInputObjects : MutableSet <String >): GraphQLInputObjectType {
178
177
val extensionDefinitions = inputExtensionDefinitions.filter { it.name == definition.name }
179
178
180
179
val builder = GraphQLInputObjectType .newInputObject()
@@ -352,10 +351,7 @@ class SchemaParser internal constructor(
352
351
private fun determineInputType (typeDefinition : Type <* >, inputObjects : List <GraphQLInputObjectType >, referencingInputObjects : Set <String >) =
353
352
determineInputType(GraphQLInputType ::class , typeDefinition, permittedTypesForInputObject, inputObjects, referencingInputObjects) as GraphQLInputType
354
353
355
- private fun <T : Any > determineInputType (expectedType : KClass <T >,
356
- typeDefinition : Type <* >, allowedTypeReferences : Set <String >,
357
- inputObjects : List <GraphQLInputObjectType >,
358
- referencingInputObjects : Set <String >): GraphQLType =
354
+ private fun <T : Any > determineInputType (expectedType : KClass <T >, typeDefinition : Type <* >, allowedTypeReferences : Set <String >, inputObjects : List <GraphQLInputObjectType >, referencingInputObjects : Set <String >): GraphQLType =
359
355
when (typeDefinition) {
360
356
is ListType -> GraphQLList (determineType(expectedType, typeDefinition.type, allowedTypeReferences, inputObjects))
361
357
is NonNullType -> GraphQLNonNull (determineType(expectedType, typeDefinition.type, allowedTypeReferences, inputObjects))
@@ -381,6 +377,7 @@ class SchemaParser internal constructor(
381
377
if (filteredDefinitions.isNotEmpty()) {
382
378
val referencingInputObject = referencingInputObjects.find { it == typeDefinition.name }
383
379
if (referencingInputObject != null ) {
380
+ // avoid creating another input object if it already exists to prevent infinite recursion
384
381
GraphQLTypeReference (referencingInputObject)
385
382
} else {
386
383
val inputObject = createInputObject(filteredDefinitions[0 ], inputObjects, referencingInputObjects as MutableSet <String >)
0 commit comments