[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(":compiler:ir.tree"))
|
||||||
api(project(":core:compiler.common"))
|
api(project(":core:compiler.common"))
|
||||||
implementation(project(":compiler:resolution.common"))
|
implementation(project(":compiler:resolution.common"))
|
||||||
implementation(project(":compiler:frontend"))
|
implementation(project(":compiler:frontend.common"))
|
||||||
|
implementation(project(":compiler:frontend.common-psi"))
|
||||||
compileOnly(intellijCore())
|
compileOnly(intellijCore())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-1
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.common.actualizer
|
package org.jetbrains.kotlin.backend.common.actualizer
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.*
|
import org.jetbrains.kotlin.diagnostics.*
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.*
|
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.expressions.IrConstructorCall
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.classFqName
|
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.ExpectActualAnnotationsIncompatibilityType
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility
|
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCheckingCompatibility
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility
|
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualMatchingCompatibility
|
||||||
@@ -36,7 +38,7 @@ internal object KtDefaultIrActualizationErrorMessages : BaseDiagnosticRendererFa
|
|||||||
IrActualizationErrors.NO_ACTUAL_FOR_EXPECT,
|
IrActualizationErrors.NO_ACTUAL_FOR_EXPECT,
|
||||||
"Expected {0} has no actual declaration in module {1}",
|
"Expected {0} has no actual declaration in module {1}",
|
||||||
CommonRenderers.STRING,
|
CommonRenderers.STRING,
|
||||||
Renderers.MODULE_WITH_PLATFORM,
|
IrActualizationDiagnosticRenderers.MODULE_WITH_PLATFORM,
|
||||||
)
|
)
|
||||||
map.put(
|
map.put(
|
||||||
IrActualizationErrors.EXPECT_ACTUAL_MISMATCH,
|
IrActualizationErrors.EXPECT_ACTUAL_MISMATCH,
|
||||||
@@ -85,4 +87,12 @@ internal object IrActualizationDiagnosticRenderers {
|
|||||||
}
|
}
|
||||||
"Annotation `$expectAnnotationFqName` $reason"
|
"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.types.IrTypeSystemContext
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
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.calls.mpp.AbstractExpectActualMatcher
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.*
|
import org.jetbrains.kotlin.resolve.multiplatform.*
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
||||||
@@ -164,7 +165,7 @@ internal fun IrDiagnosticReporter.reportActualAnnotationConflictingDefaultArgume
|
|||||||
internal fun IrElement.containsOptionalExpectation(): Boolean {
|
internal fun IrElement.containsOptionalExpectation(): Boolean {
|
||||||
return this is IrClass &&
|
return this is IrClass &&
|
||||||
this.kind == ClassKind.ANNOTATION_CLASS &&
|
this.kind == ClassKind.ANNOTATION_CLASS &&
|
||||||
this.hasAnnotation(OptionalAnnotationUtil.OPTIONAL_EXPECTATION_FQ_NAME)
|
this.hasAnnotation(StandardClassIds.Annotations.OptionalExpectation)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@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.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
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
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
|
|
||||||
object OptionalAnnotationUtil {
|
object OptionalAnnotationUtil {
|
||||||
val OPTIONAL_EXPECTATION_FQ_NAME = FqName("kotlin.OptionalExpectation")
|
val OPTIONAL_EXPECTATION_FQ_NAME = StandardClassIds.Annotations.OptionalExpectation.asSingleFqName()
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun shouldGenerateExpectClass(descriptor: ClassDescriptor): Boolean {
|
fun shouldGenerateExpectClass(descriptor: ClassDescriptor): Boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user