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