From 17c1352d82dd329d7133e8a27a15c6ab5aa5de68 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Thu, 18 Jan 2024 16:09:14 +0100 Subject: [PATCH] [tests] Refactor `AbstractReferenceResolveTest`. Part 3 Add possibility to `ExpressionMarkerProvider` to get all the carets from the file. Use it in `AbstractReferenceResolveTest`, but not check all the carets yet. Required for KT-65152 and KT-62695 --- .../cases/references/AbstractReferenceResolveTest.kt | 2 +- .../ExpressionMarkersSourceFilePreprocessor.kt | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractReferenceResolveTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractReferenceResolveTest.kt index b4d0856048e..561442cbb72 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractReferenceResolveTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractReferenceResolveTest.kt @@ -46,7 +46,7 @@ abstract class AbstractReferenceResolveTest : AbstractAnalysisApiBasedTest() { } override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) { - val caretPosition = testServices.expressionMarkerProvider.getCaretPosition(mainFile) + val caretPosition = testServices.expressionMarkerProvider.getAllCaretsPositions(mainFile).single() doTestByFileStructure(mainFile, caretPosition, mainModule, testServices) } diff --git a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/ExpressionMarkersSourceFilePreprocessor.kt b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/ExpressionMarkersSourceFilePreprocessor.kt index 757be4626c8..ef73780cd35 100644 --- a/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/ExpressionMarkersSourceFilePreprocessor.kt +++ b/analysis/analysis-test-framework/tests/org/jetbrains/kotlin/analysis/test/framework/services/ExpressionMarkersSourceFilePreprocessor.kt @@ -99,6 +99,10 @@ class ExpressionMarkerProvider : TestService { } } + fun getAllCaretsPositions(file: PsiFile): List { + return carets.getAllCaretsOffsets(file.name) + } + fun getSelectedRangeOrNull(file: PsiFile): TextRange? = selected[file.name] fun getSelectedRange(file: PsiFile): TextRange = getSelectedRangeOrNull(file) ?: error("No selected expression found in file") @@ -265,6 +269,10 @@ private class CaretProvider { return cartsInFile.getCaretOffsetByTag(caretTag) } + fun getAllCaretsOffsets(filename: String): List { + return caretToFile[filename]?.getAllCaretsOffsets().orEmpty() + } + fun addCaret(filename: String, caretTag: String?, caretOffset: Int) { val cartsInFile = caretToFile.getOrPut(filename) { CaretsInFile() } cartsInFile.addCaret(caretTag, caretOffset) @@ -277,6 +285,10 @@ private class CaretProvider { return carets[tag.orEmpty()] } + fun getAllCaretsOffsets(): List { + return carets.values.toList() + } + fun addCaret(caretTag: String?, caretOffset: Int) { carets[caretTag.orEmpty()] = caretOffset }