diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/moduleVisibilityUtils.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/moduleVisibilityUtils.kt index 4c052b6d13e..fde0786082d 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/moduleVisibilityUtils.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/moduleVisibilityUtils.kt @@ -24,7 +24,8 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment import org.jetbrains.kotlin.modules.Module import org.jetbrains.kotlin.resolve.DescriptorUtils -import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedTypeAliasDescriptor import java.io.File interface ModuleVisibilityManager { @@ -53,7 +54,7 @@ fun isContainedByCompiledPartOfOurModule(descriptor: DeclarationDescriptor, outD is KotlinJvmBinarySourceElement -> source.binaryClass is KotlinJvmBinaryPackageSourceElement -> - if (descriptor is DeserializedCallableMemberDescriptor) { + if (descriptor is DeserializedMemberDescriptor) { source.getContainingBinaryClass(descriptor) ?: source.getRepresentativeBinaryClass() } else { @@ -78,6 +79,9 @@ fun getSourceElement(descriptor: DeclarationDescriptor): SourceElement = if (descriptor is CallableMemberDescriptor && descriptor.source === SourceElement.NO_SOURCE) { descriptor.containingDeclaration.toSourceElement } + else if (descriptor is DeserializedTypeAliasDescriptor) { + descriptor.containingDeclaration.toSourceElement + } else { descriptor.toSourceElement } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryPackageSourceElement.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryPackageSourceElement.kt index 3fc9f502b7e..655f4331d06 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryPackageSourceElement.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryPackageSourceElement.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.descriptors.SourceFile import org.jetbrains.kotlin.load.java.descriptors.getImplClassNameForDeserialized import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment -import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor class KotlinJvmBinaryPackageSourceElement( private val packageFragment: LazyJavaPackageFragment @@ -33,7 +33,7 @@ class KotlinJvmBinaryPackageSourceElement( return packageFragment.binaryClasses.values.first() } - fun getContainingBinaryClass(descriptor: DeserializedCallableMemberDescriptor): KotlinJvmBinaryClass? { + fun getContainingBinaryClass(descriptor: DeserializedMemberDescriptor): KotlinJvmBinaryClass? { val name = descriptor.getImplClassNameForDeserialized() ?: return null return packageFragment.binaryClasses[name.asString()] } diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java index 98968612f81..973d6634b13 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/ExperimentalIncrementalJpsTestGenerated.java @@ -552,6 +552,12 @@ public class ExperimentalIncrementalJpsTestGenerated extends AbstractExperimenta doTest(fileName); } + @TestMetadata("internalTypealias") + public void testInternalTypealias() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/internalTypealias/"); + doTest(fileName); + } + @TestMetadata("localClassChanged") public void testLocalClassChanged() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/localClassChanged/"); diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java index 904047b95c1..f10f0b46907 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/IncrementalJpsTestGenerated.java @@ -552,6 +552,12 @@ public class IncrementalJpsTestGenerated extends AbstractIncrementalJpsTest { doTest(fileName); } + @TestMetadata("internalTypealias") + public void testInternalTypealias() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/internalTypealias/"); + doTest(fileName); + } + @TestMetadata("localClassChanged") public void testLocalClassChanged() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("jps-plugin/testData/incremental/pureKotlin/localClassChanged/"); diff --git a/jps-plugin/testData/incremental/pureKotlin/internalTypealias/TypeAlias.kt b/jps-plugin/testData/incremental/pureKotlin/internalTypealias/TypeAlias.kt new file mode 100644 index 00000000000..43ff16c5829 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/internalTypealias/TypeAlias.kt @@ -0,0 +1,3 @@ +package foo + +internal typealias TypeAlias = Int \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/internalTypealias/build.log b/jps-plugin/testData/incremental/pureKotlin/internalTypealias/build.log new file mode 100644 index 00000000000..01bfe530691 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/internalTypealias/build.log @@ -0,0 +1,11 @@ +================ Step #1 ================= + +Cleaning output files: + out/production/module/META-INF/module.kotlin_module + out/production/module/foo/UseTypeAliasKt.class +End of files +Compiling files: + src/useTypeAlias.kt +End of files +Exit code: OK +------------------------------------------ \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/internalTypealias/useTypeAlias.kt b/jps-plugin/testData/incremental/pureKotlin/internalTypealias/useTypeAlias.kt new file mode 100644 index 00000000000..2cd8e56b071 --- /dev/null +++ b/jps-plugin/testData/incremental/pureKotlin/internalTypealias/useTypeAlias.kt @@ -0,0 +1,5 @@ +package foo + +internal fun useTypeAlias(x: TypeAlias) { + x.toString() +} \ No newline at end of file diff --git a/jps-plugin/testData/incremental/pureKotlin/internalTypealias/useTypeAlias.kt.touch b/jps-plugin/testData/incremental/pureKotlin/internalTypealias/useTypeAlias.kt.touch new file mode 100644 index 00000000000..e69de29bb2d