Refactoring: move common parts about SAMs to frontend module

This commit is contained in:
Mikhail Zarechenskiy
2019-11-18 13:49:14 +03:00
parent fc32e8b017
commit c93c82236c
14 changed files with 136 additions and 158 deletions
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.idea.decompiler.textBuilder.DeserializerForDecompile
import org.jetbrains.kotlin.idea.decompiler.textBuilder.LoggingErrorReporter
import org.jetbrains.kotlin.idea.decompiler.textBuilder.ResolveEverythingToKotlinAnyLocalClassifierResolver
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.kotlin.sam.SamConversionResolverImpl
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.classId
import org.jetbrains.kotlin.load.kotlin.*
@@ -43,6 +43,7 @@ import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
import org.jetbrains.kotlin.load.java.sam.SingleAbstractMethodUtils
import org.jetbrains.kotlin.load.kotlin.sam.getSingleAbstractMethodOrNull
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
@@ -763,7 +764,7 @@ class ExpressionsOfTypeProcessor(
testLog { "Resolved java class to descriptor: ${psiClass.qualifiedName}" }
val classDescriptor = psiClass.getJavaMemberDescriptor() as? JavaClassDescriptor
if (classDescriptor != null && SingleAbstractMethodUtils.getSingleAbstractMethodOrNull(classDescriptor) != null) {
if (classDescriptor != null && getSingleAbstractMethodOrNull(classDescriptor) != null) {
addSamInterfaceToProcess(psiClass)
return true
}
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
import org.jetbrains.kotlin.load.java.sam.SingleAbstractMethodUtils
import org.jetbrains.kotlin.load.kotlin.sam.getSingleAbstractMethodOrNull
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtLambdaExpression
import org.jetbrains.kotlin.psi.KtPsiFactory
@@ -72,7 +73,7 @@ class SamConversionToAnonymousObjectIntention : SelfTargetingRangeIntention<KtCa
val type = getType(context) ?: return null
if (!SingleAbstractMethodUtils.isSamType(type)) return null
val javaClass = type.constructor.declarationDescriptor as? JavaClassDescriptor ?: return null
return SingleAbstractMethodUtils.getSingleAbstractMethodOrNull(javaClass)
return getSingleAbstractMethodOrNull(javaClass)
}
companion object {