diff --git a/compiler/ir/ir.actualization/build.gradle.kts b/compiler/ir/ir.actualization/build.gradle.kts index 4c57cd85080..5c401f12806 100644 --- a/compiler/ir/ir.actualization/build.gradle.kts +++ b/compiler/ir/ir.actualization/build.gradle.kts @@ -8,7 +8,8 @@ dependencies { api(project(":compiler:ir.tree")) api(project(":core:compiler.common")) implementation(project(":compiler:resolution.common")) - implementation(project(":compiler:frontend")) + implementation(project(":compiler:frontend.common")) + implementation(project(":compiler:frontend.common-psi")) compileOnly(intellijCore()) } diff --git a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizationErrors.kt b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizationErrors.kt index f3e11ac29fe..25874a754dc 100644 --- a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizationErrors.kt +++ b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizationErrors.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.common.actualizer import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.diagnostics.* import org.jetbrains.kotlin.diagnostics.rendering.* @@ -14,6 +15,7 @@ import org.jetbrains.kotlin.ir.declarations.IrValueParameter import org.jetbrains.kotlin.ir.expressions.IrConstructorCall import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.types.classFqName +import org.jetbrains.kotlin.platform.isCommon import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualAnnotationsIncompatibilityType import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility @@ -36,7 +38,7 @@ internal object KtDefaultIrActualizationErrorMessages : BaseDiagnosticRendererFa IrActualizationErrors.NO_ACTUAL_FOR_EXPECT, "Expected {0} has no actual declaration in module {1}", CommonRenderers.STRING, - Renderers.MODULE_WITH_PLATFORM, + IrActualizationDiagnosticRenderers.MODULE_WITH_PLATFORM, ) map.put( IrActualizationErrors.EXPECT_ACTUAL_MISMATCH, @@ -85,4 +87,12 @@ internal object IrActualizationDiagnosticRenderers { } "Annotation `$expectAnnotationFqName` $reason" } + + @JvmField + val MODULE_WITH_PLATFORM = Renderer { module -> + val platform = module.platform + val moduleName = module.getCapability(ModuleInfo.Capability)?.displayedName ?: module.name.asString() + val platformNameIfAny = if (platform == null || platform.isCommon()) "" else " for " + platform.single().platformName + moduleName + platformNameIfAny + } } diff --git a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt index 352f751905b..52c83f46978 100644 --- a/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt +++ b/compiler/ir/ir.actualization/src/main/kotlin/org/jetbrains/kotlin/backend/common/actualizer/IrActualizerUtils.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.types.IrTypeSystemContext import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.resolve.calls.mpp.AbstractExpectActualMatcher import org.jetbrains.kotlin.resolve.multiplatform.* import org.jetbrains.kotlin.utils.addToStdlib.runIf @@ -164,7 +165,7 @@ internal fun IrDiagnosticReporter.reportActualAnnotationConflictingDefaultArgume internal fun IrElement.containsOptionalExpectation(): Boolean { return this is IrClass && this.kind == ClassKind.ANNOTATION_CLASS && - this.hasAnnotation(OptionalAnnotationUtil.OPTIONAL_EXPECTATION_FQ_NAME) + this.hasAnnotation(StandardClassIds.Annotations.OptionalExpectation) } @Suppress("UNCHECKED_CAST") diff --git a/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/OptionalAnnotationUtil.kt b/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/OptionalAnnotationUtil.kt index 5dd6f47846a..d555d6e7dc2 100644 --- a/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/OptionalAnnotationUtil.kt +++ b/compiler/resolution/src/org/jetbrains/kotlin/resolve/multiplatform/OptionalAnnotationUtil.kt @@ -8,11 +8,11 @@ package org.jetbrains.kotlin.resolve.multiplatform import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.DeclarationDescriptor -import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.StandardClassIds import org.jetbrains.kotlin.resolve.descriptorUtil.module object OptionalAnnotationUtil { - val OPTIONAL_EXPECTATION_FQ_NAME = FqName("kotlin.OptionalExpectation") + val OPTIONAL_EXPECTATION_FQ_NAME = StandardClassIds.Annotations.OptionalExpectation.asSingleFqName() @JvmStatic fun shouldGenerateExpectClass(descriptor: ClassDescriptor): Boolean {