@@ -421,21 +421,30 @@ impl Schema {
421421} ;
422422
423423if let schema:: Definition :: TypeDefinition ( ref mut type_definition) = definition{
424- let directives =match type_definition{
425- TypeDefinition :: Object ( object_type) =>& mut object_type. directives ,
426- TypeDefinition :: Interface ( interface_type) =>& mut interface_type. directives ,
427- TypeDefinition :: Enum ( enum_type) =>& mut enum_type. directives ,
428- TypeDefinition :: Scalar ( scalar_type) =>& mut scalar_type. directives ,
424+ let ( name, directives) =match type_definition{
425+ TypeDefinition :: Object ( object_type) =>{
426+ ( & object_type. name , & mut object_type. directives )
427+ }
428+ TypeDefinition :: Interface ( interface_type) =>{
429+ ( & interface_type. name , & mut interface_type. directives )
430+ }
431+ TypeDefinition :: Enum ( enum_type) =>( & enum_type. name , & mut enum_type. directives ) ,
432+ TypeDefinition :: Scalar ( scalar_type) =>{
433+ ( & scalar_type. name , & mut scalar_type. directives )
434+ }
429435TypeDefinition :: InputObject ( input_object_type) =>{
430- & mut input_object_type. directives
436+ ( & input_object_type. name , & mut input_object_type. directives )
437+ }
438+ TypeDefinition :: Union ( union_type) =>{
439+ ( & union_type. name , & mut union_type. directives )
431440}
432- TypeDefinition :: Union ( union_type) =>& mut union_type. directives ,
433441} ;
434442
435- if directives
436- . iter ( )
437- . find ( |directive| directive. name . eq ( "subgraphId" ) )
438- . is_none ( )
443+ if !name. eq ( SCHEMA_TYPE_NAME )
444+ && directives
445+ . iter ( )
446+ . find ( |directive| directive. name . eq ( "subgraphId" ) )
447+ . is_none ( )
439448{
440449 directives. push ( subgraph_id_directive) ;
441450}
@@ -701,7 +710,9 @@ impl Schema {
701710. document
702711. get_object_type_definitions ( )
703712. iter ( )
704- . filter ( |t| t. find_directive ( String :: from ( "entity" ) ) . is_none ( ) )
713+ . filter ( |t|{
714+ t. find_directive ( String :: from ( "entity" ) ) . is_none ( ) && !t. name . eq ( SCHEMA_TYPE_NAME )
715+ } )
705716. map ( |t| t. name . to_owned ( ) )
706717. collect :: < Vec < _ > > ( ) ;
707718if types_without_entity_directive. is_empty ( ) {