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))
}
}