[IR] Avoid ir.actualization depending on frontend module
^KT-62292
This commit is contained in:
committed by
Space Team
parent
021a00f4ff
commit
b38ebbb853
@@ -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())
|
||||
}
|
||||
|
||||
|
||||
+11
-1
@@ -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<ModuleDescriptor> { 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
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -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")
|
||||
|
||||
+2
-2
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user