Fix presence of Deprecated hidden annotation for reference arguments
#KT-40234 Fixed
This commit is contained in:
+12
@@ -70,6 +70,18 @@ class KotlinResolutionStatelessCallbacksImpl(
|
||||
kotlinCall is PSIKotlinCallImpl && kotlinCall.psiCall.isCallWithSuperReceiver(),
|
||||
)
|
||||
|
||||
override fun isHiddenInResolution(
|
||||
descriptor: DeclarationDescriptor,
|
||||
kotlinCallArgument: KotlinCallArgument,
|
||||
resolutionCallbacks: KotlinResolutionCallbacks
|
||||
): Boolean =
|
||||
deprecationResolver.isHiddenInResolution(
|
||||
descriptor,
|
||||
kotlinCallArgument.psiCallArgument.psiExpression,
|
||||
(resolutionCallbacks as? KotlinResolutionCallbacksImpl)?.trace?.bindingContext,
|
||||
isSuperCall = false,
|
||||
)
|
||||
|
||||
override fun isSuperExpression(receiver: SimpleKotlinCallArgument?): Boolean =
|
||||
receiver?.psiExpression is KtSuperExpression
|
||||
|
||||
|
||||
+11
-2
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.Call
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.SinceKotlinAccessibility
|
||||
import org.jetbrains.kotlin.resolve.calls.checkers.isOperatorMod
|
||||
@@ -64,6 +65,14 @@ class DeprecationResolver(
|
||||
call: Call? = null,
|
||||
bindingContext: BindingContext? = null,
|
||||
isSuperCall: Boolean = false
|
||||
): Boolean =
|
||||
isHiddenInResolution(descriptor, call?.callElement, bindingContext, isSuperCall)
|
||||
|
||||
fun isHiddenInResolution(
|
||||
descriptor: DeclarationDescriptor,
|
||||
callElement: KtElement?,
|
||||
bindingContext: BindingContext?,
|
||||
isSuperCall: Boolean
|
||||
): Boolean {
|
||||
if (descriptor is FunctionDescriptor) {
|
||||
if (descriptor.isHiddenToOvercomeSignatureClash) return true
|
||||
@@ -74,10 +83,10 @@ class DeprecationResolver(
|
||||
if (sinceKotlinAccessibility is SinceKotlinAccessibility.NotAccessible) return true
|
||||
|
||||
if (sinceKotlinAccessibility is SinceKotlinAccessibility.NotAccessibleButWasExperimental) {
|
||||
if (call != null && bindingContext != null) {
|
||||
if (callElement != null && bindingContext != null) {
|
||||
return with(ExperimentalUsageChecker) {
|
||||
sinceKotlinAccessibility.markerClasses.any { classDescriptor ->
|
||||
!call.callElement.isExperimentalityAccepted(classDescriptor.fqNameSafe, languageVersionSettings, bindingContext)
|
||||
!callElement.isExperimentalityAccepted(classDescriptor.fqNameSafe, languageVersionSettings, bindingContext)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user