[Analysis API] add tests for KtTypeScope

This commit is contained in:
Ilya Kirillov
2022-06-13 14:39:46 +02:00
parent b9907963fe
commit 36f370f501
25 changed files with 2072 additions and 4 deletions
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.test.model.TestFile
import org.jetbrains.kotlin.test.services.SourceFilePreprocessor
import org.jetbrains.kotlin.test.services.TestService
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
internal class ExpressionMarkersSourceFilePreprocessor(testServices: TestServices) : SourceFilePreprocessor(testServices) {
override fun process(file: TestFile, content: String): String {
@@ -102,6 +103,15 @@ class ExpressionMarkerProvider : TestService {
return elements.single() as KtElement
}
inline fun <reified E : KtElement> getSelectedElementOfType(file: KtFile): E {
return when (val selected = getSelectedElement(file)) {
is E -> selected
else -> generateSequence(selected as PsiElement) { current ->
current.children.singleOrNull()?.takeIf { it.textRange == current.textRange }
}.firstIsInstance()
}
}
private fun List<PsiElement>.trimWhitespaces(): List<PsiElement> =
dropWhile { it is PsiWhiteSpace }
.dropLastWhile { it is PsiWhiteSpace }