fn resolve()

in compiler/crates/resolution-path/src/lib.rs [406:447]


    fn resolve(&'a self, parent: Self::Parent, position: Span) -> ResolutionPath<'a> {
        if let Some(name) = &self.name {
            if name.contains(position) {
                return name.resolve(
                    IdentParent::OperationDefinitionName(self.path(parent)),
                    position,
                );
            }
        }
        if let Some(operation) = &self.operation {
            if operation.contains(position) {
                return operation.resolve(self.path(parent), position);
            }
        }
        for directive in self.directives.iter() {
            if directive.contains(position) {
                return directive.resolve(
                    DirectiveParent::OperationDefinition(self.path(parent)),
                    position,
                );
            }
        }

        if let Some(variable_definitions) = &self.variable_definitions {
            if variable_definitions.contains(position) {
                return variable_definitions.resolve(
                    VariableDefinitionListParent::OperationDefinition(self.path(parent)),
                    position,
                );
            }
        }

        for selection in &self.selections.items {
            if selection.span().contains(position) {
                return selection.resolve(
                    SelectionParent::OperationDefinitionSelection(self.path(parent)),
                    position,
                );
            }
        }
        ResolutionPath::OperationDefinition(self.path(parent))
    }