pub trait ValidationDatabase: Database + HasQueryGroup<ValidationStorage> + Upcast<dyn HirDatabase> + InputDatabase + AstDatabase + HirDatabase {
Show 50 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: String, key1: Vec<ImplementsInterface> ) -> Vec<ApolloDiagnostic>; fn validate_directive_definitions(&self) -> Vec<ApolloDiagnostic>; fn validate_directives( &self, key0: Vec<Directive>, key1: DirectiveLocation, key2: Arc<Vec<VariableDefinition>> ) -> 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>, key1: Arc<Vec<VariableDefinition>> ) -> 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 get_possible_types(&self, key0: TypeDefinition) -> Vec<TypeDefinition>; fn validate_fragment_selection( &self, key0: FragmentSelection ) -> Vec<ApolloDiagnostic>; fn validate_fragment_spread( &self, key0: Arc<FragmentSpread>, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>; fn validate_inline_fragment( &self, key0: Arc<InlineFragment>, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>; fn validate_fragment_definition( &self, key0: Arc<FragmentDefinition>, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>; fn validate_fragment_cycles( &self, key0: Arc<FragmentDefinition> ) -> Vec<ApolloDiagnostic>; fn validate_fragment_type_condition( &self, key0: String, key1: HirNodeLocation ) -> Vec<ApolloDiagnostic>; fn validate_fragment_used( &self, key0: Arc<FragmentDefinition>, key1: FileId ) -> Vec<ApolloDiagnostic>; fn validate_selection_set( &self, key0: SelectionSet, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>; fn validate_selection( &self, key0: Arc<Vec<Selection>>, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>; fn validate_variable_definitions( &self, key0: Vec<VariableDefinition> ) -> Vec<ApolloDiagnostic>; fn validate_unused_variable( &self, key0: Arc<OperationDefinition> ) -> Vec<ApolloDiagnostic>; fn validate_variable_usage( &self, key0: InputValueDefinition, key1: Arc<Vec<VariableDefinition>>, key2: Argument ) -> Result<(), ApolloDiagnostic>; fn validate_values( &self, key0: &Type, key1: &Argument, key2: Arc<Vec<VariableDefinition>> ) -> Result<(), 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§

source

fn validate(&self) -> Vec<ApolloDiagnostic>

Validate all documents.

source

fn validate_type_system(&self) -> Vec<ApolloDiagnostic>

Validate the type system, combined of all type system documents known to the compiler.

source

fn validate_executable(&self, key0: FileId) -> Vec<ApolloDiagnostic>

Validate an executable document.

source

fn validate_name_uniqueness(&self) -> Vec<ApolloDiagnostic>

source

fn validate_schema_definition( &self, key0: Arc<SchemaDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_root_operation_definitions( &self, key0: Vec<RootOperationTypeDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_scalar_definitions(&self) -> Vec<ApolloDiagnostic>

source

fn validate_scalar_definition( &self, key0: Arc<ScalarTypeDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_enum_definitions(&self) -> Vec<ApolloDiagnostic>

source

fn validate_enum_definition( &self, key0: Arc<EnumTypeDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_enum_value( &self, key0: EnumValueDefinition ) -> Vec<ApolloDiagnostic>

source

fn validate_union_definitions(&self) -> Vec<ApolloDiagnostic>

source

fn validate_union_definition( &self, key0: Arc<UnionTypeDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_interface_definitions(&self) -> Vec<ApolloDiagnostic>

source

fn validate_interface_definition( &self, key0: Arc<InterfaceTypeDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_implements_interfaces( &self, key0: String, key1: Vec<ImplementsInterface> ) -> Vec<ApolloDiagnostic>

source

fn validate_directive_definitions(&self) -> Vec<ApolloDiagnostic>

source

fn validate_directives( &self, key0: Vec<Directive>, key1: DirectiveLocation, key2: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>

source

fn validate_input_object_definitions(&self) -> Vec<ApolloDiagnostic>

source

fn validate_input_object_definition( &self, key0: Arc<InputObjectTypeDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_input_values( &self, key0: Arc<Vec<InputValueDefinition>>, key1: DirectiveLocation ) -> Vec<ApolloDiagnostic>

source

fn validate_object_type_definitions(&self) -> Vec<ApolloDiagnostic>

source

fn validate_extensions(&self) -> Vec<ApolloDiagnostic>

source

fn validate_subscription_operations( &self, key0: Arc<Vec<Arc<OperationDefinition>>> ) -> Vec<ApolloDiagnostic>

source

fn validate_query_operations( &self, key0: Arc<Vec<Arc<OperationDefinition>>> ) -> Vec<ApolloDiagnostic>

source

fn validate_mutation_operations( &self, key0: Arc<Vec<Arc<OperationDefinition>>> ) -> Vec<ApolloDiagnostic>

source

fn validate_object_type_definition( &self, key0: Arc<ObjectTypeDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_field_definitions( &self, key0: Vec<FieldDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_field_definition( &self, key0: FieldDefinition ) -> Vec<ApolloDiagnostic>

source

fn validate_field( &self, key0: Arc<Field>, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>

source

fn validate_leaf_field_selection( &self, key0: Arc<Field>, key1: Type ) -> Result<(), ApolloDiagnostic>

source

fn validate_arguments_definition( &self, key0: ArgumentsDefinition, key1: DirectiveLocation ) -> Vec<ApolloDiagnostic>

source

fn validate_arguments(&self, key0: Vec<Argument>) -> Vec<ApolloDiagnostic>

source

fn validate_operation_definitions(&self, key0: FileId) -> Vec<ApolloDiagnostic>

source

fn get_possible_types(&self, key0: TypeDefinition) -> Vec<TypeDefinition>

Given a type definition, find all the types that can be used for fragment spreading.

Spec: https://spec.graphql.org/October2021/#GetPossibleTypes()

source

fn validate_fragment_selection( &self, key0: FragmentSelection ) -> Vec<ApolloDiagnostic>

source

fn validate_fragment_spread( &self, key0: Arc<FragmentSpread>, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>

source

fn validate_inline_fragment( &self, key0: Arc<InlineFragment>, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>

source

fn validate_fragment_definition( &self, key0: Arc<FragmentDefinition>, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>

source

fn validate_fragment_cycles( &self, key0: Arc<FragmentDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_fragment_type_condition( &self, key0: String, key1: HirNodeLocation ) -> Vec<ApolloDiagnostic>

source

fn validate_fragment_used( &self, key0: Arc<FragmentDefinition>, key1: FileId ) -> Vec<ApolloDiagnostic>

source

fn validate_selection_set( &self, key0: SelectionSet, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>

source

fn validate_selection( &self, key0: Arc<Vec<Selection>>, key1: Arc<Vec<VariableDefinition>> ) -> Vec<ApolloDiagnostic>

source

fn validate_variable_definitions( &self, key0: Vec<VariableDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_unused_variable( &self, key0: Arc<OperationDefinition> ) -> Vec<ApolloDiagnostic>

source

fn validate_variable_usage( &self, key0: InputValueDefinition, key1: Arc<Vec<VariableDefinition>>, key2: Argument ) -> Result<(), ApolloDiagnostic>

source

fn validate_values( &self, key0: &Type, key1: &Argument, key2: Arc<Vec<VariableDefinition>> ) -> Result<(), Vec<ApolloDiagnostic>>

source

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()

source

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()

Implementors§