diff --git a/plugins/kotlin/base/project-structure/src/org/jetbrains/kotlin/idea/base/projectStructure/moduleInfo/LibrarySourceInfo.kt b/plugins/kotlin/base/project-structure/src/org/jetbrains/kotlin/idea/base/projectStructure/moduleInfo/LibrarySourceInfo.kt index e782f0b35f76..705eb4e7b5ab 100644 --- a/plugins/kotlin/base/project-structure/src/org/jetbrains/kotlin/idea/base/projectStructure/moduleInfo/LibrarySourceInfo.kt +++ b/plugins/kotlin/base/project-structure/src/org/jetbrains/kotlin/idea/base/projectStructure/moduleInfo/LibrarySourceInfo.kt @@ -6,7 +6,6 @@ import com.intellij.openapi.roots.OrderRootType import com.intellij.openapi.roots.libraries.Library import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.search.GlobalSearchScope -import org.jetbrains.kotlin.analyzer.LibraryModuleSourceInfoBase import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.idea.base.projectStructure.KotlinBaseProjectStructureBundle import org.jetbrains.kotlin.idea.base.projectStructure.LibraryInfoCache @@ -17,7 +16,7 @@ import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices data class LibrarySourceInfo(override val project: Project, val library: Library, override val binariesModuleInfo: BinaryModuleInfo) : - IdeaModuleInfo, SourceForBinaryModuleInfo, LibraryModuleSourceInfoBase { + IdeaModuleInfo, SourceForBinaryModuleInfo { override val name: Name = Name.special("") diff --git a/plugins/kotlin/code-insight/line-markers-shared/src/org/jetbrains/kotlin/idea/codeInsight/lineMarkers/shared/Markers.kt b/plugins/kotlin/code-insight/line-markers-shared/src/org/jetbrains/kotlin/idea/codeInsight/lineMarkers/shared/Markers.kt index 766efd532d98..34de982d3b6d 100644 --- a/plugins/kotlin/code-insight/line-markers-shared/src/org/jetbrains/kotlin/idea/codeInsight/lineMarkers/shared/Markers.kt +++ b/plugins/kotlin/code-insight/line-markers-shared/src/org/jetbrains/kotlin/idea/codeInsight/lineMarkers/shared/Markers.kt @@ -2,8 +2,10 @@ package org.jetbrains.kotlin.idea.codeInsight.lineMarkers.shared import com.intellij.codeInsight.navigation.impl.PsiTargetPresentationRenderer +import com.intellij.icons.AllIcons import com.intellij.openapi.application.runReadAction import com.intellij.openapi.editor.Document +import com.intellij.openapi.roots.libraries.Library import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiElement import com.intellij.psi.SmartPsiElementPointer @@ -13,8 +15,15 @@ import com.intellij.psi.util.parentOfType import com.intellij.refactoring.suggested.createSmartPointer import com.intellij.util.concurrency.annotations.RequiresBackgroundThread import org.jetbrains.annotations.ApiStatus +import org.jetbrains.annotations.Nls import org.jetbrains.kotlin.analysis.api.analyze import org.jetbrains.kotlin.analysis.api.symbols.KtDeclarationSymbol +import org.jetbrains.kotlin.analyzer.ModuleInfo +import org.jetbrains.kotlin.idea.base.facet.isHMPPEnabled +import org.jetbrains.kotlin.idea.base.projectStructure.moduleInfo +import org.jetbrains.kotlin.idea.base.projectStructure.moduleInfo.LibraryInfo +import org.jetbrains.kotlin.idea.base.projectStructure.moduleInfo.LibrarySourceInfo +import org.jetbrains.kotlin.idea.base.projectStructure.moduleInfo.ModuleSourceInfo import org.jetbrains.kotlin.idea.stubindex.* import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* @@ -22,6 +31,7 @@ import org.jetbrains.kotlin.psi.psiUtil.containingClass import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier +import javax.swing.Icon val KtNamedDeclaration.expectOrActualAnchor: PsiElement @ApiStatus.Internal @@ -119,10 +129,59 @@ fun KtNamedDeclaration.areMarkersForbidden( return false } -class ActualExpectedPsiElementCellRenderer : PsiTargetPresentationRenderer() { - override fun getContainerText(element: PsiElement): String = "" +private class ActualExpectedPsiElementCellRenderer(private val onlyModuleNames: Boolean) : PsiTargetPresentationRenderer() { + override fun getContainerText(element: PsiElement): String? = if (onlyModuleNames) null else element.moduleName() + + override fun getIcon(element: PsiElement): Icon = when (element.moduleInfo) { + is LibrarySourceInfo, is LibraryInfo -> AllIcons.Nodes.PpLibFolder + else -> AllIcons.Nodes.Module + } + + override fun getElementText(element: PsiElement): String = if (onlyModuleNames) element.moduleName() else super.getElementText(element) + + @Nls + private fun PsiElement.moduleName() = moduleInfo.nameForTooltip() } +@Nls +@Suppress("HardCodedStringLiteral") +fun ModuleInfo.nameForTooltip(): String { + when (this) { + /* For hmpp modules, prefer the module name, if present */ + is ModuleSourceInfo -> takeIf { module.isHMPPEnabled }?.module?.name?.let { return it } + + /* For libraries, we're trying to show artifact variant name */ + is LibrarySourceInfo -> library.extractVariantName()?.let { return it } + is LibraryInfo -> library.extractVariantName()?.let { return it } + } + + stableName?.asStringStripSpecialMarkers()?.let { return it } + + // We want to represent actual descriptors, so let's represent them by platform + return platform.componentPlatforms.joinToString(", ", "{", "}") { it.platformName } +} + +/* + Supported formats: + + ::: + :-: + */ +private fun Library.extractVariantName(): String? { + val split = name.orEmpty().split(":") + if (split.size != 3 && split.size != 4) { + return null + } + + return when (split.size) { + 3 -> split[1].substringAfterLast('-') + 4 -> split[2] + else -> null + } +} + +private fun Collection.hasUniqueModuleNames() = distinctBy { it.moduleInfo.nameForTooltip() }.size == size + @ApiStatus.Internal fun buildNavigateToActualDeclarationsPopup(element: PsiElement?, allNavigatableActualDeclarations: KtDeclaration.() -> Collection): NavigationPopupDescriptor? { return element?.markerDeclaration?.let { @@ -133,7 +192,7 @@ fun buildNavigateToActualDeclarationsPopup(element: PsiElement?, allNavigatableA navigatableActualDeclarations, KotlinLineMarkersSharedBundle.message("highlighter.title.choose.actual.for", name), KotlinLineMarkersSharedBundle.message("highlighter.title.actuals.for", name), - ActualExpectedPsiElementCellRenderer() + ActualExpectedPsiElementCellRenderer(onlyModuleNames = navigatableActualDeclarations.hasUniqueModuleNames()) ) } } @@ -148,7 +207,7 @@ fun buildNavigateToExpectedDeclarationsPopup(element: PsiElement?, allNavigatabl navigatableExpectedDeclarations, KotlinLineMarkersSharedBundle.message("highlighter.title.choose.expected.for", name), KotlinLineMarkersSharedBundle.message("highlighter.title.expected.for", name), - ActualExpectedPsiElementCellRenderer() + ActualExpectedPsiElementCellRenderer(onlyModuleNames = navigatableExpectedDeclarations.hasUniqueModuleNames()) ) } } diff --git a/plugins/kotlin/code-insight/testData/linemarkers/multiplatform/common/common.kt b/plugins/kotlin/code-insight/testData/linemarkers/multiplatform/common/common.kt index 7d4b68b04ec5..73b95ca53621 100644 --- a/plugins/kotlin/code-insight/testData/linemarkers/multiplatform/common/common.kt +++ b/plugins/kotlin/code-insight/testData/linemarkers/multiplatform/common/common.kt @@ -1,18 +1,18 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package sample -expect class Sample() { - fun checkMe(): Int +expect class Sample() { + fun checkMe(): Int } -expect object Platform { - val name: String +expect object Platform { + val name: String } fun hello(): String = "Hello from ${Platform.name}" -expect fun foo() +expect fun foo() -expect annotation class Preview() +expect annotation class Preview() -expect object SomeObject() \ No newline at end of file +expect object SomeObject() \ No newline at end of file diff --git a/plugins/kotlin/highlighting/highlighting-k1/src/org/jetbrains/kotlin/idea/highlighter/markers/HasExpectActualMarkerUtil.kt b/plugins/kotlin/highlighting/highlighting-k1/src/org/jetbrains/kotlin/idea/highlighter/markers/HasExpectActualMarkerUtil.kt index b2994e1d40cf..4a18cca29a0e 100644 --- a/plugins/kotlin/highlighting/highlighting-k1/src/org/jetbrains/kotlin/idea/highlighter/markers/HasExpectActualMarkerUtil.kt +++ b/plugins/kotlin/highlighting/highlighting-k1/src/org/jetbrains/kotlin/idea/highlighter/markers/HasExpectActualMarkerUtil.kt @@ -1,70 +1,21 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.kotlin.idea.highlighter.markers -import com.intellij.openapi.roots.libraries.Library import org.jetbrains.annotations.ApiStatus import org.jetbrains.kotlin.analyzer.moduleInfo import org.jetbrains.kotlin.descriptors.DeclarationDescriptor -import org.jetbrains.kotlin.descriptors.MemberDescriptor -import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.idea.base.facet.isHMPPEnabled -import org.jetbrains.kotlin.idea.base.projectStructure.moduleInfo.LibraryInfo -import org.jetbrains.kotlin.idea.base.projectStructure.moduleInfo.LibrarySourceInfo -import org.jetbrains.kotlin.idea.base.projectStructure.moduleInfo.ModuleSourceInfo +import org.jetbrains.kotlin.idea.codeInsight.lineMarkers.shared.nameForTooltip import org.jetbrains.kotlin.resolve.descriptorUtil.module @ApiStatus.Internal fun getModulesStringForExpectActualMarkerTooltip( descriptors: List ): String? { - if (descriptors.isEmpty()) return null - val isExpectDescriptors = descriptors.all { it is MemberDescriptor && it.isExpect } - - fun ModuleDescriptor.nameForTooltip(): String { - when (val moduleInfo = moduleInfo) { - /* For hmpp modules, prefer the module name, if present */ - is ModuleSourceInfo -> moduleInfo.takeIf { it.module.isHMPPEnabled }?.module?.name?.let { return it } - - /* For libraries we're trying to show artifact variant name */ - is LibrarySourceInfo -> moduleInfo.library.extractVariantName()?.let { return it } - is LibraryInfo -> moduleInfo.library.extractVariantName()?.let { return it } - } - - stableName?.asStringStripSpecialMarkers()?.let { return it } - - /* Handle non-hmpp modes where no stableName might be present: */ - - // There is no 'easy' way to figure out the exact common module in this case - if (isExpectDescriptors) return "?common?" - - // We want to represent actual descriptors, so let's represent them by platform - this.platform?.componentPlatforms?.joinToString(", ", "{", "}") { it.platformName }?.let { return it } - - // We did our best, what can you do, this is life for you! - return "N/A" - } - return when (descriptors.size) { - 1 -> descriptors.single().module.nameForTooltip() - else -> descriptors.joinToString(", ", "[", "]") { it.module.nameForTooltip() } + 0 -> null + 1 -> descriptors.single().moduleNameForTooltip() + else -> descriptors.joinToString(", ", "[", "]") { it.moduleNameForTooltip() } } } -/* - Supported formats: - - ::: - :-: - */ -private fun Library.extractVariantName(): String? { - val split = name.orEmpty().split(":") - if (split.size != 3 && split.size != 4) { - return null - } - - return when (split.size) { - 3 -> split[1].substringAfterLast('-') - 4 -> split[2] - else -> null - } -} +private fun DeclarationDescriptor.moduleNameForTooltip() = module.moduleInfo?.nameForTooltip() ?: "N/A" diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/codeMetaInfo/renderConfigurations/AbstractCodeMetaInfoRenderConfiguration.kt b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/codeMetaInfo/renderConfigurations/AbstractCodeMetaInfoRenderConfiguration.kt index 0e940592915c..6b5d624aa9a3 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/codeMetaInfo/renderConfigurations/AbstractCodeMetaInfoRenderConfiguration.kt +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/codeMetaInfo/renderConfigurations/AbstractCodeMetaInfoRenderConfiguration.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.idea.codeMetaInfo.renderConfigurations import com.intellij.lang.annotation.HighlightSeverity import org.jetbrains.kotlin.codeMetaInfo.model.CodeMetaInfo import org.jetbrains.kotlin.codeMetaInfo.renderConfigurations.AbstractCodeMetaInfoRenderConfiguration +import org.jetbrains.kotlin.idea.codeInsight.lineMarkers.shared.TestableLineMarkerNavigator import org.jetbrains.kotlin.idea.codeMetaInfo.models.HighlightingCodeMetaInfo import org.jetbrains.kotlin.idea.codeMetaInfo.models.LineMarkerCodeMetaInfo @@ -21,12 +22,33 @@ open class LineMarkerConfiguration(var renderDescription: Boolean = true) : Abst if (!renderParams) return "" val params = mutableListOf() + val lineMarker = lineMarkerCodeMetaInfo.lineMarker + if (renderDescription) { - lineMarkerCodeMetaInfo.lineMarker.lineMarkerTooltip?.apply { + lineMarker.lineMarkerTooltip?.apply { params.add("descr='${sanitizeLineMarkerTooltip(this)}'") } } + (lineMarker.navigationHandler as? TestableLineMarkerNavigator)?.getTargetsPopupDescriptor(lineMarker.element)?.let { navigator -> + val targets = navigator.targets.map { target -> + val presentation = navigator.renderer.getPresentation(target) + buildString { + append("(text=") + append(presentation.presentableText) + append("; ") + append(presentation.containerText?.let { "container=$it; " } ?: "") + append("icon=") + append(presentation.icon.toString()) + append(")") + } + } + + if (targets.size > 1) { + params.add(targets.joinToString(prefix = "targets=[", postfix = "]", separator = "; ")) + } + } + params.add(getAdditionalParams(lineMarkerCodeMetaInfo)) val paramsString = params.filter { it.isNotEmpty() }.joinToString("; ") diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/misc/mismatchedAttributesDependencyBinary/producer/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/misc/mismatchedAttributesDependencyBinary/producer/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt index 23595a3ed06d..24adcfdea328 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/misc/mismatchedAttributesDependencyBinary/producer/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/misc/mismatchedAttributesDependencyBinary/producer/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt @@ -1,7 +1,7 @@ package test -expect class CommonMainExpect { - fun commonApi() +expect class CommonMainExpect { + fun commonApi() } fun produceCommonMainExpect(): CommonMainExpect = null!! diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/misc/mismatchedAttributesDependencySource/producer/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/misc/mismatchedAttributesDependencySource/producer/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt index 23595a3ed06d..24adcfdea328 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/misc/mismatchedAttributesDependencySource/producer/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/misc/mismatchedAttributesDependencySource/producer/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt @@ -1,7 +1,7 @@ package test -expect class CommonMainExpect { - fun commonApi() +expect class CommonMainExpect { + fun commonApi() } fun produceCommonMainExpect(): CommonMainExpect = null!! diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/publishedLibrarySources/expectActualInLibrarySources/lib/src/commonMain/kotlin/Lib.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/publishedLibrarySources/expectActualInLibrarySources/lib/src/commonMain/kotlin/Lib.kt index eddc4ad9bbc8..096f5935ba51 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/publishedLibrarySources/expectActualInLibrarySources/lib/src/commonMain/kotlin/Lib.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/publishedLibrarySources/expectActualInLibrarySources/lib/src/commonMain/kotlin/Lib.kt @@ -1,8 +1,8 @@ package com.example.lib -expect object Lib { +expect object Lib { - fun foo(): Int + fun foo(): Int } -expect fun topLevelFun() +expect fun topLevelFun() diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/publishedLibrarySources/expectActualInLibrarySources/lib/src/nativeMain/kotlin/Lib.native.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/publishedLibrarySources/expectActualInLibrarySources/lib/src/nativeMain/kotlin/Lib.native.kt index f5fea9e0d8bc..517463744983 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/publishedLibrarySources/expectActualInLibrarySources/lib/src/nativeMain/kotlin/Lib.native.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/features/publishedLibrarySources/expectActualInLibrarySources/lib/src/nativeMain/kotlin/Lib.native.kt @@ -5,4 +5,5 @@ actual object Lib actual fun foo(): Int = 42 } -expect val topLevelVal: String +expect val topLevelVal: String +M \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/oldImport/tier0/kmmApplication/src/commonMain/kotlin/kmmApplication/commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/oldImport/tier0/kmmApplication/src/commonMain/kotlin/kmmApplication/commonMain_api.kt index e6b967750371..839e7f36bdb7 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/oldImport/tier0/kmmApplication/src/commonMain/kotlin/kmmApplication/commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/oldImport/tier0/kmmApplication/src/commonMain/kotlin/kmmApplication/commonMain_api.kt @@ -1,7 +1,7 @@ package kmmApplication -expect class CommonMainExpect { - fun commonMainApi() +expect class CommonMainExpect { + fun commonMainApi() } fun consumeCommonMainExpect(e: CommonMainExpect?) { } diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/oldImport/tier0/kmmLibrary/src/commonMain/kotlin/kmmApplication/commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/oldImport/tier0/kmmLibrary/src/commonMain/kotlin/kmmApplication/commonMain_api.kt index 596a9dfb85fb..9ed8b92ed96e 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/oldImport/tier0/kmmLibrary/src/commonMain/kotlin/kmmApplication/commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/oldImport/tier0/kmmLibrary/src/commonMain/kotlin/kmmApplication/commonMain_api.kt @@ -1,7 +1,7 @@ package kmmApplication -expect class CommonMainExpect { - fun commonMainApi() +expect class CommonMainExpect { + fun commonMainApi() } fun consumeCommonMainExpect(e: CommonMainExpect?) { } diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier0/kmmApplication/src/commonMain/kotlin/kmmApplication/commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier0/kmmApplication/src/commonMain/kotlin/kmmApplication/commonMain_api.kt index e6b967750371..839e7f36bdb7 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier0/kmmApplication/src/commonMain/kotlin/kmmApplication/commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier0/kmmApplication/src/commonMain/kotlin/kmmApplication/commonMain_api.kt @@ -1,7 +1,7 @@ package kmmApplication -expect class CommonMainExpect { - fun commonMainApi() +expect class CommonMainExpect { + fun commonMainApi() } fun consumeCommonMainExpect(e: CommonMainExpect?) { } diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier0/kmmLibrary/src/commonMain/kotlin/kmmApplication/commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier0/kmmLibrary/src/commonMain/kotlin/kmmApplication/commonMain_api.kt index 596a9dfb85fb..9ed8b92ed96e 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier0/kmmLibrary/src/commonMain/kotlin/kmmApplication/commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier0/kmmLibrary/src/commonMain/kotlin/kmmApplication/commonMain_api.kt @@ -1,7 +1,7 @@ package kmmApplication -expect class CommonMainExpect { - fun commonMainApi() +expect class CommonMainExpect { + fun commonMainApi() } fun consumeCommonMainExpect(e: CommonMainExpect?) { } diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/androidAppConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/androidAppConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt index 20b9661eeeeb..e5b67d490697 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/androidAppConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/androidAppConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt @@ -1,7 +1,7 @@ package test -expect class CommonMainExpect { - fun commonApi() +expect class CommonMainExpect { + fun commonApi() } fun produceCommonMainExpect(): CommonMainExpect = null!! diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/androidAppConsumesKmmLibSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/androidAppConsumesKmmLibSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt index 20b9661eeeeb..e5b67d490697 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/androidAppConsumesKmmLibSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/androidAppConsumesKmmLibSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt @@ -1,7 +1,7 @@ package test -expect class CommonMainExpect { - fun commonApi() +expect class CommonMainExpect { + fun commonApi() } fun produceCommonMainExpect(): CommonMainExpect = null!! diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/kotlinJvmConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/kotlinJvmConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt index 099cc2cd28aa..34167f6c605b 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/kotlinJvmConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/kotlinJvmConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt @@ -1,7 +1,7 @@ package test -expect class CommonMainExpect { - fun commonApi() +expect class CommonMainExpect { + fun commonApi() } fun produceCommonMainExpect(): CommonMainExpect = null!! diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/kotlinJvmConsumesKmmLibSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/kotlinJvmConsumesKmmLibSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt index 099cc2cd28aa..34167f6c605b 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/kotlinJvmConsumesKmmLibSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/kotlinJvmConsumesKmmLibSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt @@ -1,7 +1,7 @@ package test -expect class CommonMainExpect { - fun commonApi() +expect class CommonMainExpect { + fun commonApi() } fun produceCommonMainExpect(): CommonMainExpect = null!! diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/pureJavaConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/pureJavaConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt index 751c8947ef00..29c2bf2e47e2 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/pureJavaConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/pureJavaConsumesKmmLibBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt @@ -1,7 +1,7 @@ package test -expect class CommonMainExpect { - fun commonApi() +expect class CommonMainExpect { + fun commonApi() } fun produceCommonMainExpect(): CommonMainExpect = null!! diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/twoKmmLibrariesBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/twoKmmLibrariesBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt index 099cc2cd28aa..34167f6c605b 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/twoKmmLibrariesBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/twoKmmLibrariesBinary/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt @@ -1,7 +1,7 @@ package test -expect class CommonMainExpect { - fun commonApi() +expect class CommonMainExpect { + fun commonApi() } fun produceCommonMainExpect(): CommonMainExpect = null!! diff --git a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/twoKmmLibrariesSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/twoKmmLibrariesSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt index 099cc2cd28aa..34167f6c605b 100644 --- a/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/twoKmmLibrariesSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt +++ b/plugins/kotlin/idea/tests/testData/gradle/multiplatform/core/tier1/twoKmmLibrariesSource/kmmLib/src/commonMain/kotlin/test/kmmLib_commonMain_api.kt @@ -1,7 +1,7 @@ package test -expect class CommonMainExpect { - fun commonApi() +expect class CommonMainExpect { + fun commonApi() } fun produceCommonMainExpect(): CommonMainExpect = null!! diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/actualConstructorWithProperties/jvm/jvm.kt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/actualConstructorWithProperties/jvm/jvm.kt index ec65b88aea71..4968d9f68012 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/actualConstructorWithProperties/jvm/jvm.kt +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/actualConstructorWithProperties/jvm/jvm.kt @@ -1,11 +1 @@ -actual class WithConstructor actual constructor(actual val x: Int, actual val s: String) - -/* -LINEMARKER: Has declaration in common module -TARGETS: -common.kt -expect class <1>WithConstructor(x: Int, s: String) { - val <3>x: Int - - val <2>s: String -*/ +actual class WithConstructor actual constructor(actual val x: Int, actual val s: String) diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/actualEnumEntriesInOneLine/jvm/jvm.kt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/actualEnumEntriesInOneLine/jvm/jvm.kt index 97fe59350ab6..f21e698fedc0 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/actualEnumEntriesInOneLine/jvm/jvm.kt +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/actualEnumEntriesInOneLine/jvm/jvm.kt @@ -1,10 +1,3 @@ package test -actual enum class Enum { A, B, C } - -/* -LINEMARKER: Has declaration in common module -TARGETS: -common.kt -expect enum class <4>Enum { <1>A, <2>B, <3>C } -*/ +actual enum class Enum { A, B, C } diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/expectEnumEntriesInOneLine/common/common.kt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/expectEnumEntriesInOneLine/common/common.kt index 3295deca6da1..69c48c492247 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/expectEnumEntriesInOneLine/common/common.kt +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/expectEnumEntriesInOneLine/common/common.kt @@ -1,10 +1,3 @@ package test -expect enum class Enum { A, B, C, D } - -/* -LINEMARKER: Has actuals in JVM -TARGETS: -jvm.kt -actual enum class <5>Enum { <1>A, <2>B, <3>C, <4>D } -*/ +expect enum class Enum { A, B, C, D } diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/expectEnumWithEnumEntriesInOneLine/common/common.kt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/expectEnumWithEnumEntriesInOneLine/common/common.kt index 7b42b4e36710..e8f20a3af08c 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/expectEnumWithEnumEntriesInOneLine/common/common.kt +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/expectEnumWithEnumEntriesInOneLine/common/common.kt @@ -1,17 +1,5 @@ package test expect enum class Enum { - A, B, C, D + A, B, C, D } - -/* -LINEMARKER: Has actuals in JVM -TARGETS: -jvm.kt -actual enum class <1>Enum { -*//* -LINEMARKER: Has actuals in JVM -TARGETS: -jvm.kt - <1>A, <2>B, <3>C, <4>D -*/ diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/common/common.kt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/common/common.kt index df4754e0c91c..e07d5bae1f5b 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/common/common.kt +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/common/common.kt @@ -1,6 +1,4 @@ -// !CHECK_HIGHLIGHTING - -expect annotation class Ann( - val x: Int, val y: String, - val z: Double, val b: Boolean -) \ No newline at end of file +expect annotation class Ann( + val x: Int, val y: String, + val z: Double, val b: Boolean +) diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/dependencies.txt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/dependencies.txt index 549b0097cf54..5820c9936e0c 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/dependencies.txt +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/dependencies.txt @@ -1,4 +1,6 @@ MODULE common { platform=[JVM, JS, Native] } MODULE jvm { platform=[JVM] } +MODULE js { platform=[JS] } -jvm -> common { kind=DEPENDS_ON } \ No newline at end of file +jvm -> common { kind=DEPENDS_ON } +js -> common { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/js/js.kt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/js/js.kt new file mode 100644 index 000000000000..2ed87e7f5848 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/js/js.kt @@ -0,0 +1,4 @@ +actual annotation class Ann( + actual val x: Int, actual val y: String, + actual val z: Double, actual val b: Boolean +) diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/jvm/jvm.kt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/jvm/jvm.kt index e821db19fccb..2ed87e7f5848 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/jvm/jvm.kt +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromActualAnnotationWithParametersInOneLine/jvm/jvm.kt @@ -1,22 +1,4 @@ actual annotation class Ann( - actual val x: Int, actual val y: String, - actual val z: Double, actual val b: Boolean + actual val x: Int, actual val y: String, + actual val z: Double, actual val b: Boolean ) - -/* -LINEMARKER: Has declaration in common module -TARGETS: -common.kt -expect annotation class <1>Ann( -*//* -LINEMARKER: Has declaration in common module -TARGETS: -common.kt - val <1>x: Int, val <2>y: String, -*//* -LINEMARKER: Has declaration in common module -TARGETS: -common.kt - val <2>z: Double, val <1>b: Boolean -*/ - diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/common/common.kt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/common/common.kt index 5c08e36f9c54..6da848938dad 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/common/common.kt +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/common/common.kt @@ -1,3 +1,3 @@ -expect class Header { +expect class Header { } diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/dependencies.txt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/dependencies.txt index 549b0097cf54..5820c9936e0c 100644 --- a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/dependencies.txt +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/dependencies.txt @@ -1,4 +1,6 @@ MODULE common { platform=[JVM, JS, Native] } MODULE jvm { platform=[JVM] } +MODULE js { platform=[JS] } -jvm -> common { kind=DEPENDS_ON } \ No newline at end of file +jvm -> common { kind=DEPENDS_ON } +js -> common { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/js/js.kt b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/js/js.kt new file mode 100644 index 000000000000..02e76d58038e --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/multiModuleLineMarker/fromClassToAlias/js/js.kt @@ -0,0 +1,4 @@ +// !CHECK_HIGHLIGHTING + +actual typealias Header = String + diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/chainedTypeAliasRefinement/common/common.kt b/plugins/kotlin/idea/tests/testData/multiplatform/chainedTypeAliasRefinement/common/common.kt index ba9b53b76809..946f2ee30ffd 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/chainedTypeAliasRefinement/common/common.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/chainedTypeAliasRefinement/common/common.kt @@ -1,4 +1,4 @@ -expect class Common : Number { +expect class Common : Number { override fun toDouble(): Double override fun toFloat(): Float override fun toLong(): Long diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/diamondModuleDependency1/common-1/common-1.kt b/plugins/kotlin/idea/tests/testData/multiplatform/diamondModuleDependency1/common-1/common-1.kt index cec2134208ff..a4515b51ee0b 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/diamondModuleDependency1/common-1/common-1.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/diamondModuleDependency1/common-1/common-1.kt @@ -4,8 +4,8 @@ package sample // -------------------------------------------- -expect interface A { - fun foo() +expect interface A { + fun foo() } fun take_A_common_1(x: A) { diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/diamondSeesTwoActuals/top/top.kt b/plugins/kotlin/idea/tests/testData/multiplatform/diamondSeesTwoActuals/top/top.kt index 44901f4932b2..2ecaa97dcdbb 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/diamondSeesTwoActuals/top/top.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/diamondSeesTwoActuals/top/top.kt @@ -1,5 +1,5 @@ package sample -expect class A { - fun foo(): Int +expect class A { + fun foo(): Int } diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/differentKindsOfDependencies/a-common/a.kt b/plugins/kotlin/idea/tests/testData/multiplatform/differentKindsOfDependencies/a-common/a.kt index 6489a4e48e66..751a686d72ac 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/differentKindsOfDependencies/a-common/a.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/differentKindsOfDependencies/a-common/a.kt @@ -1 +1 @@ -expect class A +expect class A diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/duplicateActualsExplicit/top/top.kt b/plugins/kotlin/idea/tests/testData/multiplatform/duplicateActualsExplicit/top/top.kt index a939943055a8..bfd330aa4fd9 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/duplicateActualsExplicit/top/top.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/duplicateActualsExplicit/top/top.kt @@ -1,3 +1,3 @@ package foo -expect class A +expect class A diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/duplicateActualsOneWithStrongIncompatibility/top/top.kt b/plugins/kotlin/idea/tests/testData/multiplatform/duplicateActualsOneWithStrongIncompatibility/top/top.kt index 8fb4f4ed96b6..bc50a2cf9cc3 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/duplicateActualsOneWithStrongIncompatibility/top/top.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/duplicateActualsOneWithStrongIncompatibility/top/top.kt @@ -1,3 +1,3 @@ package foo -expect fun foo(): Int +expect fun foo(): Int diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/expectActualLineMarkers/common/common.kt b/plugins/kotlin/idea/tests/testData/multiplatform/expectActualLineMarkers/common/common.kt index ddfd0034d8e3..929a0e3d1c39 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/expectActualLineMarkers/common/common.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/expectActualLineMarkers/common/common.kt @@ -1,3 +1,3 @@ -expect class ActualizedInSharedAndLeaf +expect class ActualizedInSharedAndLeaf -expect class ActualizedInLeaves +expect class ActualizedInLeaves diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/hierarcicalActualization/common/common.kt b/plugins/kotlin/idea/tests/testData/multiplatform/hierarcicalActualization/common/common.kt index 9da43501668d..864fd29fa4f2 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/hierarcicalActualization/common/common.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/hierarcicalActualization/common/common.kt @@ -1,6 +1,6 @@ package foo expect class ExpectInCommonActualInMiddle -expect class ExpectInCommonActualInPlatforms +expect class ExpectInCommonActualInPlatforms expect class ExpectInCommonWithoutActual diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/jvmInlineValueClass/jvm/jvm.kt b/plugins/kotlin/idea/tests/testData/multiplatform/jvmInlineValueClass/jvm/jvm.kt index 73d007f004fd..732158f6c382 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/jvmInlineValueClass/jvm/jvm.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/jvmInlineValueClass/jvm/jvm.kt @@ -3,4 +3,4 @@ package kotlin.jvm annotation class JvmInline @JvmInline -actual value class VC(val i: Int) +actual value class VC(val i: Int) diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/languageConstructions/jvm/jvm.kt b/plugins/kotlin/idea/tests/testData/multiplatform/languageConstructions/jvm/jvm.kt index fbde10f70ae6..6fd12a3ff169 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/languageConstructions/jvm/jvm.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/languageConstructions/jvm/jvm.kt @@ -2,7 +2,7 @@ package sample -actual data class A(actual val x: Int, actual val y: Double, val t: String) { +actual data class A(actual val x: Int, actual val y: Double, val t: String) { actual fun commonFun() {} fun platformFun() {} diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/multiplatformLibrary/common/common.kt b/plugins/kotlin/idea/tests/testData/multiplatform/multiplatformLibrary/common/common.kt index a2c4a2ed9cf0..7c66f0e8fb2c 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/multiplatformLibrary/common/common.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/multiplatformLibrary/common/common.kt @@ -1,11 +1,11 @@ package sample -expect class Sample() { - fun checkMe(): Int +expect class Sample() { + fun checkMe(): Int } -expect object Platform { - val name: String +expect object Platform { + val name: String } fun hello(): String = "Hello from ${Platform.name}" diff --git a/plugins/kotlin/idea/tests/testData/multiplatform/whenExhaustivenessForSealed/common/common.kt b/plugins/kotlin/idea/tests/testData/multiplatform/whenExhaustivenessForSealed/common/common.kt index e0fffe7f4d00..9760cdfd2ceb 100644 --- a/plugins/kotlin/idea/tests/testData/multiplatform/whenExhaustivenessForSealed/common/common.kt +++ b/plugins/kotlin/idea/tests/testData/multiplatform/whenExhaustivenessForSealed/common/common.kt @@ -1,4 +1,4 @@ -expect sealed class TestClass() +expect sealed class TestClass() class CommonImplTestClass: TestClass()