in src/main/kotlin/com/pestphp/pest/types/ThisTypeProvider.kt [39:64]
protected fun getPestType(psiElement: PsiElement): PhpType? {
val virtualFile = psiElement.containingFile?.originalFile?.virtualFile ?: return null
val config = PestSettings.getInstance(psiElement.project).getPestConfiguration(psiElement.project, virtualFile)
val baseDir = (psiElement.project.guessProjectDir() ?: return config.baseTestType)
val relativePath = VfsUtil.getRelativePath(virtualFile, baseDir) ?: return config.baseTestType
val result = PhpType().add(config.baseTestType)
val defaultFileSystem = FileSystems.getDefault()
config.pathsClasses.forEach { (path, type) ->
FileUtil.toCanonicalPath(path)?.let { normalizedPathForMatching ->
if (defaultFileSystem.getPathMatcher("glob:$normalizedPathForMatching**").matches(Path(relativePath))) {
result.add(type)
}
}
}
psiElement.containingFile.getRoot()
.filterIsInstance<FunctionReference>()
.mapNotNull { it.getPestConfigurationPhpType() }
.forEach { result.add(it) }
return result
}