protected fun getPestType()

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
    }