@@ -221,7 +221,7 @@ internal fun validateSchema(definitions: List<GQLDefinition>, options: SchemaVal
221
221
*/
222
222
issues.add(DirectiveRedefinition (entry.key, existing.sourceLocation, existing.sourceLocation))
223
223
directiveDefinitions.put(entry.key, entry.value.definition)
224
- } else if (entry.value.linkedSchema.foreignSchema.name == " link " ) {
224
+ } else if (entry.value.linkedSchema.foreignSchema.name == Schema . LINK ) {
225
225
/*
226
226
* Since we don't support renaming @link just yet, there's no good resolution if the directive
227
227
* is already defined in the API schema. Just ignore the schema one in this case
@@ -304,8 +304,9 @@ internal fun validateSchema(definitions: List<GQLDefinition>, options: SchemaVal
304
304
mergedScope.validateNoIntrospectionNames()
305
305
306
306
// The cast never fails because we enforce a single schema definition above.
307
- val mergedSchemaDefinition = mergedDefinitions.single { it is GQLSchemaDefinition } as GQLSchemaDefinition
307
+ var mergedSchemaDefinition = mergedDefinitions.single { it is GQLSchemaDefinition } as GQLSchemaDefinition
308
308
309
+ mergedSchemaDefinition = mergedSchemaDefinition.copy(directives = mergedSchemaDefinition.directives.filter { it.name != Schema .LINK })
309
310
mergedScope.validateSchemaDefinition(mergedSchemaDefinition)
310
311
mergedScope.validateInterfaces()
311
312
mergedScope.validateObjects()
@@ -403,11 +404,10 @@ private fun List<GQLSchemaExtension>.getLinkedSchemas(
403
404
val schemaExtensions = this
404
405
405
406
val linkedSchemas = mutableListOf<LinkedSchema >()
406
- val linkForeignSchema = ForeignSchema (" link" , " v1.0" , linkDefinitions())
407
- val linkLinkedSchema = LinkedSchema (linkForeignSchema, linkForeignSchema.definitions, mapOf (" link" to " link" ), null )
407
+ val linkLinkedSchema = ForeignSchema (" link" , " v1.0" , linkDefinitions()).asNonPrefixedImport()
408
408
schemaExtensions.forEach { schemaExtension ->
409
409
schemaExtension.directives.forEach eachDirective@{ gqlDirective ->
410
- if (gqlDirective.name == " link " ) {
410
+ if (gqlDirective.name == Schema . LINK ) {
411
411
if (! linkedSchemas.contains(linkLinkedSchema)) {
412
412
linkedSchemas.add(linkLinkedSchema)
413
413
}
@@ -416,7 +416,7 @@ private fun List<GQLSchemaExtension>.getLinkedSchemas(
416
416
* Validate `@link` using a very minimal schema.
417
417
* This ensures we can safely cast the arguments below
418
418
*/
419
- val minimalSchema = builtinDefinitions() + linkForeignSchema .definitions
419
+ val minimalSchema = builtinDefinitions() + linkLinkedSchema.foreignSchema .definitions
420
420
val scope = DefaultValidationScope (
421
421
minimalSchema.filterIsInstance<GQLTypeDefinition >().associateBy { it.name },
422
422
minimalSchema.filterIsInstance<GQLDirectiveDefinition >().associateBy { it.name },
0 commit comments