pub trait ValidationDatabase: Database + HasQueryGroup<ValidationStorage> + Upcast<dyn HirDatabase> + InputDatabase + AstDatabase + HirDatabase {
Show 41 methods
// Required methods
fn validate(&self) -> Vec<ApolloDiagnostic>;
fn validate_type_system(&self) -> Vec<ApolloDiagnostic>;
fn validate_executable(&self, key0: FileId) -> Vec<ApolloDiagnostic>;
fn validate_name_uniqueness(&self) -> Vec<ApolloDiagnostic>;
fn validate_schema_definition(
&self,
key0: Arc<SchemaDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_root_operation_definitions(
&self,
key0: Vec<RootOperationTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_scalar_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_scalar_definition(
&self,
key0: Arc<ScalarTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_enum_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_enum_definition(
&self,
key0: Arc<EnumTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_enum_value(
&self,
key0: EnumValueDefinition
) -> Vec<ApolloDiagnostic>;
fn validate_union_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_union_definition(
&self,
key0: Arc<UnionTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_interface_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_interface_definition(
&self,
key0: Arc<InterfaceTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_implements_interfaces(
&self,
key0: Vec<ImplementsInterface>
) -> Vec<ApolloDiagnostic>;
fn validate_directive_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_directives(
&self,
key0: Vec<Directive>,
key1: DirectiveLocation
) -> Vec<ApolloDiagnostic>;
fn validate_input_object_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_input_object_definition(
&self,
key0: Arc<InputObjectTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_input_values(
&self,
key0: Arc<Vec<InputValueDefinition>>,
key1: DirectiveLocation
) -> Vec<ApolloDiagnostic>;
fn validate_object_type_definitions(&self) -> Vec<ApolloDiagnostic>;
fn validate_extensions(&self) -> Vec<ApolloDiagnostic>;
fn validate_subscription_operations(
&self,
key0: Arc<Vec<Arc<OperationDefinition>>>
) -> Vec<ApolloDiagnostic>;
fn validate_query_operations(
&self,
key0: Arc<Vec<Arc<OperationDefinition>>>
) -> Vec<ApolloDiagnostic>;
fn validate_mutation_operations(
&self,
key0: Arc<Vec<Arc<OperationDefinition>>>
) -> Vec<ApolloDiagnostic>;
fn validate_object_type_definition(
&self,
key0: Arc<ObjectTypeDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_field_definitions(
&self,
key0: Vec<FieldDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_field_definition(
&self,
key0: FieldDefinition
) -> Vec<ApolloDiagnostic>;
fn validate_field(&self, key0: Arc<Field>) -> Vec<ApolloDiagnostic>;
fn validate_leaf_field_selection(
&self,
key0: Arc<Field>,
key1: Type
) -> Result<(), ApolloDiagnostic>;
fn validate_arguments_definition(
&self,
key0: ArgumentsDefinition,
key1: DirectiveLocation
) -> Vec<ApolloDiagnostic>;
fn validate_arguments(&self, key0: Vec<Argument>) -> Vec<ApolloDiagnostic>;
fn validate_operation_definitions(
&self,
key0: FileId
) -> Vec<ApolloDiagnostic>;
fn validate_fragment_definitions(
&self,
key0: FileId
) -> Vec<ApolloDiagnostic>;
fn validate_selection_set(
&self,
key0: SelectionSet
) -> Vec<ApolloDiagnostic>;
fn validate_selection(
&self,
key0: Arc<Vec<Selection>>
) -> Vec<ApolloDiagnostic>;
fn validate_variable_definitions(
&self,
key0: Vec<VariableDefinition>
) -> Vec<ApolloDiagnostic>;
fn validate_unused_variable(
&self,
key0: Arc<OperationDefinition>
) -> Vec<ApolloDiagnostic>;
fn same_response_shape(
&self,
key0: Arc<Field>,
key1: Arc<Field>
) -> Result<(), ApolloDiagnostic>;
fn fields_in_set_can_merge(
&self,
key0: SelectionSet
) -> Result<(), Vec<ApolloDiagnostic>>;
}
Required Methods§
sourcefn validate(&self) -> Vec<ApolloDiagnostic>
fn validate(&self) -> Vec<ApolloDiagnostic>
Validate all documents.
sourcefn validate_type_system(&self) -> Vec<ApolloDiagnostic>
fn validate_type_system(&self) -> Vec<ApolloDiagnostic>
Validate the type system, combined of all type system documents known to the compiler.
sourcefn validate_executable(&self, key0: FileId) -> Vec<ApolloDiagnostic>
fn validate_executable(&self, key0: FileId) -> Vec<ApolloDiagnostic>
Validate an executable document.
fn validate_name_uniqueness(&self) -> Vec<ApolloDiagnostic>
fn validate_schema_definition( &self, key0: Arc<SchemaDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_root_operation_definitions( &self, key0: Vec<RootOperationTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_scalar_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_scalar_definition( &self, key0: Arc<ScalarTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_enum_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_enum_definition( &self, key0: Arc<EnumTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_enum_value( &self, key0: EnumValueDefinition ) -> Vec<ApolloDiagnostic>
fn validate_union_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_union_definition( &self, key0: Arc<UnionTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_interface_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_interface_definition( &self, key0: Arc<InterfaceTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_implements_interfaces( &self, key0: Vec<ImplementsInterface> ) -> Vec<ApolloDiagnostic>
fn validate_directive_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_directives( &self, key0: Vec<Directive>, key1: DirectiveLocation ) -> Vec<ApolloDiagnostic>
fn validate_input_object_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_input_object_definition( &self, key0: Arc<InputObjectTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_input_values( &self, key0: Arc<Vec<InputValueDefinition>>, key1: DirectiveLocation ) -> Vec<ApolloDiagnostic>
fn validate_object_type_definitions(&self) -> Vec<ApolloDiagnostic>
fn validate_extensions(&self) -> Vec<ApolloDiagnostic>
fn validate_subscription_operations( &self, key0: Arc<Vec<Arc<OperationDefinition>>> ) -> Vec<ApolloDiagnostic>
fn validate_query_operations( &self, key0: Arc<Vec<Arc<OperationDefinition>>> ) -> Vec<ApolloDiagnostic>
fn validate_mutation_operations( &self, key0: Arc<Vec<Arc<OperationDefinition>>> ) -> Vec<ApolloDiagnostic>
fn validate_object_type_definition( &self, key0: Arc<ObjectTypeDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_field_definitions( &self, key0: Vec<FieldDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_field_definition( &self, key0: FieldDefinition ) -> Vec<ApolloDiagnostic>
fn validate_field(&self, key0: Arc<Field>) -> Vec<ApolloDiagnostic>
fn validate_leaf_field_selection( &self, key0: Arc<Field>, key1: Type ) -> Result<(), ApolloDiagnostic>
fn validate_arguments_definition( &self, key0: ArgumentsDefinition, key1: DirectiveLocation ) -> Vec<ApolloDiagnostic>
fn validate_arguments(&self, key0: Vec<Argument>) -> Vec<ApolloDiagnostic>
fn validate_operation_definitions(&self, key0: FileId) -> Vec<ApolloDiagnostic>
fn validate_fragment_definitions(&self, key0: FileId) -> Vec<ApolloDiagnostic>
fn validate_selection_set(&self, key0: SelectionSet) -> Vec<ApolloDiagnostic>
fn validate_selection(&self, key0: Arc<Vec<Selection>>) -> Vec<ApolloDiagnostic>
fn validate_variable_definitions( &self, key0: Vec<VariableDefinition> ) -> Vec<ApolloDiagnostic>
fn validate_unused_variable( &self, key0: Arc<OperationDefinition> ) -> Vec<ApolloDiagnostic>
sourcefn same_response_shape(
&self,
key0: Arc<Field>,
key1: Arc<Field>
) -> Result<(), ApolloDiagnostic>
fn same_response_shape( &self, key0: Arc<Field>, key1: Arc<Field> ) -> Result<(), ApolloDiagnostic>
Check if two fields will output the same type.
If the two fields output different types, returns an Err
containing diagnostic information.
To simply check if outputs are the same, you can use .is_ok()
:
ⓘ
let is_same = db.same_response_shape(field_a, field_b).is_ok();
// `is_same` is `bool`
Spec: https://spec.graphql.org/October2021/#SameResponseShape()
sourcefn fields_in_set_can_merge(
&self,
key0: SelectionSet
) -> Result<(), Vec<ApolloDiagnostic>>
fn fields_in_set_can_merge( &self, key0: SelectionSet ) -> Result<(), Vec<ApolloDiagnostic>>
Check if the fields in a given selection set can be merged.
If the fields cannot be merged, returns an Err
containing diagnostic information.
Spec: https://spec.graphql.org/October2021/#FieldsInSetCanMerge()