in src/main/com/intellij/lang/jsgraphql/ide/indexing/GraphQLIdentifierIndex.java [54:88]
public void visitElement(@NotNull PsiElement element) {
if (element instanceof GraphQLIdentifier) {
if (!GraphQLInjectionUtils.isTemplatePlaceholder(element)) {
identifiers.put(element.getText(), IdentifierKind.IDENTIFIER_NAME);
}
return; // no need to visit deeper
}
else if (element instanceof JsonElement) {
if (element instanceof JsonFile) {
if (!isIntrospectionJsonFile((JsonFile)element)) {
// no need to visit this JSON file as it's not an introspection file
return;
}
}
if (element instanceof JsonProperty jsonProperty) {
// GraphQL identifiers in an introspection result are defined using "name" properties:
// https://graphql.github.io/graphql-spec/June2018/#sec-Schema-Introspection
if ("name".equals(jsonProperty.getName())) {
if (jsonProperty.getValue() instanceof JsonStringLiteral) {
identifiers.put(
((JsonStringLiteral)jsonProperty.getValue()).getValue(),
IdentifierKind.IDENTIFIER_NAME
);
}
}
}
}
else if (element instanceof PsiLanguageInjectionHost host) {
if (GraphQLInjectionUtils.visitInjectionAsRawText(host, this)) {
return;
}
}
super.visitElement(element);
}