override fun getGotoDeclarationTargets()

in src/main/kotlin/com/pestphp/pest/completion/ThisFieldsCompletionProvider.kt [47:67]


    override fun getGotoDeclarationTargets(
        sourceElement: PsiElement?,
        offset: Int,
        editor: Editor?
    ): Array<PsiElement> {
        if (sourceElement?.elementType != PhpTokenTypes.IDENTIFIER) {
            return PsiElement.EMPTY_ARRAY
        }

        val fieldReference = sourceElement?.parent as? FieldReference
            ?: return PsiElement.EMPTY_ARRAY

        if (fieldReference.classReference?.isThisVariableInPest { it.isAnyPestFunction() } != true) {
            return PsiElement.EMPTY_ARRAY
        }

        return (fieldReference.containingFile ?: return PsiElement.EMPTY_ARRAY).getAllBeforeThisAssignments()
            .filter { it.variable?.name == fieldReference.name }
            .mapNotNull { it.variable }
            .toTypedArray()
    }