From 19beaf57a7a5298342457e6b1f5e13bc8609e111 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 2 Feb 2018 13:49:11 +0300 Subject: [PATCH] JVM facade: for Java resolve, always use JvmPlatform resolver So #KT-20281 Fixed --- .../org/jetbrains/kotlin/resolve/jvm/JvmAnalyzerFacade.kt | 2 +- .../fromClassToJavaAliasInTest/common/empty.kt | 7 +++++++ .../fromClassToJavaAliasInTest/jvm/ExpectedImpl.java | 3 +++ .../fromClassToJavaAliasInTest/jvm/empty.kt | 1 + .../idea/caches/resolve/MultiModuleLineMarkerTest.kt | 4 ++++ 5 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/common/empty.kt create mode 100644 idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/jvm/ExpectedImpl.java create mode 100644 idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/jvm/empty.kt diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/JvmAnalyzerFacade.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/JvmAnalyzerFacade.kt index 5c8e3b4139f..a2d9aed5799 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/JvmAnalyzerFacade.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/JvmAnalyzerFacade.kt @@ -70,7 +70,7 @@ object JvmAnalyzerFacade : AnalyzerFacade() { @Suppress("UNCHECKED_CAST") val resolverForReferencedModule = referencedClassModule?.let { resolverForProject.tryGetResolverForModule(it as M) } - val resolverForModule = resolverForReferencedModule ?: run { + val resolverForModule = resolverForReferencedModule?.takeIf { referencedClassModule.platform == JvmPlatform } ?: run { // in case referenced class lies outside of our resolver, resolve the class as if it is inside our module // this leads to java class being resolved several times resolverForProject.resolverForModule(moduleInfo) diff --git a/idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/common/empty.kt b/idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/common/empty.kt new file mode 100644 index 00000000000..aaf2ca96759 --- /dev/null +++ b/idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/common/empty.kt @@ -0,0 +1,7 @@ +// !CHECK_HIGHLIGHTING + +data class User(val name: String, val password: String) + +expect open class Expected { + val user: User +} \ No newline at end of file diff --git a/idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/jvm/ExpectedImpl.java b/idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/jvm/ExpectedImpl.java new file mode 100644 index 00000000000..159ea085791 --- /dev/null +++ b/idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/jvm/ExpectedImpl.java @@ -0,0 +1,3 @@ +public class ExpectedImpl { + public final User user = new User("User", "12345"); +} \ No newline at end of file diff --git a/idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/jvm/empty.kt b/idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/jvm/empty.kt new file mode 100644 index 00000000000..41cf458d099 --- /dev/null +++ b/idea/testData/multiModuleLineMarker/fromClassToJavaAliasInTest/jvm/empty.kt @@ -0,0 +1 @@ +actual typealias Expected = ExpectedImpl \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleLineMarkerTest.kt b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleLineMarkerTest.kt index 5c13a5ce462..47a5d3e1412 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleLineMarkerTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/MultiModuleLineMarkerTest.kt @@ -58,6 +58,10 @@ class MultiModuleLineMarkerTest : AbstractMultiModuleHighlightingTest() { doMultiPlatformTest(TargetPlatformKind.Jvm[JvmTarget.JVM_1_6]) } + fun testFromClassToJavaAliasInTest() { + doMultiPlatformTest(TargetPlatformKind.Jvm[JvmTarget.JVM_1_6]) + } + fun testFromCommonToJvmHeader() { doMultiPlatformTest(TargetPlatformKind.Jvm[JvmTarget.JVM_1_6]) }