Extend CandidateInterceptor to intercept ResolvedCallAtom candidate

This commit is contained in:
Irene Dea
2021-10-07 15:19:41 -07:00
committed by teamcityserver
parent 99688e5c80
commit 78ee6b2a09
5 changed files with 53 additions and 1 deletions
@@ -84,6 +84,7 @@ abstract class ResolvedCallAtom : ResolvedAtom() {
abstract val argumentsWithSuspendConversion: Map<KotlinCallArgument, UnwrappedType>
abstract val argumentsWithUnitConversion: Map<KotlinCallArgument, UnwrappedType>
abstract val argumentsWithConstantConversion: Map<KotlinCallArgument, IntegerValueTypeConstant>
abstract fun setCandidateDescriptor(newCandidateDescriptor: CallableDescriptor)
}
class SamConversionDescription(
@@ -78,7 +78,7 @@ class ResolvedCallableReferenceCallAtom(
open class MutableResolvedCallAtom(
override val atom: KotlinCall,
override val candidateDescriptor: CallableDescriptor, // original candidate descriptor
originalCandidateDescriptor: CallableDescriptor, // original candidate descriptor
override val explicitReceiverKind: ExplicitReceiverKind,
override val dispatchReceiverArgument: SimpleKotlinCallArgument?,
override val extensionReceiverArgument: SimpleKotlinCallArgument?,
@@ -94,6 +94,10 @@ open class MutableResolvedCallAtom(
private var suspendAdapterMap: HashMap<KotlinCallArgument, UnwrappedType>? = null
private var unitAdapterMap: HashMap<KotlinCallArgument, UnwrappedType>? = null
private var signedUnsignedConstantConversions: HashMap<KotlinCallArgument, IntegerValueTypeConstant>? = null
private var _candidateDescriptor = originalCandidateDescriptor
override val candidateDescriptor: CallableDescriptor
get() = _candidateDescriptor
val hasSamConversion: Boolean
get() = samAdapterMap != null
@@ -146,6 +150,11 @@ open class MutableResolvedCallAtom(
super.setAnalyzedResults(subResolvedAtoms)
}
override fun setCandidateDescriptor(newCandidateDescriptor: CallableDescriptor) {
if (newCandidateDescriptor == candidateDescriptor) return
_candidateDescriptor = newCandidateDescriptor
}
override fun toString(): String = "$atom, candidate = $candidateDescriptor"
}