fn resolve()

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