K1: report ENUM_DECLARING_CLASS_DEPRECATED on enum entry properly

#KT-53807 Fixed
This commit is contained in:
Mikhail Glukhikh
2022-09-09 11:31:34 +02:00
committed by Space
parent 62f67e46fd
commit 769a2ca9b1
4 changed files with 38 additions and 1 deletions
@@ -23,7 +23,10 @@ object EnumDeclaringClassDeprecationChecker : CallChecker {
if (resultingDescriptor !is PropertyDescriptor || resultingDescriptor.kind != CallableMemberDescriptor.Kind.SYNTHESIZED) return
val extensionReceiver = resultingDescriptor.extensionReceiverParameter?.value as? ExtensionReceiver ?: return
if (resultingDescriptor.name.asString() != "declaringClass") return
if (extensionReceiver.type.constructor.declarationDescriptor.classId != StandardClassIds.Enum) return
val extensionReceiverConstructor = extensionReceiver.type.constructor
if (extensionReceiverConstructor.declarationDescriptor.classId != StandardClassIds.Enum &&
extensionReceiverConstructor.supertypes.none { it.constructor.declarationDescriptor.classId == StandardClassIds.Enum }
) return
context.trace.report(ErrorsJvm.ENUM_DECLARING_CLASS_DEPRECATED.on(context.languageVersionSettings, reportOn))
}
}