override fun multiResolve()

in src/main/kotlin/com/pestphp/pest/features/datasets/DatasetReference.kt [26:64]


    override fun multiResolve(incompleteCode: Boolean): Array<ResolveResult> {
        val fileBasedIndex = FileBasedIndex.getInstance()
        val datasetName = element.contents
        val foundDatasets = mutableListOf<FunctionReferenceImpl>()

        fileBasedIndex.getAllKeys(
          key,
          element.project
        ).forEach { key ->
            fileBasedIndex.processValues(
              com.pestphp.pest.features.datasets.key,
              key,
              null,
              { file, datasets ->
                    if (datasetName !in datasets) {
                        return@processValues true
                    }

                    // Add all shared datasets which matches
                    PsiManager.getInstance(element.project).findFile(file)!!
                        .getDatasets()
                        .filter { it.getPestDatasetName() == datasetName }
                        .forEach { foundDatasets.add(it) }

                    true
                },
              GlobalSearchScope.projectScope(element.project)
            )
        }

        // Add all local datasets which matches
        element.containingFile
            .getDatasets()
            .filter { it.getPestDatasetName() == datasetName }
            .forEach { foundDatasets.add(it) }

        return foundDatasets.map { PsiElementResolveResult(it) }
            .toTypedArray()
    }