Add few tests on internal visibility in MPP
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
internal fun internalFromCommon() { }
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
MODULE common { platform=[JVM, JS, Native]; root=common }
|
||||||
|
MODULE jvm { platform=[JVM]; root=jvm }
|
||||||
|
|
||||||
|
jvm -> common { kind=DEPENDS_ON }
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fun usage() {
|
||||||
|
internalFromCommon()
|
||||||
|
}
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
internal fun internalFromCommon() { }
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
MODULE common { platform=[JVM, JS, Native]; root=common }
|
||||||
|
MODULE jvm { platform=[JVM]; root=jvmMain; testRoot=jvmTest }
|
||||||
|
|
||||||
|
jvm -> common { kind=DEPENDS_ON }
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
fun usageInTest() {
|
||||||
|
internalFromCommon()
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
MODULE module { platform=[JVM]; root=moduleMain; testRoot=moduleTest }
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
internal fun internalFromMain() { }
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fun usage() {
|
||||||
|
internalFromMain()
|
||||||
|
}
|
||||||
+22
-7
@@ -5,18 +5,19 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.caches.resolve
|
package org.jetbrains.kotlin.idea.caches.resolve
|
||||||
|
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.openapi.module.ModuleManager
|
||||||
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.util.io.exists
|
import com.intellij.util.io.exists
|
||||||
import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest
|
import org.jetbrains.kotlin.checkers.BaseDiagnosticsTest
|
||||||
import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil
|
import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.idea.multiplatform.setupMppProjectFromTextFile
|
import org.jetbrains.kotlin.idea.multiplatform.setupMppProjectFromTextFile
|
||||||
import org.jetbrains.kotlin.idea.project.platform
|
|
||||||
import org.jetbrains.kotlin.idea.resolve.frontendService
|
import org.jetbrains.kotlin.idea.resolve.frontendService
|
||||||
import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest
|
import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest
|
||||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||||
import org.jetbrains.kotlin.idea.test.allKotlinFiles
|
import org.jetbrains.kotlin.idea.test.allKotlinFiles
|
||||||
import org.jetbrains.kotlin.idea.util.module
|
|
||||||
import org.jetbrains.kotlin.idea.util.sourceRoots
|
import org.jetbrains.kotlin.idea.util.sourceRoots
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
@@ -35,13 +36,23 @@ abstract class AbstractMultiModuleIdeResolveTest : AbstractMultiModuleTest() {
|
|||||||
// This will implicitly copy all source files to temporary directory, clearing them from diagnostic markup in process
|
// This will implicitly copy all source files to temporary directory, clearing them from diagnostic markup in process
|
||||||
setupMppProjectFromTextFile(testRoot)
|
setupMppProjectFromTextFile(testRoot)
|
||||||
|
|
||||||
for (tempFile in project.allKotlinFiles()) {
|
project.allKotlinFiles()
|
||||||
checkFile(tempFile, tempFile.findCorrespondingFileInTestDir(testRoot))
|
|
||||||
|
for (module in ModuleManager.getInstance(project).modules) {
|
||||||
|
for (sourceRoot in module.sourceRoots) {
|
||||||
|
VfsUtilCore.processFilesRecursively(sourceRoot) { file ->
|
||||||
|
if (file.isDirectory) return@processFilesRecursively true
|
||||||
|
|
||||||
|
val tempSourceKtFile = PsiManager.getInstance(project).findFile(file) as KtFile
|
||||||
|
checkFile(tempSourceKtFile, tempSourceKtFile.findCorrespondingFileInTestDir(sourceRoot, testRoot))
|
||||||
|
true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun KtFile.findCorrespondingFileInTestDir(testDir: File): File {
|
private fun KtFile.findCorrespondingFileInTestDir(containingRoot: VirtualFile, testDir: File): File {
|
||||||
val tempRootPath = Paths.get(this.module!!.sourceRoots.single().path)
|
val tempRootPath = Paths.get(containingRoot.path)
|
||||||
val tempProjectDirPath = tempRootPath.parent
|
val tempProjectDirPath = tempRootPath.parent
|
||||||
val tempSourcePath = Paths.get(this.virtualFilePath)
|
val tempSourcePath = Paths.get(this.virtualFilePath)
|
||||||
|
|
||||||
@@ -92,4 +103,8 @@ abstract class AbstractMultiModuleIdeResolveTest : AbstractMultiModuleTest() {
|
|||||||
|
|
||||||
abstract class AbstractHierarchicalExpectActualTest : AbstractMultiModuleIdeResolveTest() {
|
abstract class AbstractHierarchicalExpectActualTest : AbstractMultiModuleIdeResolveTest() {
|
||||||
override fun getTestDataPath(): String = "${PluginTestCaseBase.getTestDataPathBase()}/hierarchicalExpectActual"
|
override fun getTestDataPath(): String = "${PluginTestCaseBase.getTestDataPathBase()}/hierarchicalExpectActual"
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract class AbstractMultiplatformAnalysisTest : AbstractMultiModuleIdeResolveTest() {
|
||||||
|
override fun getTestDataPath(): String = "${PluginTestCaseBase.getTestDataPathBase()}/multiplatform"
|
||||||
}
|
}
|
||||||
Generated
+2
-1
@@ -61,7 +61,8 @@ public class MultiplatformAnalysisTestGenerated extends AbstractMultiplatformAna
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testAllFilesPresentInMultiplatformTypeRefinement() throws Exception {
|
public void testAllFilesPresentInMultiplatformTypeRefinement() throws Exception {
|
||||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/multiplatformTypeRefinement"), Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false);
|
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/multiplatformTypeRefinement"),
|
||||||
|
Pattern.compile("^([^\\.]+)$"), TargetBackend.ANY, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("callableReferences")
|
@TestMetadata("callableReferences")
|
||||||
|
|||||||
Reference in New Issue
Block a user