[JVM IR] Move SYNTHETIC_ACCESSOR origin to IrDeclarationOrigin.Companion
We want to generate synthetic accessors not only on JVM (KT-64865), so this is one of the prerequisites.
This commit is contained in:
committed by
Space Team
parent
86587a3bf2
commit
4325803262
+1
-1
@@ -400,7 +400,7 @@ abstract class AnnotationCodegen(
|
|||||||
annotated: IrAnnotationContainer,
|
annotated: IrAnnotationContainer,
|
||||||
type: IrType?
|
type: IrType?
|
||||||
) {
|
) {
|
||||||
if ((annotated as? IrDeclaration)?.origin == JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR ||
|
if ((annotated as? IrDeclaration)?.origin == IrDeclarationOrigin.SYNTHETIC_ACCESSOR ||
|
||||||
type == null || !context.config.emitJvmTypeAnnotations
|
type == null || !context.config.emitJvmTypeAnnotations
|
||||||
) {
|
) {
|
||||||
return
|
return
|
||||||
|
|||||||
+1
-2
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.backend.jvm.mapping.mapType
|
|||||||
import org.jetbrains.kotlin.backend.jvm.mapping.mapTypeAsDeclaration
|
import org.jetbrains.kotlin.backend.jvm.mapping.mapTypeAsDeclaration
|
||||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||||
import org.jetbrains.kotlin.codegen.inline.*
|
import org.jetbrains.kotlin.codegen.inline.*
|
||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
|
||||||
import org.jetbrains.kotlin.codegen.state.JvmBackendConfig
|
import org.jetbrains.kotlin.codegen.state.JvmBackendConfig
|
||||||
import org.jetbrains.kotlin.codegen.visitAnnotableParameterCount
|
import org.jetbrains.kotlin.codegen.visitAnnotableParameterCount
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
@@ -312,7 +311,7 @@ class FunctionCodegen(private val irFunction: IrFunction, private val classCodeg
|
|||||||
// Not generating parameter annotations for default stubs fixes KT-7892, though
|
// Not generating parameter annotations for default stubs fixes KT-7892, though
|
||||||
// this certainly looks like a workaround for a javac bug.
|
// this certainly looks like a workaround for a javac bug.
|
||||||
IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER,
|
IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER,
|
||||||
JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR,
|
IrDeclarationOrigin.SYNTHETIC_ACCESSOR,
|
||||||
IrDeclarationOrigin.GENERATED_SINGLE_FIELD_VALUE_CLASS_MEMBER,
|
IrDeclarationOrigin.GENERATED_SINGLE_FIELD_VALUE_CLASS_MEMBER,
|
||||||
IrDeclarationOrigin.BRIDGE,
|
IrDeclarationOrigin.BRIDGE,
|
||||||
IrDeclarationOrigin.BRIDGE_SPECIAL,
|
IrDeclarationOrigin.BRIDGE_SPECIAL,
|
||||||
|
|||||||
+1
-1
@@ -215,7 +215,7 @@ private fun IrSimpleFunction.createMultifileDelegateIfNeeded(
|
|||||||
|
|
||||||
if (DescriptorVisibilities.isPrivate(originalVisibility) ||
|
if (DescriptorVisibilities.isPrivate(originalVisibility) ||
|
||||||
name == StaticInitializersLowering.clinitName ||
|
name == StaticInitializersLowering.clinitName ||
|
||||||
origin == JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR ||
|
origin == IrDeclarationOrigin.SYNTHETIC_ACCESSOR ||
|
||||||
origin == JvmLoweredDeclarationOrigin.INLINE_LAMBDA ||
|
origin == JvmLoweredDeclarationOrigin.INLINE_LAMBDA ||
|
||||||
origin == IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA ||
|
origin == IrDeclarationOrigin.LOCAL_FUNCTION_FOR_LAMBDA ||
|
||||||
origin == IrDeclarationOrigin.PROPERTY_DELEGATE ||
|
origin == IrDeclarationOrigin.PROPERTY_DELEGATE ||
|
||||||
|
|||||||
+12
-12
@@ -147,7 +147,7 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
|
|
||||||
private fun IrConstructor.makeConstructorAccessor(
|
private fun IrConstructor.makeConstructorAccessor(
|
||||||
originForConstructorAccessor: IrDeclarationOrigin =
|
originForConstructorAccessor: IrDeclarationOrigin =
|
||||||
JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR
|
IrDeclarationOrigin.SYNTHETIC_ACCESSOR
|
||||||
): IrConstructor {
|
): IrConstructor {
|
||||||
val source = this
|
val source = this
|
||||||
|
|
||||||
@@ -158,8 +158,8 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
}.also { accessor ->
|
}.also { accessor ->
|
||||||
accessor.parent = source.parent
|
accessor.parent = source.parent
|
||||||
|
|
||||||
accessor.copyTypeParametersFrom(source, JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR)
|
accessor.copyTypeParametersFrom(source, IrDeclarationOrigin.SYNTHETIC_ACCESSOR)
|
||||||
accessor.copyValueParametersToStatic(source, JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR)
|
accessor.copyValueParametersToStatic(source, IrDeclarationOrigin.SYNTHETIC_ACCESSOR)
|
||||||
if (source.constructedClass.modality == Modality.SEALED) {
|
if (source.constructedClass.modality == Modality.SEALED) {
|
||||||
for (accessorValueParameter in accessor.valueParameters) {
|
for (accessorValueParameter in accessor.valueParameters) {
|
||||||
accessorValueParameter.annotations = emptyList()
|
accessorValueParameter.annotations = emptyList()
|
||||||
@@ -198,7 +198,7 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
return factory.buildFun {
|
return factory.buildFun {
|
||||||
startOffset = parent.startOffset
|
startOffset = parent.startOffset
|
||||||
endOffset = parent.startOffset
|
endOffset = parent.startOffset
|
||||||
origin = JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR
|
origin = IrDeclarationOrigin.SYNTHETIC_ACCESSOR
|
||||||
name = source.accessorName(superQualifierSymbol, scopes)
|
name = source.accessorName(superQualifierSymbol, scopes)
|
||||||
visibility = DescriptorVisibilities.PUBLIC
|
visibility = DescriptorVisibilities.PUBLIC
|
||||||
modality = if (parent is IrClass && parent.isJvmInterface) Modality.OPEN else Modality.FINAL
|
modality = if (parent is IrClass && parent.isJvmInterface) Modality.OPEN else Modality.FINAL
|
||||||
@@ -206,8 +206,8 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
}.also { accessor ->
|
}.also { accessor ->
|
||||||
accessor.parent = parent
|
accessor.parent = parent
|
||||||
accessor.copyAttributes(source)
|
accessor.copyAttributes(source)
|
||||||
accessor.copyTypeParametersFrom(source, JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR)
|
accessor.copyTypeParametersFrom(source, IrDeclarationOrigin.SYNTHETIC_ACCESSOR)
|
||||||
accessor.copyValueParametersToStatic(source, JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR, dispatchReceiverType)
|
accessor.copyValueParametersToStatic(source, IrDeclarationOrigin.SYNTHETIC_ACCESSOR, dispatchReceiverType)
|
||||||
accessor.returnType = source.returnType.remapTypeParameters(source, accessor)
|
accessor.returnType = source.returnType.remapTypeParameters(source, accessor)
|
||||||
|
|
||||||
accessor.body = context.irFactory.createExpressionBody(
|
accessor.body = context.irFactory.createExpressionBody(
|
||||||
@@ -246,7 +246,7 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
context.irFactory.buildFun {
|
context.irFactory.buildFun {
|
||||||
startOffset = parent.startOffset
|
startOffset = parent.startOffset
|
||||||
endOffset = parent.startOffset
|
endOffset = parent.startOffset
|
||||||
origin = JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR
|
origin = IrDeclarationOrigin.SYNTHETIC_ACCESSOR
|
||||||
name = fieldSymbol.owner.accessorNameForGetter(superQualifierSymbol)
|
name = fieldSymbol.owner.accessorNameForGetter(superQualifierSymbol)
|
||||||
visibility = DescriptorVisibilities.PUBLIC
|
visibility = DescriptorVisibilities.PUBLIC
|
||||||
modality = Modality.FINAL
|
modality = Modality.FINAL
|
||||||
@@ -257,7 +257,7 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
if (!fieldSymbol.owner.isStatic) {
|
if (!fieldSymbol.owner.isStatic) {
|
||||||
// Accessors are always to one's own fields.
|
// Accessors are always to one's own fields.
|
||||||
accessor.addValueParameter(
|
accessor.addValueParameter(
|
||||||
"\$this", parent.defaultType, JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR
|
"\$this", parent.defaultType, IrDeclarationOrigin.SYNTHETIC_ACCESSOR
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -302,7 +302,7 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
context.irFactory.buildFun {
|
context.irFactory.buildFun {
|
||||||
startOffset = parent.startOffset
|
startOffset = parent.startOffset
|
||||||
endOffset = parent.startOffset
|
endOffset = parent.startOffset
|
||||||
origin = JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR
|
origin = IrDeclarationOrigin.SYNTHETIC_ACCESSOR
|
||||||
name = fieldSymbol.owner.accessorNameForSetter(superQualifierSymbol)
|
name = fieldSymbol.owner.accessorNameForSetter(superQualifierSymbol)
|
||||||
visibility = DescriptorVisibilities.PUBLIC
|
visibility = DescriptorVisibilities.PUBLIC
|
||||||
modality = Modality.FINAL
|
modality = Modality.FINAL
|
||||||
@@ -313,11 +313,11 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
if (!fieldSymbol.owner.isStatic) {
|
if (!fieldSymbol.owner.isStatic) {
|
||||||
// Accessors are always to one's own fields.
|
// Accessors are always to one's own fields.
|
||||||
accessor.addValueParameter(
|
accessor.addValueParameter(
|
||||||
"\$this", parent.defaultType, JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR
|
"\$this", parent.defaultType, IrDeclarationOrigin.SYNTHETIC_ACCESSOR
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
accessor.addValueParameter("<set-?>", fieldSymbol.owner.type, JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR)
|
accessor.addValueParameter("<set-?>", fieldSymbol.owner.type, IrDeclarationOrigin.SYNTHETIC_ACCESSOR)
|
||||||
|
|
||||||
accessor.body = createAccessorBodyForSetter(fieldSymbol.owner, accessor, superQualifierSymbol)
|
accessor.body = createAccessorBodyForSetter(fieldSymbol.owner, accessor, superQualifierSymbol)
|
||||||
}.symbol
|
}.symbol
|
||||||
@@ -471,7 +471,7 @@ class CachedSyntheticDeclarations(private val context: JvmBackendContext) {
|
|||||||
|
|
||||||
private val IrConstructor.isOrShouldBeHiddenDueToOrigin: Boolean
|
private val IrConstructor.isOrShouldBeHiddenDueToOrigin: Boolean
|
||||||
get() = !(origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER ||
|
get() = !(origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER ||
|
||||||
origin == JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR ||
|
origin == IrDeclarationOrigin.SYNTHETIC_ACCESSOR ||
|
||||||
origin == JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR ||
|
origin == JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR ||
|
||||||
origin == IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB)
|
origin == IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB)
|
||||||
|
|
||||||
|
|||||||
-1
@@ -14,7 +14,6 @@ object JvmLoweredDeclarationOrigin {
|
|||||||
val FIELD_FOR_OUTER_THIS by IrDeclarationOriginImpl
|
val FIELD_FOR_OUTER_THIS by IrDeclarationOriginImpl
|
||||||
val LAMBDA_IMPL by IrDeclarationOriginImpl
|
val LAMBDA_IMPL by IrDeclarationOriginImpl
|
||||||
val FUNCTION_REFERENCE_IMPL by IrDeclarationOriginImpl.Synthetic
|
val FUNCTION_REFERENCE_IMPL by IrDeclarationOriginImpl.Synthetic
|
||||||
val SYNTHETIC_ACCESSOR by IrDeclarationOriginImpl.Synthetic
|
|
||||||
val SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR by IrDeclarationOriginImpl.Synthetic
|
val SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR by IrDeclarationOriginImpl.Synthetic
|
||||||
val SYNTHETIC_MARKER_PARAMETER by IrDeclarationOriginImpl.Synthetic
|
val SYNTHETIC_MARKER_PARAMETER by IrDeclarationOriginImpl.Synthetic
|
||||||
val TO_ARRAY by IrDeclarationOriginImpl
|
val TO_ARRAY by IrDeclarationOriginImpl
|
||||||
|
|||||||
+1
-1
@@ -62,7 +62,7 @@ private val BRIDGE_ORIGINS = setOf(
|
|||||||
IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER,
|
IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER,
|
||||||
JvmLoweredDeclarationOrigin.JVM_STATIC_WRAPPER,
|
JvmLoweredDeclarationOrigin.JVM_STATIC_WRAPPER,
|
||||||
JvmLoweredDeclarationOrigin.JVM_OVERLOADS_WRAPPER,
|
JvmLoweredDeclarationOrigin.JVM_OVERLOADS_WRAPPER,
|
||||||
JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR,
|
IrDeclarationOrigin.SYNTHETIC_ACCESSOR,
|
||||||
JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR,
|
JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR_FOR_HIDDEN_CONSTRUCTOR,
|
||||||
JvmLoweredDeclarationOrigin.SUPER_INTERFACE_METHOD_BRIDGE,
|
JvmLoweredDeclarationOrigin.SUPER_INTERFACE_METHOD_BRIDGE,
|
||||||
IrDeclarationOrigin.BRIDGE,
|
IrDeclarationOrigin.BRIDGE,
|
||||||
|
|||||||
@@ -95,6 +95,12 @@ interface IrDeclarationOrigin {
|
|||||||
val LOWERED_SUSPEND_FUNCTION by IrDeclarationOriginImpl.Synthetic
|
val LOWERED_SUSPEND_FUNCTION by IrDeclarationOriginImpl.Synthetic
|
||||||
|
|
||||||
val SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT by IrDeclarationOriginImpl.Synthetic
|
val SHARED_VARIABLE_IN_EVALUATOR_FRAGMENT by IrDeclarationOriginImpl.Synthetic
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used on synthetic accessor functions generated in place of references to e.g. private symbols in non-private inline functions,
|
||||||
|
* or `super` calls from lambdas and inline functions.
|
||||||
|
*/
|
||||||
|
val SYNTHETIC_ACCESSOR by IrDeclarationOriginImpl.Synthetic
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user