[IR] Add more tests for inline/value classes secondary constructors
Signed-off-by: Evgeniy.Zhelenskiy <Evgeniy.Zhelenskiy@jetbrains.com> #KT-55333
This commit is contained in:
committed by
Space Team
parent
f75b72990e
commit
8c748bfea4
+3
-3
@@ -126,7 +126,7 @@ abstract class AnnotationCodegen(
|
||||
if (declaration is IrValueParameter) {
|
||||
val parent = declaration.parent as IrDeclaration
|
||||
if (isInvisibleForNullabilityAnalysis(parent)) return
|
||||
if (isMovedReceiverParameterOfStaticInlineClassReplacement(declaration, parent)) return
|
||||
if (isMovedReceiverParameterOfStaticValueClassReplacement(declaration, parent)) return
|
||||
}
|
||||
|
||||
// No need to annotate annotation methods since they're always non-null
|
||||
@@ -165,8 +165,8 @@ abstract class AnnotationCodegen(
|
||||
generateAnnotationIfNotPresent(annotationDescriptorsAlreadyPresent, annotationClass)
|
||||
}
|
||||
|
||||
private fun isMovedReceiverParameterOfStaticInlineClassReplacement(parameter: IrValueParameter, parent: IrDeclaration): Boolean =
|
||||
parent.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT &&
|
||||
private fun isMovedReceiverParameterOfStaticValueClassReplacement(parameter: IrValueParameter, parent: IrDeclaration): Boolean =
|
||||
(parent.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT || parent.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT) &&
|
||||
parameter.origin == IrDeclarationOrigin.MOVED_DISPATCH_RECEIVER
|
||||
|
||||
private fun generateAnnotationIfNotPresent(annotationDescriptorsAlreadyPresent: MutableSet<String>, annotationClass: Class<*>) {
|
||||
|
||||
+7
-3
@@ -12,8 +12,10 @@ import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmLoweredStatementOrigin
|
||||
import org.jetbrains.kotlin.backend.jvm.ir.getJvmVisibilityOfDefaultArgumentStub
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||
import org.jetbrains.kotlin.ir.util.isFinalClass
|
||||
import org.jetbrains.kotlin.ir.util.isTopLevelDeclaration
|
||||
|
||||
@@ -21,7 +23,9 @@ class JvmDefaultArgumentStubGenerator(override val context: JvmBackendContext) :
|
||||
override fun defaultArgumentStubVisibility(function: IrFunction) = function.getJvmVisibilityOfDefaultArgumentStub()
|
||||
|
||||
override fun useConstructorMarker(function: IrFunction): Boolean =
|
||||
function is IrConstructor || function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR
|
||||
function is IrConstructor ||
|
||||
function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR ||
|
||||
function.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR
|
||||
|
||||
override fun IrBlockBodyBuilder.generateSuperCallHandlerCheckIfNeeded(
|
||||
irFunction: IrFunction,
|
||||
|
||||
+5
-2
@@ -31,8 +31,11 @@ class JvmDefaultParameterInjector(context: JvmBackendContext) :
|
||||
override fun defaultArgumentStubVisibility(function: IrFunction) = function.getJvmVisibilityOfDefaultArgumentStub()
|
||||
|
||||
override fun useConstructorMarker(function: IrFunction): Boolean =
|
||||
function is IrConstructor || function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR
|
||||
function is IrConstructor ||
|
||||
function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR ||
|
||||
function.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR
|
||||
|
||||
override fun isStatic(function: IrFunction): Boolean =
|
||||
function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT
|
||||
function.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT ||
|
||||
function.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT
|
||||
}
|
||||
|
||||
+5
-1
@@ -126,6 +126,7 @@ class MethodSignatureMapper(private val context: JvmBackendContext, private val
|
||||
private fun IrSimpleFunction.getInternalFunctionForManglingIfNeeded(): IrSimpleFunction? {
|
||||
if (visibility == DescriptorVisibilities.INTERNAL &&
|
||||
origin != JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_CONSTRUCTOR &&
|
||||
origin != JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_CONSTRUCTOR &&
|
||||
origin != JvmLoweredDeclarationOrigin.SYNTHETIC_METHOD_FOR_PROPERTY_OR_TYPEALIAS_ANNOTATIONS &&
|
||||
origin != IrDeclarationOrigin.PROPERTY_DELEGATE &&
|
||||
!isPublishedApi()
|
||||
@@ -446,7 +447,10 @@ class MethodSignatureMapper(private val context: JvmBackendContext, private val
|
||||
findSuperDeclaration(function, isSuperCall, context.state.jvmDefaultMode)
|
||||
|
||||
private fun getJvmMethodNameIfSpecial(irFunction: IrSimpleFunction): String? {
|
||||
if (irFunction.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT) {
|
||||
if (
|
||||
irFunction.origin == JvmLoweredDeclarationOrigin.STATIC_INLINE_CLASS_REPLACEMENT ||
|
||||
irFunction.origin == JvmLoweredDeclarationOrigin.STATIC_MULTI_FIELD_VALUE_CLASS_REPLACEMENT
|
||||
) {
|
||||
return null
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user