From 8c71d8f1262cfcd1591e5ad95f62eab524498f6c Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 6 Jul 2020 21:17:55 +0200 Subject: [PATCH] Undeprecate VariableDescriptorWithAccessors.isDelegated Apparently there's quite a few valid usages of this method outside of the compiler frontend, where manual suppression is annoying. --- .../jetbrains/kotlin/codegen/PropertyCodegen.java | 12 +++--------- .../kotlin/codegen/fakeDescriptorsForReferences.kt | 2 +- .../jetbrains/kotlin/codegen/range/RangeValues.kt | 1 - .../kotlin/codegen/state/KotlinTypeMapper.kt | 6 ++++-- .../JvmArrayVariableInLoopAssignmentChecker.kt | 2 -- .../jvm/checkers/JvmMultifileClassStateChecker.kt | 2 +- .../descriptors/impl/LocalVariableDescriptor.java | 3 --- .../calls/smartcasts/DataFlowValueKindUtils.kt | 1 - .../common/IrElementTransformerVoidWithContext.kt | 4 ++-- .../kotlin/psi2ir/generators/AssignmentGenerator.kt | 6 ++++-- .../kotlin/psi2ir/generators/CallGenerator.kt | 3 +-- .../generators/ReflectionReferencesGenerator.kt | 6 ++++-- .../kotlin/ir/descriptors/IrFunctionFactory.kt | 4 +++- .../kotlin/ir/util/DeclarationStubGenerator.kt | 5 ++--- .../src/org/jetbrains/kotlin/ir/util/SymbolTable.kt | 2 +- .../kotlin/serialization/DescriptorSerializer.kt | 2 +- .../descriptors/VariableDescriptorWithAccessors.kt | 2 +- .../descriptors/DeserializedMemberDescriptor.kt | 2 +- .../src/kotlin/reflect/jvm/internal/KPropertyImpl.kt | 2 +- .../compilation/CodeFragmentParameterAnalyzer.kt | 6 +----- .../commonizer/cir/factory/CirPropertyFactory.kt | 7 +++++-- .../commonizer/utils/ComparingDeclarationsVisitor.kt | 1 - 22 files changed, 36 insertions(+), 45 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java index 9e2bc1ce15e..8af7ea94686 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyCodegen.java @@ -210,7 +210,6 @@ public class PropertyCodegen { if (kind == OwnerKind.DEFAULT_IMPLS && isDefaultAccessor) return false; // Delegated or extension properties can only be referenced via accessors - //noinspection deprecation if (descriptor.isDelegated() || descriptor.getExtensionReceiverParameter() != null) return true; // Companion object properties should have accessors for non-private properties because these properties can be referenced @@ -337,11 +336,8 @@ public class PropertyCodegen { return; } - @SuppressWarnings("deprecation") - boolean isDelegate = descriptor.isDelegated(); - Object defaultValue; - if (isDelegate) { + if (descriptor.isDelegated()) { defaultValue = null; } else if (Boolean.TRUE.equals(bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, descriptor))) { @@ -357,7 +353,7 @@ public class PropertyCodegen { return; } - generateBackingField(descriptor, isDelegate, defaultValue, isBackingFieldOwner); + generateBackingField(descriptor, descriptor.isDelegated(), defaultValue, isBackingFieldOwner); } // Annotations on properties are stored in bytecode on an empty synthetic method. This way they're still @@ -522,9 +518,7 @@ public class PropertyCodegen { FunctionGenerationStrategy strategy; if (accessor == null || !accessor.hasBody()) { - @SuppressWarnings("deprecation") - boolean isDelegated = descriptor.getCorrespondingProperty().isDelegated(); - if (isDelegated) { + if (descriptor.getCorrespondingProperty().isDelegated()) { strategy = new DelegatedPropertyAccessorStrategy(state, descriptor); } else { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/fakeDescriptorsForReferences.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/fakeDescriptorsForReferences.kt index 79ca18b5e99..aa16027ead3 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/fakeDescriptorsForReferences.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/fakeDescriptorsForReferences.kt @@ -128,7 +128,7 @@ fun createFreeFakeLocalPropertyDescriptor(descriptor: LocalVariableDescriptor, t val property = PropertyDescriptorImpl.create( descriptor.containingDeclaration, descriptor.annotations, Modality.FINAL, descriptor.visibility, descriptor.isVar, descriptor.name, CallableMemberDescriptor.Kind.DECLARATION, descriptor.source, false, descriptor.isConst, - false, false, false, @Suppress("DEPRECATION") descriptor.isDelegated + false, false, false, descriptor.isDelegated ) property.setType( descriptor.type, descriptor.typeParameters, diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/range/RangeValues.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/range/RangeValues.kt index 08d6abdff3a..fa039f4d217 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/range/RangeValues.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/range/RangeValues.kt @@ -74,7 +74,6 @@ fun ExpressionCodegen.createRangeValueForExpression(rangeExpression: KtExpressio } } -@Suppress("DEPRECATION") fun isLocalVarReference(rangeExpression: KtExpression, bindingContext: BindingContext): Boolean { if (rangeExpression !is KtSimpleNameExpression) return false val resultingDescriptor = rangeExpression.getResolvedCall(bindingContext)?.resultingDescriptor ?: return false diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt index 635e0976f27..9b02e095d76 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/state/KotlinTypeMapper.kt @@ -23,7 +23,9 @@ import org.jetbrains.kotlin.codegen.signature.BothSignatureWriter import org.jetbrains.kotlin.codegen.signature.JvmSignatureWriter import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.descriptors.impl.* +import org.jetbrains.kotlin.descriptors.impl.LocalVariableAccessorDescriptor +import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor +import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature import org.jetbrains.kotlin.load.java.JvmAbi @@ -1208,7 +1210,7 @@ class KotlinTypeMapper @JvmOverloads constructor( return StackValue.sharedTypeForType(mapType(receiverParameter.type)) } - if (descriptor is LocalVariableDescriptor && @Suppress("DEPRECATION") descriptor.isDelegated) { + if (descriptor is LocalVariableDescriptor && descriptor.isDelegated) { return null } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmArrayVariableInLoopAssignmentChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmArrayVariableInLoopAssignmentChecker.kt index 6552c2e0f20..4894ddc2421 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmArrayVariableInLoopAssignmentChecker.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmArrayVariableInLoopAssignmentChecker.kt @@ -31,7 +31,6 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall import org.jetbrains.kotlin.resolve.calls.checkers.AdditionalTypeChecker import org.jetbrains.kotlin.resolve.calls.context.ResolutionContext import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValue -import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm import org.jetbrains.kotlin.types.KotlinType @@ -52,7 +51,6 @@ object JvmArrayVariableInLoopAssignmentChecker : AdditionalTypeChecker { val resolvedCall = lhsExpression.getResolvedCall(c.trace.bindingContext) ?: return val variableDescriptor = resolvedCall.resultingDescriptor as? LocalVariableDescriptor ?: return if (variableDescriptor is SyntheticFieldDescriptor) return - @Suppress("DEPRECATION") if (variableDescriptor.isDelegated) return val variableType = variableDescriptor.returnType diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmMultifileClassStateChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmMultifileClassStateChecker.kt index 0d06a97090a..c1b984aaab6 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmMultifileClassStateChecker.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmMultifileClassStateChecker.kt @@ -27,7 +27,7 @@ object JvmMultifileClassStateChecker : DeclarationChecker { if (!JvmFileClassUtil.getFileClassInfoNoResolve(declaration.containingKtFile).withJvmMultifileClass) return - if (@Suppress("DEPRECATION") descriptor.isDelegated || + if (descriptor.isDelegated || context.trace.bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, descriptor) == true) { context.trace.report(ErrorsJvm.STATE_IN_MULTIFILE_CLASS.on(declaration)) } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/LocalVariableDescriptor.java b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/LocalVariableDescriptor.java index ad254f40667..0c2d3cf2ae0 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/LocalVariableDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/LocalVariableDescriptor.java @@ -108,10 +108,7 @@ public class LocalVariableDescriptor extends VariableDescriptorWithInitializerIm return setter; } - // This override is not deprecated because local variables can only come from sources, - // and we can be sure that they won't be recompiled independently @Override - @SuppressWarnings("deprecation") public boolean isDelegated() { return isDelegated; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowValueKindUtils.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowValueKindUtils.kt index 2881be339f1..63869c67b98 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowValueKindUtils.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/smartcasts/DataFlowValueKindUtils.kt @@ -41,7 +41,6 @@ internal fun VariableDescriptor.variableKind( return propertyKind(usageModule) } - @Suppress("DEPRECATION") if (this is LocalVariableDescriptor && this.isDelegated) { // Local delegated property: normally unstable, but can be treated as stable in legacy mode return if (languageVersionSettings.supportsFeature(LanguageFeature.ProhibitSmartcastsOnLocalDelegatedProperty)) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrElementTransformerVoidWithContext.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrElementTransformerVoidWithContext.kt index 7e1e30556e2..de4b4a23fd5 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrElementTransformerVoidWithContext.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/IrElementTransformerVoidWithContext.kt @@ -16,9 +16,9 @@ package org.jetbrains.kotlin.backend.common -import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrStatement +import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.builders.Scope import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.symbols.* @@ -167,7 +167,7 @@ abstract class IrElementVisitorVoidWithContext : IrElementVisitorVoid { } final override fun visitField(declaration: IrField) { - @Suppress("DEPRECATION") val isDelegated = declaration.descriptor.isDelegated + val isDelegated = declaration.descriptor.isDelegated if (isDelegated) scopeStack.push(createScope(declaration)) visitFieldNew(declaration) if (isDelegated) scopeStack.pop() diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AssignmentGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AssignmentGenerator.kt index ceb7d33b528..ee952ac3c5e 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AssignmentGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/AssignmentGenerator.kt @@ -17,7 +17,10 @@ package org.jetbrains.kotlin.psi2ir.generators import com.intellij.psi.tree.IElementType -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.ClassDescriptor +import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor +import org.jetbrains.kotlin.descriptors.ValueDescriptor import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor import org.jetbrains.kotlin.ir.builders.irBlock @@ -191,7 +194,6 @@ class AssignmentGenerator(statementGenerator: StatementGenerator) : StatementGen createBackingFieldLValue(ktExpr, descriptor.propertyDescriptor, receiverValue, origin) } is LocalVariableDescriptor -> - @Suppress("DEPRECATION") if (descriptor.isDelegated) DelegatedLocalPropertyLValue( context, diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt index b644e351b5d..e1d3c3ee552 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/CallGenerator.kt @@ -36,7 +36,7 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument import org.jetbrains.kotlin.resolve.calls.tasks.isDynamic import org.jetbrains.kotlin.resolve.calls.util.FakeCallableDescriptorForObject import org.jetbrains.kotlin.resolve.descriptorUtil.classValueType -import org.jetbrains.kotlin.types.* +import org.jetbrains.kotlin.types.KotlinType import java.util.* class CallGenerator(statementGenerator: StatementGenerator) : StatementGeneratorExtension(statementGenerator) { @@ -120,7 +120,6 @@ class CallGenerator(statementGenerator: StatementGenerator) : StatementGenerator typeArguments: Map?, origin: IrStatementOrigin? = null ) = - @Suppress("DEPRECATION") if (descriptor is LocalVariableDescriptor && descriptor.isDelegated) { val getterDescriptor = descriptor.getter!! val getterSymbol = context.symbolTable.referenceFunction(getterDescriptor.original) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt index 5fc71ddb08e..0c34738c509 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt @@ -22,7 +22,10 @@ import org.jetbrains.kotlin.builtins.isKFunctionType import org.jetbrains.kotlin.builtins.isKSuspendFunctionType import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.IrStatement -import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin +import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction +import org.jetbrains.kotlin.ir.declarations.IrValueParameter +import org.jetbrains.kotlin.ir.declarations.MetadataSource import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl import org.jetbrains.kotlin.ir.descriptors.WrappedSimpleFunctionDescriptor @@ -486,7 +489,6 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St } } - @Suppress("DEPRECATION") private fun getFieldForPropertyReference(originalProperty: PropertyDescriptor) = // NB this is a hack, we really don't know if an arbitrary property has a backing field or not when { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt index dd2bae03b47..ffce13eda86 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrFunctionFactory.kt @@ -19,7 +19,9 @@ import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.impl.* -import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.ir.util.SYNTHETIC_OFFSET +import org.jetbrains.kotlin.ir.util.SymbolTable +import org.jetbrains.kotlin.ir.util.referenceClassifier import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyExternal diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt index 3fd8851bd06..ae87c7134fc 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt @@ -159,15 +159,14 @@ class DeclarationStubGenerator( val origin = computeOrigin(descriptor) return symbolTable.declareProperty( - UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, descriptor.original, - isDelegated = @Suppress("DEPRECATION") descriptor.isDelegated + UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, descriptor.original, descriptor.isDelegated ) { IrLazyProperty( UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, it, descriptor, descriptor.name, descriptor.visibility, descriptor.modality, descriptor.isVar, descriptor.isConst, descriptor.isLateInit, - @Suppress("DEPRECATION") descriptor.isDelegated, descriptor.isEffectivelyExternal(), descriptor.isExpect, + descriptor.isDelegated, descriptor.isEffectivelyExternal(), descriptor.isExpect, isFakeOverride = (origin == IrDeclarationOrigin.FAKE_OVERRIDE), stubGenerator = this, typeTranslator = typeTranslator, bindingContext = bindingContext ) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt index c80db180aaf..34137aec898 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/SymbolTable.kt @@ -648,7 +648,7 @@ open class SymbolTable( endOffset: Int, origin: IrDeclarationOrigin, descriptor: PropertyDescriptor, - @Suppress("DEPRECATION") isDelegated: Boolean = descriptor.isDelegated, + isDelegated: Boolean = descriptor.isDelegated, propertyFactory: (IrPropertySymbol) -> IrProperty = { symbol -> IrPropertyImpl( startOffset, endOffset, origin, symbol, isDelegated = isDelegated, diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt index 20cad38073f..9abfe4e1645 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/DescriptorSerializer.kt @@ -240,7 +240,7 @@ class DescriptorSerializer private constructor( ProtoEnumFlags.modality(descriptor.modality), ProtoEnumFlags.memberKind(descriptor.kind), descriptor.isVar, hasGetter, hasSetter, hasConstant, descriptor.isConst, descriptor.isLateInit, descriptor.isExternal, - @Suppress("DEPRECATION") descriptor.isDelegated, descriptor.isExpect + descriptor.isDelegated, descriptor.isExpect ) if (flags != builder.flags) { builder.flags = flags diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/VariableDescriptorWithAccessors.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/VariableDescriptorWithAccessors.kt index 2bd04e9116c..163edd4551b 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/VariableDescriptorWithAccessors.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/VariableDescriptorWithAccessors.kt @@ -25,10 +25,10 @@ interface VariableDescriptorWithAccessors : VariableDescriptor { * Please be careful with this method. Depending on the fact that a property is delegated may be dangerous in the compiler. * Whether or not a property is delegated is neither the API or the ABI of that property, and one should be able to recompile a library * in a way that makes some non-delegated properties delegated or vice versa, without any problems at compilation time or at runtime. + * So this method should not be used in the compiler frontend in a way that would significantly alter the compilation result. * * This flag is needed for reflection however, that's why it's serialized to metadata and is exposed in this interface. */ - @Deprecated("Do not call this method in the compiler front-end.") val isDelegated: Boolean } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt index f8b918ec68e..83001481cd2 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt @@ -173,7 +173,7 @@ class DeserializedPropertyDescriptor( ): PropertyDescriptorImpl { return DeserializedPropertyDescriptor( newOwner, original, annotations, newModality, newVisibility, isVar, newName, kind, isLateInit, isConst, isExternal, - @Suppress("DEPRECATION") isDelegated, isExpect, proto, nameResolver, typeTable, versionRequirementTable, containerSource + isDelegated, isExpect, proto, nameResolver, typeTable, versionRequirementTable, containerSource ) } diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPropertyImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPropertyImpl.kt index e012609a6cb..3adccf87ef1 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPropertyImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPropertyImpl.kt @@ -79,7 +79,7 @@ internal abstract class KPropertyImpl private constructor( val javaField: Field? get() = _javaField() protected fun computeDelegateField(): Field? = - if (@Suppress("DEPRECATION") descriptor.isDelegated) javaField else null + if (descriptor.isDelegated) javaField else null protected fun getDelegate(field: Field?, receiver: Any?): Any? = try { diff --git a/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt index 586c7e0b883..2f52b9294f7 100644 --- a/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt +++ b/idea/jvm-debugger/jvm-debugger-evaluation/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/CodeFragmentParameterAnalyzer.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor import org.jetbrains.kotlin.idea.debugger.evaluate.* -import org.jetbrains.kotlin.idea.debugger.evaluate.DebuggerFieldPropertyDescriptor import org.jetbrains.kotlin.idea.debugger.evaluate.KotlinCodeFragmentFactory.Companion.FAKE_JAVA_CONTEXT_FUNCTION_NAME import org.jetbrains.kotlin.idea.debugger.evaluate.compilation.CodeFragmentParameter.* import org.jetbrains.kotlin.idea.debugger.safeLocation @@ -313,11 +312,8 @@ class CodeFragmentParameterAnalyzer( val isLValue = unwrappedExpression?.let { isAssignmentLValue(it) } ?: false parameters.getOrPut(target) { - val type = target.type - - @Suppress("DEPRECATION") val kind = if (target is LocalVariableDescriptor && target.isDelegated) Kind.DELEGATED else Kind.ORDINARY - Smart(Dumb(kind, target.name.asString()), type, target, isLValue) + Smart(Dumb(kind, target.name.asString()), target.type, target, isLValue) } } else -> null diff --git a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirPropertyFactory.kt b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirPropertyFactory.kt index e4d02805d3a..dcbc434bf39 100644 --- a/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirPropertyFactory.kt +++ b/native/commonizer/src/org/jetbrains/kotlin/descriptors/commonizer/cir/factory/CirPropertyFactory.kt @@ -5,7 +5,10 @@ package org.jetbrains.kotlin.descriptors.commonizer.cir.factory -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor +import org.jetbrains.kotlin.descriptors.Modality +import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.descriptors.commonizer.cir.* import org.jetbrains.kotlin.descriptors.commonizer.cir.impl.CirPropertyImpl import org.jetbrains.kotlin.descriptors.commonizer.utils.checkConstantSupportedInCommonization @@ -38,7 +41,7 @@ object CirPropertyFactory { isVar = source.isVar, isLateInit = source.isLateInit, isConst = source.isConst, - isDelegate = @Suppress("DEPRECATION") source.isDelegated, + isDelegate = source.isDelegated, getter = source.getter?.let(CirPropertyGetterFactory::create), setter = source.setter?.let(CirPropertySetterFactory::create), backingFieldAnnotations = source.backingField?.annotations?.map(CirAnnotationFactory::create), diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/ComparingDeclarationsVisitor.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/ComparingDeclarationsVisitor.kt index c7fb7e02b0b..497c992f9a5 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/ComparingDeclarationsVisitor.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/utils/ComparingDeclarationsVisitor.kt @@ -333,7 +333,6 @@ internal class ComparingDeclarationsVisitor( // see org.jetbrains.kotlin.resolve.DelegationResolver } */ - @Suppress("DEPRECATION") context.assertFieldsEqual(expected::isDelegated, actual::isDelegated) visitAnnotations(