in compiler/crates/resolution-path/src/lib.rs [663:702]
fn resolve(&'a self, parent: Self::Parent, position: Span) -> ResolutionPath<'a> {
if self.name.contains(position) {
return self
.name
.resolve(IdentParent::LinkedFieldName(self.path(parent)), position);
}
if let Some(alias) = &self.alias {
if alias.span.contains(position) {
return alias
.alias
.resolve(IdentParent::LinkedFieldAlias(self.path(parent)), position);
}
}
for directive in self.directives.iter() {
if directive.contains(position) {
return directive
.resolve(DirectiveParent::LinkedField(self.path(parent)), position);
}
}
if let Some(arguments) = &self.arguments {
for argument in &arguments.items {
if argument.contains(position) {
return argument
.resolve(ArgumentParent::LinkedField(self.path(parent)), position);
}
}
}
for selection in &self.selections.items {
if selection.contains(position) {
return selection.resolve(
SelectionParent::LinkedFieldSelection(self.path(parent)),
position,
);
}
}
ResolutionPath::LinkedField(self.path(parent))
}