in gdscript/src/main/kotlin/gdscript/reference/GdTypeHintReference.kt [68:102]
override fun getVariants(): Array<LookupElement> {
val variants = mutableListOf<LookupElement>()
val container: PsiElement?
if (key.contains(".")) {
val classId = getOwnerClass() ?: return emptyArray()
container = GdClassUtil.getOwningClassElement(classId)
} else {
container = GdClassUtil.getOwningClassElement(element)
variants.addAll(GdClassCompletionUtil.allRootClasses(project))
PsiTreeUtil.getParentOfType(element, GdMethodDeclTl::class.java)?.let { methodDecl ->
PsiTreeUtil.findChildOfType(methodDecl, GdSuite::class.java)?.let { suite ->
variants.addAll(loadedClasses(suite).map {
GdLookup.create(
GdCommonUtil.getName(it),
priority = GdLookup.LOCAL_USER_DEFINED,
icon = GdScriptPluginIcons.GDScriptIcons.OBJECT,
)
})
}
}
ProjectAutoloadUtil.listGlobals(project).forEach {
variants.add(GdLookup.create(
it.key,
priority = GdLookup.USER_DEFINED,
icon = GdScriptPluginIcons.GDScriptIcons.OBJECT,
))
}
}
variantsInner(container, variants)
if (container is GdClassDeclTl) variantsInner(container.parent, variants)
return variants.toTypedArray()
}