in src/main/com/intellij/lang/jsgraphql/ide/search/GraphQLDefinitionsSearchExecutor.java [32:67]
private static boolean doExecute(PsiElement sourceElement, final Processor<? super PsiElement> consumer) {
if (sourceElement instanceof GraphQLIdentifier && sourceElement.getParent() instanceof GraphQLTypeNameDefinition) {
final GraphQLInterfaceTypeDefinition interfaceTypeDefinition =
PsiTreeUtil.getParentOfType(sourceElement, GraphQLInterfaceTypeDefinition.class);
if (interfaceTypeDefinition != null) {
GraphQLPsiSearchHelper.getInstance(sourceElement.getProject())
.processNamedElements(sourceElement, sourceElement.getText(), namedElement -> {
ProgressManager.checkCanceled();
if (namedElement instanceof GraphQLIdentifier &&
PsiTreeUtil.getParentOfType(namedElement, GraphQLImplementsInterfaces.class) != null) {
final GraphQLTypeSystemDefinition typeSystemDefinition =
PsiTreeUtil.getParentOfType(namedElement, GraphQLObjectTypeDefinition.class, GraphQLObjectTypeExtensionDefinition.class);
if (typeSystemDefinition instanceof GraphQLObjectTypeDefinition) {
final GraphQLTypeNameDefinition typeNameDefinition =
((GraphQLObjectTypeDefinition)typeSystemDefinition).getTypeNameDefinition();
if (typeNameDefinition != null) {
consumer.process(typeNameDefinition.getNameIdentifier());
}
}
else if (typeSystemDefinition instanceof GraphQLObjectTypeExtensionDefinition) {
final GraphQLTypeName typeName = ((GraphQLObjectTypeExtensionDefinition)typeSystemDefinition).getTypeName();
if (typeName != null) {
consumer.process(typeName.getNameIdentifier());
}
}
}
// continue looking for all implementing types
return true;
});
}
}
// execute result
return true;
}