override fun addCompletions()

in src/main/kotlin/com/pestphp/pest/completion/InternalMembersCompletionProvider.kt [19:48]


    override fun addCompletions(
        parameters: CompletionParameters,
        context: ProcessingContext,
        result: CompletionResultSet
    ) {
        val fieldReference = parameters.position.parent as? FieldReference ?: return

        val variable = fieldReference.classReference as? Variable ?: return

        if (!variable.isThisVariableInPest { it.isAnyPestFunction() }) return

        val phpIndex = PhpIndex.getInstance(fieldReference.project)
        val classes = phpIndex.completeType(fieldReference.project, variable.type, null).types
            .filter { it.startsWith("\\") }
            .flatMap {
                phpIndex.getAnyByFQN(it)
            }

        classes.flatMap { phpClass ->
            phpClass.methods.filter { it.access.isProtected || (!it.access.isPrivate && it.isStatic) }
        }.forEach {
            result.addElement(PhpVariantsUtil.getLookupItem(it, null))
        }

        classes.flatMap { phpClass ->
            phpClass.fields.filter { it.modifier.isProtected }
        }.forEach {
            result.addElement(PhpVariantsUtil.getLookupItem(it, null))
        }
    }