From a98f167e02229df5fb677f9cd293e2e6479953c4 Mon Sep 17 00:00:00 2001 From: Frederik Haselmeier Date: Fri, 17 May 2024 20:32:58 +0000 Subject: [PATCH] [Kotlin] Added inspection to find expect declarations without corresponding actual implementation in a module ^KTIJ-28278 fixed Merge-request: IJ-MR-134654 Merged-by: Frederik Haselmeier GitOrigin-RevId: 084dab27001d11ddecf7ceeac8f608fa8fdb6f6b --- .../messages/KotlinBundle.properties | 2 + .../NoActualForExpect.html | 6 ++ .../kotlin.code-insight.inspections.k2.xml | 8 ++ .../NoActualForExpectInspection.kt | 60 ++++++++++++++ ...tlin.code-insight.inspections.k2.tests.iml | 1 + .../tests/AbstractK2ActualExpectTest.kt | 42 ++++++++++ .../tests/AbstractK2MultiplatformTest.kt | 35 ++++++++ .../tests/K2ActualExpectTestGenerated.java | 80 +++++++++++++++++++ .../actualizedClass/common/common.kt | 1 + .../actualizedClass/dependencies.txt | 4 + .../actualExpect/actualizedClass/jvm/jvm.kt | 3 + .../actualizedClass/missing_actuals.txt | 1 + .../actualizedFunction/common/common.kt | 1 + .../actualizedFunction/dependencies.txt | 4 + .../actualizedFunction/jvm/jvm.kt | 1 + .../actualizedFunction/missing_actuals.txt | 1 + .../actualizedInParent/common/common.kt | 1 + .../actualizedInParent/dependencies.txt | 8 ++ .../actualizedInParent/jvmA/jvm.kt | 1 + .../actualizedInParent/jvmB/jvm.kt | 1 + .../actualizedInParent/jvmCommon/jvm.kt | 3 + .../actualizedInParent/missing_actuals.txt | 1 + .../actualizedTypealias/common/common.kt | 1 + .../actualizedTypealias/dependencies.txt | 4 + .../actualizedTypealias/jvm/jvm.kt | 3 + .../actualizedTypealias/missing_actuals.txt | 1 + .../actualExpect/missedActual/a/jvm.kt | 1 + .../actualExpect/missedActual/b/jvm.kt | 1 + .../missedActual/common/common.kt | 1 + .../missedActual/dependencies.txt | 6 ++ .../missedActual/missing_actuals.txt | 1 + .../actualExpect/missedActualClass/a/jvm.kt | 1 + .../actualExpect/missedActualClass/b/jvm.kt | 1 + .../missedActualClass/common/common.kt | 1 + .../missedActualClass/dependencies.txt | 6 ++ .../missedActualClass/missing_actuals.txt | 1 + .../missedActualFunction/common/common.kt | 1 + .../missedActualFunction/dependencies.txt | 2 + .../missedActualFunction/missing_actuals.txt | 1 + .../missedActualInSubtree/common/common.kt | 1 + .../missedActualInSubtree/dependencies.txt | 10 +++ .../missedActualInSubtree/jvmA/jvm.kt | 1 + .../missedActualInSubtree/jvmB/jvm.kt | 3 + .../missedActualInSubtree/jvmC/jvm.kt | 1 + .../missedActualInSubtree/jvmCommon/jvm.kt | 3 + .../missedActualInSubtree/missing_actuals.txt | 1 + .../missedActualObject/common/common.kt | 1 + .../missedActualObject/dependencies.txt | 2 + .../missedActualObject/missing_actuals.txt | 1 + .../missedActualSingleTarget/common/common.kt | 1 + .../missedActualSingleTarget/dependencies.txt | 2 + .../missing_actuals.txt | 1 + .../onlyListMissingLeaves/common/common.kt | 1 + .../onlyListMissingLeaves/dependencies.txt | 8 ++ .../onlyListMissingLeaves/jvmA/jvm.kt | 1 + .../onlyListMissingLeaves/jvmB/jvm.kt | 1 + .../onlyListMissingLeaves/jvmCommon/jvm.kt | 1 + .../onlyListMissingLeaves/missing_actuals.txt | 1 + ...kotlin.code-insight.inspections.shared.iml | 2 + .../codeinsight/GenerateK2InspectionTests.kt | 7 +- 60 files changed, 347 insertions(+), 1 deletion(-) create mode 100644 plugins/kotlin/code-insight/descriptions/resources-en/inspectionDescriptions/NoActualForExpect.html create mode 100644 plugins/kotlin/code-insight/inspections-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/inspections/NoActualForExpectInspection.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/AbstractK2ActualExpectTest.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/AbstractK2MultiplatformTest.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/K2ActualExpectTestGenerated.java create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/jvm/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/jvm/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmA/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmB/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmCommon/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/jvm/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/a/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/b/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/a/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/b/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmA/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmB/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmC/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmCommon/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/missing_actuals.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/common/common.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/dependencies.txt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmA/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmB/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmCommon/jvm.kt create mode 100644 plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/missing_actuals.txt diff --git a/plugins/kotlin/base/resources/resources-en/messages/KotlinBundle.properties b/plugins/kotlin/base/resources/resources-en/messages/KotlinBundle.properties index fa7f0cfb79a1..5a6994e61968 100644 --- a/plugins/kotlin/base/resources/resources-en/messages/KotlinBundle.properties +++ b/plugins/kotlin/base/resources/resources-en/messages/KotlinBundle.properties @@ -1964,6 +1964,7 @@ open.moved.method.in.editor=Open moved method in editor to.fully.qualified.name=To (fully qualified name): incomplete.destructuring.declaration.text=Incomplete destructuring declaration incomplete.destructuring.fix.family.name=Add missing variables to destructuring declaration +no.actual.for.expect.declaration=No actual for expect declaration in module(s): {0} #Structural Search category.class=Kotlin/Class-based @@ -2148,6 +2149,7 @@ inspection.redundant.async.display.name=Redundant 'async' call inspection.main.function.return.unit.display.name=Main function should return 'Unit' inspection.move.variable.declaration.into.when.display.name=Variable declaration could be moved inside 'when' inspection.move.lambda.outside.parentheses.display.name=Lambda argument inside parentheses +inspection.no.actual.for.expect.display.name=No actual for expect declaration inspection.can.sealed.subclass.be.object.display.name=Sealed subclass without state and overridden equals inspection.public.api.implicit.type.display.name=Public API declaration with implicit return type inspection.redundant.companion.reference.display.name=Redundant 'Companion' reference diff --git a/plugins/kotlin/code-insight/descriptions/resources-en/inspectionDescriptions/NoActualForExpect.html b/plugins/kotlin/code-insight/descriptions/resources-en/inspectionDescriptions/NoActualForExpect.html new file mode 100644 index 000000000000..5f50b93a0d19 --- /dev/null +++ b/plugins/kotlin/code-insight/descriptions/resources-en/inspectionDescriptions/NoActualForExpect.html @@ -0,0 +1,6 @@ + + +Reports expect declarations that do not have a corresponding +actual declaration in an implementing multi-platform module. + + \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/resources/kotlin.code-insight.inspections.k2.xml b/plugins/kotlin/code-insight/inspections-k2/resources/kotlin.code-insight.inspections.k2.xml index fcc5f922b76b..edc055808733 100644 --- a/plugins/kotlin/code-insight/inspections-k2/resources/kotlin.code-insight.inspections.k2.xml +++ b/plugins/kotlin/code-insight/inspections-k2/resources/kotlin.code-insight.inspections.k2.xml @@ -280,6 +280,14 @@ enabledByDefault="true" level="WEAK WARNING" language="kotlin" key="inspection.move.lambda.outside.parentheses.display.name" bundle="messages.KotlinBundle"/> + + + { + val implementingModules = implementingModules + if (implementingModules.isEmpty()) return setOf(this) + return implementingModules.flatMapTo(mutableSetOf()) { it.getLeaves() } + } + + private fun Module.hasActualInParentOrSelf(allModulesWithActual: Set): Boolean { + return this in allModulesWithActual || implementedModules.any { it in allModulesWithActual } + } + + override fun buildVisitor( + holder: ProblemsHolder, + isOnTheFly: Boolean, + session: LocalInspectionToolSession + ): PsiElementVisitor { + return object : KtVisitorVoid() { + override fun visitModifierList(list: KtModifierList) { + val module = list.module ?: return + val expectModifier = list.getModifier(KtTokens.EXPECT_KEYWORD) ?: return + val parentDeclaration = list.findParentOfType() ?: return + val leaves = module.getLeaves() + + val foundActuals = parentDeclaration.findAllActualForExpect() + .mapNotNullTo(mutableSetOf()) { it.element?.module }.toSet() + + val missingActuals = leaves.filter { module -> + !module.hasActualInParentOrSelf(foundActuals) + } + + if (missingActuals.isEmpty()) return + val missingModulesWithActuals = missingActuals.joinToString { it.name.substringAfterLast('.') } + holder.registerProblem( + expectModifier, + KotlinBundle.message("no.actual.for.expect.declaration", missingModulesWithActuals) + ) + } + } + } +} \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/kotlin.code-insight.inspections.k2.tests.iml b/plugins/kotlin/code-insight/inspections-k2/tests/kotlin.code-insight.inspections.k2.tests.iml index dfa9fb683dc7..1d3767da7281 100644 --- a/plugins/kotlin/code-insight/inspections-k2/tests/kotlin.code-insight.inspections.k2.tests.iml +++ b/plugins/kotlin/code-insight/inspections-k2/tests/kotlin.code-insight.inspections.k2.tests.iml @@ -49,5 +49,6 @@ + \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/AbstractK2ActualExpectTest.kt b/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/AbstractK2ActualExpectTest.kt new file mode 100644 index 000000000000..a3cc7b603768 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/AbstractK2ActualExpectTest.kt @@ -0,0 +1,42 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.kotlin.idea.k2.inspections.tests + +import org.jetbrains.kotlin.idea.base.test.InTextDirectivesUtils +import org.jetbrains.kotlin.idea.inspections.runInspection +import org.jetbrains.kotlin.idea.k2.codeinsight.inspections.NoActualForExpectInspection +import java.io.File + +abstract class AbstractK2ActualExpectTest : AbstractK2MultiplatformTest() { + override fun setUp() { + super.setUp() + } + + override fun doTest(testPath: String) { + super.doTest(testPath) + val configFile = File(testPath, "missing_actuals.txt") + assertExists(configFile) + val fileText = configFile.readText() + val missingActualDirective = InTextDirectivesUtils.findLineWithPrefixRemoved(fileText, "// MISSING_ACTUALS:") + assertNotNull("Missing actuals declaration", missingActualDirective) + val expectedMissingActualModules = missingActualDirective!!.substringAfter(":").trim() + .takeIf { !it.isEmpty() }?.split(",")?.map { it.trim() } ?: emptyList() + val problemDescriptors = runInspection( + NoActualForExpectInspection::class.java, + project, + settings = null + ).problemElements.values.map { it.descriptionTemplate } + + assertTrue("Found more than one problemDescriptor", problemDescriptors.size <= 1) + val problemDescriptor = problemDescriptors.firstOrNull() + val missingActuals = if (problemDescriptor.isNullOrEmpty()) { + emptyList() + } else { + problemDescriptor.substringAfter(":").trim().split(",").map { it.trim() }.filter { !it.isBlank() } + } + assertSameElements(expectedMissingActualModules, missingActuals) + } + + override fun tearDown() { + super.tearDown() + } +} \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/AbstractK2MultiplatformTest.kt b/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/AbstractK2MultiplatformTest.kt new file mode 100644 index 000000000000..26507bd7b3ea --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/AbstractK2MultiplatformTest.kt @@ -0,0 +1,35 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.kotlin.idea.k2.inspections.tests + +import com.intellij.util.ThrowableRunnable +import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginMode +import org.jetbrains.kotlin.idea.base.projectStructure.compositeAnalysis.KotlinMultiplatformAnalysisModeComponent +import org.jetbrains.kotlin.idea.multiplatform.setupMppProjectFromDirStructure +import org.jetbrains.kotlin.idea.test.AbstractMultiModuleTest +import org.jetbrains.kotlin.idea.test.IDEA_TEST_DATA_DIR +import org.jetbrains.kotlin.idea.test.runAll +import java.io.File + +abstract class AbstractK2MultiplatformTest : AbstractMultiModuleTest() { + override fun getTestDataDirectory() = IDEA_TEST_DATA_DIR.resolve("multiplatform") + + override val pluginMode: KotlinPluginMode = KotlinPluginMode.K2 + + override fun setUp() { + super.setUp() + KotlinMultiplatformAnalysisModeComponent.setMode(project, KotlinMultiplatformAnalysisModeComponent.Mode.COMPOSITE) + } + + protected open fun doTest(testPath: String) { + setupMppProjectFromDirStructure(File(testPath)) + } + + override fun tearDown() { + runAll( + ThrowableRunnable { + KotlinMultiplatformAnalysisModeComponent.setMode(project, KotlinMultiplatformAnalysisModeComponent.Mode.SEPARATE) + }, + ThrowableRunnable { super.tearDown() } + ) + } +} \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/K2ActualExpectTestGenerated.java b/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/K2ActualExpectTestGenerated.java new file mode 100644 index 000000000000..d6740bcae743 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/test/org/jetbrains/kotlin/idea/k2/inspections/tests/K2ActualExpectTestGenerated.java @@ -0,0 +1,80 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. + +package org.jetbrains.kotlin.idea.k2.inspections.tests; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.idea.test.JUnit3RunnerWithInners; +import org.jetbrains.kotlin.idea.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.TestMetadata; +import org.jetbrains.kotlin.idea.base.test.TestRoot; +import org.junit.runner.RunWith; + +/** + * This class is generated by {@link org.jetbrains.kotlin.testGenerator.generator.TestGenerator}. + * DO NOT MODIFY MANUALLY. + */ +@SuppressWarnings("all") +@TestRoot("code-insight/inspections-k2/tests") +@TestDataPath("$CONTENT_ROOT") +@RunWith(JUnit3RunnerWithInners.class) +@TestMetadata("testData/multiplatform/actualExpect") +public class K2ActualExpectTestGenerated extends AbstractK2ActualExpectTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + @TestMetadata("actualizedClass") + public void testActualizedClass() throws Exception { + runTest("testData/multiplatform/actualExpect/actualizedClass/"); + } + + @TestMetadata("actualizedFunction") + public void testActualizedFunction() throws Exception { + runTest("testData/multiplatform/actualExpect/actualizedFunction/"); + } + + @TestMetadata("actualizedInParent") + public void testActualizedInParent() throws Exception { + runTest("testData/multiplatform/actualExpect/actualizedInParent/"); + } + + @TestMetadata("actualizedTypealias") + public void testActualizedTypealias() throws Exception { + runTest("testData/multiplatform/actualExpect/actualizedTypealias/"); + } + + @TestMetadata("missedActual") + public void testMissedActual() throws Exception { + runTest("testData/multiplatform/actualExpect/missedActual/"); + } + + @TestMetadata("missedActualClass") + public void testMissedActualClass() throws Exception { + runTest("testData/multiplatform/actualExpect/missedActualClass/"); + } + + @TestMetadata("missedActualFunction") + public void testMissedActualFunction() throws Exception { + runTest("testData/multiplatform/actualExpect/missedActualFunction/"); + } + + @TestMetadata("missedActualInSubtree") + public void testMissedActualInSubtree() throws Exception { + runTest("testData/multiplatform/actualExpect/missedActualInSubtree/"); + } + + @TestMetadata("missedActualObject") + public void testMissedActualObject() throws Exception { + runTest("testData/multiplatform/actualExpect/missedActualObject/"); + } + + @TestMetadata("missedActualSingleTarget") + public void testMissedActualSingleTarget() throws Exception { + runTest("testData/multiplatform/actualExpect/missedActualSingleTarget/"); + } + + @TestMetadata("onlyListMissingLeaves") + public void testOnlyListMissingLeaves() throws Exception { + runTest("testData/multiplatform/actualExpect/onlyListMissingLeaves/"); + } +} diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/common/common.kt new file mode 100644 index 000000000000..ee61f91e24ad --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/common/common.kt @@ -0,0 +1 @@ +expect class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/dependencies.txt new file mode 100644 index 000000000000..030386761eef --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/dependencies.txt @@ -0,0 +1,4 @@ +MODULE common { platform=[JVM] } +MODULE jvm { platform=[JVM] } + +jvm -> common { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/jvm/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/jvm/jvm.kt new file mode 100644 index 000000000000..6532ecfee6c8 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/jvm/jvm.kt @@ -0,0 +1,3 @@ +actual class Expect { + +} \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/missing_actuals.txt new file mode 100644 index 000000000000..84f3a9520843 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedClass/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/common/common.kt new file mode 100644 index 000000000000..25d592f6f346 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/common/common.kt @@ -0,0 +1 @@ +expect fun test(): Unit \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/dependencies.txt new file mode 100644 index 000000000000..030386761eef --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/dependencies.txt @@ -0,0 +1,4 @@ +MODULE common { platform=[JVM] } +MODULE jvm { platform=[JVM] } + +jvm -> common { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/jvm/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/jvm/jvm.kt new file mode 100644 index 000000000000..749bd930552f --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/jvm/jvm.kt @@ -0,0 +1 @@ +actual fun test(): Unit \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/missing_actuals.txt new file mode 100644 index 000000000000..84f3a9520843 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedFunction/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/common/common.kt new file mode 100644 index 000000000000..ee61f91e24ad --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/common/common.kt @@ -0,0 +1 @@ +expect class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/dependencies.txt new file mode 100644 index 000000000000..ad17c728fc1d --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/dependencies.txt @@ -0,0 +1,8 @@ +MODULE jvmCommon { platform=[JVM] } +MODULE jvmA { platform=[JVM] } +MODULE jvmB { platform=[JVM] } +MODULE common { platform=[JVM] } + +jvmCommon -> common { kind=DEPENDS_ON } +jvmA -> jvmCommon { kind=DEPENDS_ON } +jvmB -> jvmCommon { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmA/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmA/jvm.kt new file mode 100644 index 000000000000..e4ea639deeed --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmA/jvm.kt @@ -0,0 +1 @@ +fun test() \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmB/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmB/jvm.kt new file mode 100644 index 000000000000..e4ea639deeed --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmB/jvm.kt @@ -0,0 +1 @@ +fun test() \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmCommon/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmCommon/jvm.kt new file mode 100644 index 000000000000..6532ecfee6c8 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/jvmCommon/jvm.kt @@ -0,0 +1,3 @@ +actual class Expect { + +} \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/missing_actuals.txt new file mode 100644 index 000000000000..84f3a9520843 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedInParent/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/common/common.kt new file mode 100644 index 000000000000..3196b06a1290 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/common/common.kt @@ -0,0 +1 @@ +expect class Test \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/dependencies.txt new file mode 100644 index 000000000000..030386761eef --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/dependencies.txt @@ -0,0 +1,4 @@ +MODULE common { platform=[JVM] } +MODULE jvm { platform=[JVM] } + +jvm -> common { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/jvm/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/jvm/jvm.kt new file mode 100644 index 000000000000..d27d2fd87d20 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/jvm/jvm.kt @@ -0,0 +1,3 @@ +class Other + +actual typealias Test = Other \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/missing_actuals.txt new file mode 100644 index 000000000000..84f3a9520843 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/actualizedTypealias/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/a/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/a/jvm.kt new file mode 100644 index 000000000000..19e459dee56a --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/a/jvm.kt @@ -0,0 +1 @@ +class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/b/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/b/jvm.kt new file mode 100644 index 000000000000..fe99c0a3f86e --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/b/jvm.kt @@ -0,0 +1 @@ +actual class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/common/common.kt new file mode 100644 index 000000000000..ee61f91e24ad --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/common/common.kt @@ -0,0 +1 @@ +expect class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/dependencies.txt new file mode 100644 index 000000000000..32e509046954 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/dependencies.txt @@ -0,0 +1,6 @@ +MODULE a { platform=[JVM] } +MODULE b { platform=[JVM] } +MODULE common { platform=[JVM] } + +a -> common { kind=DEPENDS_ON } +b -> common { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/missing_actuals.txt new file mode 100644 index 000000000000..559d8129cb80 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActual/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: a \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/a/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/a/jvm.kt new file mode 100644 index 000000000000..19e459dee56a --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/a/jvm.kt @@ -0,0 +1 @@ +class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/b/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/b/jvm.kt new file mode 100644 index 000000000000..19e459dee56a --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/b/jvm.kt @@ -0,0 +1 @@ +class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/common/common.kt new file mode 100644 index 000000000000..ee61f91e24ad --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/common/common.kt @@ -0,0 +1 @@ +expect class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/dependencies.txt new file mode 100644 index 000000000000..32e509046954 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/dependencies.txt @@ -0,0 +1,6 @@ +MODULE a { platform=[JVM] } +MODULE b { platform=[JVM] } +MODULE common { platform=[JVM] } + +a -> common { kind=DEPENDS_ON } +b -> common { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/missing_actuals.txt new file mode 100644 index 000000000000..f4eebea0be3a --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualClass/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: a, b \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/common/common.kt new file mode 100644 index 000000000000..25d592f6f346 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/common/common.kt @@ -0,0 +1 @@ +expect fun test(): Unit \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/dependencies.txt new file mode 100644 index 000000000000..ef7e116f18e0 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/dependencies.txt @@ -0,0 +1,2 @@ +MODULE common { platform=[JVM] } + diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/missing_actuals.txt new file mode 100644 index 000000000000..2229c31957c5 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualFunction/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: common \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/common/common.kt new file mode 100644 index 000000000000..ee61f91e24ad --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/common/common.kt @@ -0,0 +1 @@ +expect class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/dependencies.txt new file mode 100644 index 000000000000..30525e209dae --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/dependencies.txt @@ -0,0 +1,10 @@ +MODULE jvmCommon { platform=[JVM] } +MODULE jvmA { platform=[JVM] } +MODULE jvmB { platform=[JVM] } +MODULE jvmC { platform=[JVM] } +MODULE common { platform=[JVM] } + +jvmCommon -> common { kind=DEPENDS_ON } +jvmA -> jvmCommon { kind=DEPENDS_ON } +jvmB -> jvmCommon { kind=DEPENDS_ON } +jvmC -> common { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmA/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmA/jvm.kt new file mode 100644 index 000000000000..e4ea639deeed --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmA/jvm.kt @@ -0,0 +1 @@ +fun test() \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmB/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmB/jvm.kt new file mode 100644 index 000000000000..6532ecfee6c8 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmB/jvm.kt @@ -0,0 +1,3 @@ +actual class Expect { + +} \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmC/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmC/jvm.kt new file mode 100644 index 000000000000..e4ea639deeed --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmC/jvm.kt @@ -0,0 +1 @@ +fun test() \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmCommon/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmCommon/jvm.kt new file mode 100644 index 000000000000..6532ecfee6c8 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/jvmCommon/jvm.kt @@ -0,0 +1,3 @@ +actual class Expect { + +} \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/missing_actuals.txt new file mode 100644 index 000000000000..49ba5c94c886 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualInSubtree/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: jvmC \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/common/common.kt new file mode 100644 index 000000000000..4745efd95004 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/common/common.kt @@ -0,0 +1 @@ +expect object Test \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/dependencies.txt new file mode 100644 index 000000000000..ef7e116f18e0 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/dependencies.txt @@ -0,0 +1,2 @@ +MODULE common { platform=[JVM] } + diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/missing_actuals.txt new file mode 100644 index 000000000000..2229c31957c5 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualObject/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: common \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/common/common.kt new file mode 100644 index 000000000000..ee61f91e24ad --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/common/common.kt @@ -0,0 +1 @@ +expect class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/dependencies.txt new file mode 100644 index 000000000000..ef7e116f18e0 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/dependencies.txt @@ -0,0 +1,2 @@ +MODULE common { platform=[JVM] } + diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/missing_actuals.txt new file mode 100644 index 000000000000..2229c31957c5 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/missedActualSingleTarget/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: common \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/common/common.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/common/common.kt new file mode 100644 index 000000000000..ee61f91e24ad --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/common/common.kt @@ -0,0 +1 @@ +expect class Expect \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/dependencies.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/dependencies.txt new file mode 100644 index 000000000000..ad17c728fc1d --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/dependencies.txt @@ -0,0 +1,8 @@ +MODULE jvmCommon { platform=[JVM] } +MODULE jvmA { platform=[JVM] } +MODULE jvmB { platform=[JVM] } +MODULE common { platform=[JVM] } + +jvmCommon -> common { kind=DEPENDS_ON } +jvmA -> jvmCommon { kind=DEPENDS_ON } +jvmB -> jvmCommon { kind=DEPENDS_ON } \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmA/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmA/jvm.kt new file mode 100644 index 000000000000..e4ea639deeed --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmA/jvm.kt @@ -0,0 +1 @@ +fun test() \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmB/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmB/jvm.kt new file mode 100644 index 000000000000..e4ea639deeed --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmB/jvm.kt @@ -0,0 +1 @@ +fun test() \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmCommon/jvm.kt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmCommon/jvm.kt new file mode 100644 index 000000000000..e4ea639deeed --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/jvmCommon/jvm.kt @@ -0,0 +1 @@ +fun test() \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/missing_actuals.txt b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/missing_actuals.txt new file mode 100644 index 000000000000..8cb08917d6e5 --- /dev/null +++ b/plugins/kotlin/code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/onlyListMissingLeaves/missing_actuals.txt @@ -0,0 +1 @@ +// MISSING_ACTUALS: jvmA, jvmB \ No newline at end of file diff --git a/plugins/kotlin/code-insight/inspections-shared/kotlin.code-insight.inspections.shared.iml b/plugins/kotlin/code-insight/inspections-shared/kotlin.code-insight.inspections.shared.iml index d65014e25264..0708915d816e 100644 --- a/plugins/kotlin/code-insight/inspections-shared/kotlin.code-insight.inspections.shared.iml +++ b/plugins/kotlin/code-insight/inspections-shared/kotlin.code-insight.inspections.shared.iml @@ -50,5 +50,7 @@ + + \ No newline at end of file diff --git a/plugins/kotlin/util/test-generator-fir/test/org/jetbrains/kotlin/fir/testGenerator/codeinsight/GenerateK2InspectionTests.kt b/plugins/kotlin/util/test-generator-fir/test/org/jetbrains/kotlin/fir/testGenerator/codeinsight/GenerateK2InspectionTests.kt index 707f0207c6a4..2dd64b2d2640 100644 --- a/plugins/kotlin/util/test-generator-fir/test/org/jetbrains/kotlin/fir/testGenerator/codeinsight/GenerateK2InspectionTests.kt +++ b/plugins/kotlin/util/test-generator-fir/test/org/jetbrains/kotlin/fir/testGenerator/codeinsight/GenerateK2InspectionTests.kt @@ -6,6 +6,7 @@ import org.jetbrains.kotlin.idea.k2.codeInsight.inspections.shared.AbstractShare import org.jetbrains.kotlin.idea.k2.codeInsight.inspections.shared.AbstractSharedK2LocalInspectionTest import org.jetbrains.kotlin.idea.k2.codeInsight.inspections.shared.AbstractSharedK2MultiFileQuickFixTest import org.jetbrains.kotlin.idea.k2.codeInsight.inspections.shared.idea.kdoc.AbstractSharedK2KDocHighlightingTest +import org.jetbrains.kotlin.idea.k2.inspections.tests.AbstractK2ActualExpectTest import org.jetbrains.kotlin.idea.k2.inspections.tests.AbstractK2InspectionTest import org.jetbrains.kotlin.idea.k2.inspections.tests.AbstractK2LocalInspectionAndGeneralHighlightingTest import org.jetbrains.kotlin.idea.k2.inspections.tests.AbstractK2LocalInspectionTest @@ -15,6 +16,7 @@ import org.jetbrains.kotlin.idea.k2.quickfix.tests.AbstractK2MultiFileQuickFixTe import org.jetbrains.kotlin.idea.k2.quickfix.tests.AbstractK2QuickFixTest import org.jetbrains.kotlin.testGenerator.model.* import org.jetbrains.kotlin.testGenerator.model.GroupCategory.* +import org.jetbrains.kotlin.testGenerator.model.Patterns.DIRECTORY internal fun MutableTWorkspace.generateK2InspectionTests() { @@ -98,6 +100,10 @@ internal fun MutableTWorkspace.generateK2InspectionTests() { model("${idea}/multiFileLocalInspections/redundantQualifierName", pattern = pattern) model("code-insight/inspections-k2/tests/testData/multiFileInspectionsLocal", pattern = pattern) } + + testClass { + model("code-insight/inspections-k2/tests/testData/multiplatform/actualExpect/", pattern = DIRECTORY, isRecursive = false) + } } testGroup("code-insight/inspections-k2/tests", category = QUICKFIXES, testDataPath = "../../..") { testClass { @@ -131,7 +137,6 @@ internal fun MutableTWorkspace.generateK2InspectionTests() { model("inspections", pattern = pattern) model("inspectionsLocal", pattern = pattern) } - } testGroup("code-insight/inspections-shared/tests/k2", category = HIGHLIGHTING, testDataPath = "../testData") {