diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt index a31131e8a17..cdf86433efa 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MultifileClassCodegen.kt @@ -37,6 +37,7 @@ import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStat import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.MemberComparator +import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.jvm.diagnostics.MultifileClass import org.jetbrains.kotlin.resolve.jvm.diagnostics.MultifileClassPart import org.jetbrains.kotlin.serialization.DescriptorSerializer @@ -265,7 +266,7 @@ public class MultifileClassCodegen( if (!IncrementalCompilation.ENABLED) null else state.module.getPackage(packageFqName).fragments.firstOrNull { fragment -> fragment is IncrementalPackageFragmentProvider.IncrementalPackageFragment && - fragment.moduleId == state.moduleId + fragment.target == state.targetId } } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt index d200efc58fc..4a64ad7afb4 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt @@ -33,48 +33,48 @@ public object JvmFileClassUtil { public val JVM_MULTIFILE_CLASS: FqName = FqName("kotlin.jvm.JvmMultifileClass") public val JVM_MULTIFILE_CLASS_SHORT = JVM_MULTIFILE_CLASS.shortName().asString() - public @jvmStatic fun getFileClassInfo(file: JetFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations?): JvmFileClassInfo = + public @JvmStatic fun getFileClassInfo(file: JetFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations?): JvmFileClassInfo = if (jvmFileClassAnnotations != null) getFileClassInfoForAnnotation(file, jvmFileClassAnnotations) else getDefaultFileClassInfo(file) - public @jvmStatic fun getFileClassInfoForAnnotation(file: JetFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations): JvmFileClassInfo = + public @JvmStatic fun getFileClassInfoForAnnotation(file: JetFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations): JvmFileClassInfo = if (jvmFileClassAnnotations.multipleFiles) JvmMultifileClassPartInfo(getHiddenPartFqName(file, jvmFileClassAnnotations), getFacadeFqName(file, jvmFileClassAnnotations)) else JvmSimpleFileClassInfo(getFacadeFqName(file, jvmFileClassAnnotations), true) - public @jvmStatic fun getDefaultFileClassInfo(file: JetFile): JvmFileClassInfo = + public @JvmStatic fun getDefaultFileClassInfo(file: JetFile): JvmFileClassInfo = JvmSimpleFileClassInfo(PackagePartClassUtils.getPackagePartFqName(file.packageFqName, file.name), false) - public @jvmStatic fun getFacadeFqName(file: JetFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations): FqName = + public @JvmStatic fun getFacadeFqName(file: JetFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations): FqName = file.packageFqName.child(Name.identifier(jvmFileClassAnnotations.name)) - public @jvmStatic fun getHiddenPartFqName(file: JetFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations): FqName = + public @JvmStatic fun getHiddenPartFqName(file: JetFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations): FqName = file.packageFqName.child(Name.identifier(manglePartName(jvmFileClassAnnotations.name, file.name))) - public @jvmStatic fun manglePartName(facadeName: String, fileName: String): String = + public @JvmStatic fun manglePartName(facadeName: String, fileName: String): String = "${facadeName}__${PackagePartClassUtils.getFilePartShortName(fileName)}" - public @jvmStatic fun parseJvmFileClass(annotations: Annotations): ParsedJmvFileClassAnnotations? { + public @JvmStatic fun parseJvmFileClass(annotations: Annotations): ParsedJmvFileClassAnnotations? { val jvmName = annotations.findAnnotation(JVM_NAME) ?: return null val jvmMultifileClass = annotations.findAnnotation(JVM_MULTIFILE_CLASS) return parseJvmFileClass(jvmName, jvmMultifileClass) } - public @jvmStatic fun parseJvmFileClass(jvmName: AnnotationDescriptor, jvmMultifileClass: AnnotationDescriptor?): ParsedJmvFileClassAnnotations? { + public @JvmStatic fun parseJvmFileClass(jvmName: AnnotationDescriptor, jvmMultifileClass: AnnotationDescriptor?): ParsedJmvFileClassAnnotations? { val jvmNameArgument = jvmName.allValueArguments.values().singleOrNull() ?: return null val name = (jvmNameArgument as? StringValue)?.value ?: return null val isMultifileClassPart = jvmMultifileClass != null return ParsedJmvFileClassAnnotations(name, isMultifileClassPart) } - public @jvmStatic fun getFileClassInfoNoResolve(file: JetFile): JvmFileClassInfo = + public @JvmStatic fun getFileClassInfoNoResolve(file: JetFile): JvmFileClassInfo = getFileClassInfo(file, parseJvmNameOnFileNoResolve(file)) - public @jvmStatic fun parseJvmNameOnFileNoResolve(file: JetFile): ParsedJmvFileClassAnnotations? { + public @JvmStatic fun parseJvmNameOnFileNoResolve(file: JetFile): ParsedJmvFileClassAnnotations? { val jvmName = findAnnotationEntryOnFileNoResolve(file, JVM_NAME_SHORT) ?: return null val nameExpr = jvmName.valueArguments.firstOrNull()?.getArgumentExpression() ?: return null val name = getLiteralStringFromRestrictedConstExpression(nameExpr) ?: return null @@ -82,12 +82,12 @@ public object JvmFileClassUtil { return ParsedJmvFileClassAnnotations(name, isMultifileClassPart) } - public @jvmStatic fun findAnnotationEntryOnFileNoResolve(file: JetFile, shortName: String): JetAnnotationEntry? = + public @JvmStatic fun findAnnotationEntryOnFileNoResolve(file: JetFile, shortName: String): JetAnnotationEntry? = file.fileAnnotationList?.annotationEntries?.firstOrNull { it.calleeExpression?.constructorReferenceExpression?.getReferencedName() == shortName } - private @jvmStatic fun getLiteralStringFromRestrictedConstExpression(argumentExpression: JetExpression?): String? { + private @JvmStatic fun getLiteralStringFromRestrictedConstExpression(argumentExpression: JetExpression?): String? { val stringTemplate = argumentExpression as? JetStringTemplateExpression ?: return null val stringTemplateEntries = stringTemplate.entries if (stringTemplateEntries.size() != 1) return null @@ -95,7 +95,7 @@ public object JvmFileClassUtil { return singleEntry.text } - public @jvmStatic fun collectFileAnnotations(file: JetFile, bindingContext: BindingContext): Annotations { + public @JvmStatic fun collectFileAnnotations(file: JetFile, bindingContext: BindingContext): Annotations { val fileAnnotationsList = file.fileAnnotationList ?: return Annotations.EMPTY val annotationDescriptors = arrayListOf() for (annotationEntry in fileAnnotationsList.annotationEntries) {