diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractDanglingFileReferenceResolveTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractDanglingFileReferenceResolveTest.kt index ff361eeda60..e6960e29bfd 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractDanglingFileReferenceResolveTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/references/AbstractDanglingFileReferenceResolveTest.kt @@ -48,7 +48,7 @@ abstract class AbstractDanglingFileReferenceResolveTest : AbstractReferenceResol } override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) { - val caretPositions = testServices.expressionMarkerProvider.getAllCaretsPositions(mainFile) + val caretPositions = testServices.expressionMarkerProvider.getAllCarets(mainFile) val ktPsiFactory = KtPsiFactory.contextual(mainFile, markGenerated = true, eventSystemEnabled = true) val fakeKtFile = ktPsiFactory.createFile("fake.kt", mainFile.text) 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 fd800147915..67971435ac3 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 @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.analysis.api.renderer.declarations.renderers.callabl import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.analysis.test.framework.AnalysisApiTestDirectives import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest +import org.jetbrains.kotlin.analysis.test.framework.services.CaretMarker import org.jetbrains.kotlin.analysis.test.framework.services.expressionMarkerProvider import org.jetbrains.kotlin.analysis.test.framework.utils.unwrapMultiReferences import org.jetbrains.kotlin.idea.references.KtReference @@ -46,19 +47,19 @@ abstract class AbstractReferenceResolveTest : AbstractAnalysisApiBasedTest() { } override fun doTestByMainFile(mainFile: KtFile, mainModule: TestModule, testServices: TestServices) { - val caretPositions = testServices.expressionMarkerProvider.getAllCaretsPositions(mainFile) + val caretPositions = testServices.expressionMarkerProvider.getAllCarets(mainFile) doTestByFileStructure(mainFile, caretPositions, mainModule, testServices) } - protected fun doTestByFileStructure(ktFile: KtFile, caretPositions: List, mainModule: TestModule, testServices: TestServices) { - if (caretPositions.isEmpty()) { + protected fun doTestByFileStructure(ktFile: KtFile, carets: List, mainModule: TestModule, testServices: TestServices) { + if (carets.isEmpty()) { testServices.assertions.fail { "No carets were specified for resolve test" } } - fun getRenderedReferencesForCaretPosition(caretPosition: Int): String { - val ktReferences = findReferencesAtCaret(ktFile, caretPosition) + fun getRenderedReferencesForCaretPosition(caret: CaretMarker): String { + val ktReferences = findReferencesAtCaret(ktFile, caret.offset) if (ktReferences.isEmpty()) { - testServices.assertions.fail { "No references at caret position $caretPosition found" } + testServices.assertions.fail { "No references at caret $caret found" } } val resolvedTo = analyzeReferenceElement(ktReferences.first().element, mainModule) { @@ -70,18 +71,16 @@ abstract class AbstractReferenceResolveTest : AbstractAnalysisApiBasedTest() { return resolvedTo } - val resolutionAtPositions = caretPositions.map { getRenderedReferencesForCaretPosition(it) } + val resolutionAtPositions = carets.map { it to getRenderedReferencesForCaretPosition(it) } val actual = if (resolutionAtPositions.size == 1) { - val singleResolutionResult = resolutionAtPositions.single() + val (_, singleResolutionResult) = resolutionAtPositions.single() "Resolved to:\n$singleResolutionResult" } else { - resolutionAtPositions - .withIndex() - .joinToString(separator = "\n\n") { (idx, resolutionResult) -> - "Caret ${idx + 1} resolved to:\n$resolutionResult" - } + resolutionAtPositions.joinToString(separator = "\n\n") { (caret, resolutionResult) -> + "${caret.fullTag} resolved to:\n$resolutionResult" + } } testServices.assertions.assertEqualsToTestDataFileSibling(actual) diff --git a/analysis/analysis-api/testData/referenceResolve/KotlinPropertyWithGetterAndSetterAssignment.descriptors.txt b/analysis/analysis-api/testData/referenceResolve/KotlinPropertyWithGetterAndSetterAssignment.descriptors.txt index f9b7e73df28..8aec9abe33b 100644 --- a/analysis/analysis-api/testData/referenceResolve/KotlinPropertyWithGetterAndSetterAssignment.descriptors.txt +++ b/analysis/analysis-api/testData/referenceResolve/KotlinPropertyWithGetterAndSetterAssignment.descriptors.txt @@ -1,26 +1,26 @@ -Caret 1 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 2 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 3 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 4 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 5 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 6 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 7 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 8 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 9 resolved to: + resolved to: 0: (in A) var something: kotlin.Int diff --git a/analysis/analysis-api/testData/referenceResolve/KotlinPropertyWithGetterAndSetterAssignment.txt b/analysis/analysis-api/testData/referenceResolve/KotlinPropertyWithGetterAndSetterAssignment.txt index 55e14057f17..31793d577db 100644 --- a/analysis/analysis-api/testData/referenceResolve/KotlinPropertyWithGetterAndSetterAssignment.txt +++ b/analysis/analysis-api/testData/referenceResolve/KotlinPropertyWithGetterAndSetterAssignment.txt @@ -1,31 +1,31 @@ -Caret 1 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 2 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 3 resolved to: + resolved to: 0: (in A) var something: kotlin.Int 1: (in A) var something: kotlin.Int -Caret 4 resolved to: + resolved to: 0: (in A) var something: kotlin.Int 1: (in A) var something: kotlin.Int -Caret 5 resolved to: + resolved to: 0: (in A) var something: kotlin.Int 1: (in A) var something: kotlin.Int -Caret 6 resolved to: + resolved to: 0: (in A) var something: kotlin.Int 1: (in A) var something: kotlin.Int -Caret 7 resolved to: + resolved to: 0: (in A) var something: kotlin.Int 1: (in A) var something: kotlin.Int -Caret 8 resolved to: + resolved to: 0: (in A) var something: kotlin.Int -Caret 9 resolved to: + resolved to: 0: (in A) var something: kotlin.Int diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/callablesWithSameName.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/callablesWithSameName.txt index d49c3de5370..35d42aade65 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/callablesWithSameName.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/callablesWithSameName.txt @@ -1,15 +1,15 @@ -Caret 1 resolved to: + resolved to: 0: (in test) fun test.Foo.ext() 1: (in test) val test.Foo.ext: kotlin.Int -Caret 2 resolved to: + resolved to: 0: (in test) fun test.Foo.ext() 1: (in test) val test.Foo.ext: kotlin.Int -Caret 3 resolved to: + resolved to: 0: (in test) fun test.Foo.ext() 1: (in test) val test.Foo.ext: kotlin.Int -Caret 4 resolved to: + resolved to: 0: (in test) fun test.Foo.ext() 1: (in test) val test.Foo.ext: kotlin.Int \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/fromBaseClass.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/fromBaseClass.txt index bd2ec63423f..ea5efb3859a 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/fromBaseClass.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/fromBaseClass.txt @@ -1,5 +1,5 @@ -Caret 1 resolved to: + resolved to: 0: (in test.Base) fun test.Receiver.ext() -Caret 2 resolved to: + resolved to: 0: (in test.Base) fun test.Receiver.ext() \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/functionOverloads.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/functionOverloads.txt index 0869692731f..6ba8f35f9cc 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/functionOverloads.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/functionOverloads.txt @@ -1,16 +1,16 @@ -Caret 1 resolved to: + resolved to: 0: (in test) fun kotlin.Any.function() 1: (in test) fun test.Base.function(i: kotlin.Int) -Caret 2 resolved to: + resolved to: 0: (in test) fun kotlin.Any.function() 1: (in test) fun test.Base.function(i: kotlin.Int) -Caret 3 resolved to: + resolved to: 0: (in test) fun kotlin.Any.function() 1: (in test) fun test.Base.function(i: kotlin.Int) 2: (in test.Base) fun function() -Caret 4 resolved to: + resolved to: 0: (in test) fun kotlin.Any.function() 1: (in test) fun test.Base.function(i: kotlin.Int) \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/genericParameterReceiver.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/genericParameterReceiver.txt index a7a5c079024..bb578119db8 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/genericParameterReceiver.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/genericParameterReceiver.txt @@ -1,11 +1,11 @@ -Caret 1 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 2 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 3 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 4 resolved to: + resolved to: Nothing (Unresolved reference) \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/genericsCompatibility.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/genericsCompatibility.txt index be1f55fde3a..c997831d655 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/genericsCompatibility.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/genericsCompatibility.txt @@ -1,26 +1,26 @@ -Caret 1 resolved to: + resolved to: 0: (in test) fun T.anyExt() -Caret 2 resolved to: + resolved to: 0: (in test) fun T.anyExt() -Caret 3 resolved to: + resolved to: 0: (in test) fun T.anyExt() -Caret 4 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 5 resolved to: + resolved to: 0: (in test) fun T.baseExt() -Caret 6 resolved to: + resolved to: 0: (in test) fun T.baseExt() -Caret 7 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 8 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 9 resolved to: + resolved to: 0: (in test) fun T.childExt() \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/typeWithGenericsReceiver.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/typeWithGenericsReceiver.txt index b1aa5afafc8..f716fce355a 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/typeWithGenericsReceiver.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/generics/typeWithGenericsReceiver.txt @@ -1,5 +1,5 @@ -Caret 1 resolved to: + resolved to: 0: (in test) fun test.WithGenerics.intExt() -Caret 2 resolved to: + resolved to: 0: (in test) fun test.WithGenerics.stringExt() \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/nonExtensions.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/nonExtensions.txt index e4fa5db466b..bb578119db8 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/nonExtensions.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/nonExtensions.txt @@ -1,11 +1,11 @@ -Caret 1 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 2 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 3 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 4 resolved to: -Nothing (Unresolved reference) + resolved to: +Nothing (Unresolved reference) \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/qualifiers.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/qualifiers.txt index 2b4354bd501..bea5f4be52a 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/qualifiers.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/qualifiers.txt @@ -1,17 +1,17 @@ -Caret 1 resolved to: + resolved to: 0: package one -Caret 2 resolved to: + resolved to: 0: package one.two -Caret 3 resolved to: + resolved to: 0: (in one.two) class Foo -Caret 4 resolved to: + resolved to: 0: (in one.two) class Foo -Caret 5 resolved to: + resolved to: 0: package one -Caret 6 resolved to: -0: package one.two + resolved to: +0: package one.two \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelFunction.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelFunction.txt index 8c4472e3754..e3fce55f4f6 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelFunction.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelFunction.txt @@ -1,11 +1,11 @@ -Caret 1 resolved to: + resolved to: 0: (in test) fun test.Foo.extFun() -Caret 2 resolved to: + resolved to: 0: (in test) fun test.Foo.extFun() -Caret 3 resolved to: + resolved to: 0: (in test) fun test.Foo.extFun() -Caret 4 resolved to: + resolved to: 0: (in test) fun test.Foo.extFun() \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelProperty.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelProperty.txt index 7c6863715d5..2fe71c724ac 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelProperty.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelProperty.txt @@ -1,11 +1,11 @@ -Caret 1 resolved to: + resolved to: 0: (in test) val test.Foo.extProp: kotlin.Int -Caret 2 resolved to: + resolved to: 0: (in test) val test.Foo.extProp: kotlin.Int -Caret 3 resolved to: + resolved to: 0: (in test) val test.Foo.extProp: kotlin.Int -Caret 4 resolved to: + resolved to: 0: (in test) val test.Foo.extProp: kotlin.Int \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelTypeVsMemberFunctionAsReceiver.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelTypeVsMemberFunctionAsReceiver.txt index 1024f2ccee6..bccfe8cae2d 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelTypeVsMemberFunctionAsReceiver.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/topLevelTypeVsMemberFunctionAsReceiver.txt @@ -1,8 +1,8 @@ -Caret 1 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 2 resolved to: + resolved to: 0: (in test.WithMember) fun Foo() -Caret 3 resolved to: -0: (in test.WithMember) fun Foo() + resolved to: +0: (in test.WithMember) fun Foo() \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/typeAliasReceiver.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/typeAliasReceiver.txt index af37fdb717a..112bd14cbbb 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/typeAliasReceiver.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/typeAliasReceiver.txt @@ -1,14 +1,14 @@ -Caret 1 resolved to: + resolved to: 0: (in test) fun test.Foo.fooExt() -Caret 2 resolved to: + resolved to: 0: (in test) fun test.FooAlias.fooAliasExt() -Caret 3 resolved to: + resolved to: 0: (in test) fun test.FooAlias.fooAliasExt() -Caret 4 resolved to: + resolved to: 0: (in test) fun kotlin.Any.anyExt() -Caret 5 resolved to: + resolved to: Nothing (Unresolved reference) \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/typeCompatibility.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/typeCompatibility.txt index 0680cd4f925..19026df9868 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/typeCompatibility.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/extensions/typeCompatibility.txt @@ -1,26 +1,26 @@ -Caret 1 resolved to: + resolved to: 0: (in test) fun kotlin.Any.anyExt() -Caret 2 resolved to: + resolved to: 0: (in test) fun kotlin.Any.anyExt() -Caret 3 resolved to: + resolved to: 0: (in test) fun kotlin.Any.anyExt() -Caret 4 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 5 resolved to: + resolved to: 0: (in test) fun test.Base.baseExt() -Caret 6 resolved to: + resolved to: 0: (in test) fun test.Base.baseExt() -Caret 7 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 8 resolved to: + resolved to: Nothing (Unresolved reference) -Caret 9 resolved to: + resolved to: 0: (in test) fun test.Child.childExt() \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.txt index f31daa5f755..63f0d7da757 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/packages/longPackage.txt @@ -1,26 +1,26 @@ -Caret 1 resolved to: + resolved to: 0: package one -Caret 2 resolved to: + resolved to: 0: package one -Caret 3 resolved to: + resolved to: 0: package one.two -Caret 4 resolved to: + resolved to: 0: package one -Caret 5 resolved to: + resolved to: 0: package one.two -Caret 6 resolved to: + resolved to: 0: package one.two.three -Caret 7 resolved to: + resolved to: 0: package one -Caret 8 resolved to: + resolved to: 0: package one.two -Caret 9 resolved to: + resolved to: 0: package one.two.three \ No newline at end of file diff --git a/analysis/analysis-api/testData/referenceResolve/kDoc/packages/packageVsTopLevelDeclarations.txt b/analysis/analysis-api/testData/referenceResolve/kDoc/packages/packageVsTopLevelDeclarations.txt index 6b3c0a4e5cd..9b6a29ab058 100644 --- a/analysis/analysis-api/testData/referenceResolve/kDoc/packages/packageVsTopLevelDeclarations.txt +++ b/analysis/analysis-api/testData/referenceResolve/kDoc/packages/packageVsTopLevelDeclarations.txt @@ -1,11 +1,11 @@ -Caret 1 resolved to: + resolved to: 0: (in foo) fun foo() 1: (in foo) interface foo 2: package foo -Caret 2 resolved to: + resolved to: 0: package foo -Caret 3 resolved to: + resolved to: 0: (in foo) fun foo() -1: (in foo) interface foo +1: (in foo) interface foo \ No newline at end of file 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 ef73780cd35..2840b93f8b6 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,8 +99,8 @@ class ExpressionMarkerProvider : TestService { } } - fun getAllCaretsPositions(file: PsiFile): List { - return carets.getAllCaretsOffsets(file.name) + fun getAllCarets(file: PsiFile): List { + return carets.getAllCarets(file.name) } fun getSelectedRangeOrNull(file: PsiFile): TextRange? = selected[file.name] @@ -261,6 +261,21 @@ class ExpressionMarkerProvider : TestService { } } +data class CaretMarker(val tag: String, val offset: Int) { + + /** + * Full render of this caret marker in the `` or `` form. + * + * @see ExpressionMarkersSourceFilePreprocessor.TAGS.CARET_REGEXP + */ + val fullTag: String + get() = if (tag.isEmpty()) { + "" + } else { + "" + } +} + private class CaretProvider { private val caretToFile = mutableMapOf() @@ -269,8 +284,8 @@ private class CaretProvider { return cartsInFile.getCaretOffsetByTag(caretTag) } - fun getAllCaretsOffsets(filename: String): List { - return caretToFile[filename]?.getAllCaretsOffsets().orEmpty() + fun getAllCarets(filename: String): List { + return caretToFile[filename]?.getAllCarets().orEmpty() } fun addCaret(filename: String, caretTag: String?, caretOffset: Int) { @@ -285,8 +300,8 @@ private class CaretProvider { return carets[tag.orEmpty()] } - fun getAllCaretsOffsets(): List { - return carets.values.toList() + fun getAllCarets(): List { + return carets.map { (tag, offset) -> CaretMarker(tag, offset) } } fun addCaret(caretTag: String?, caretOffset: Int) {