Optimize JvmBuiltinsSettings.getFunctionsNames

This commit is contained in:
Denis Zharkov
2016-09-06 15:35:53 +03:00
parent 2fb5b0e248
commit 81682f0497
@@ -34,7 +34,6 @@ import org.jetbrains.kotlin.resolve.OverridingUtil
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider
import org.jetbrains.kotlin.serialization.deserialization.PLATFORM_DEPENDENT_ANNOTATION_FQ_NAME import org.jetbrains.kotlin.serialization.deserialization.PLATFORM_DEPENDENT_ANNOTATION_FQ_NAME
@@ -132,10 +131,10 @@ open class JvmBuiltInsSettings(
}.build()!! }.build()!!
} }
override fun getFunctionsNames(classDescriptor: DeserializedClassDescriptor): Collection<Name> = override fun getFunctionsNames(classDescriptor: DeserializedClassDescriptor): Set<Name> =
getAdditionalFunctions(classDescriptor) { // NB: It's just an approximation that could be calculated relatively fast
it.getContributedDescriptors(DescriptorKindFilter.FUNCTIONS).filterIsInstance<SimpleFunctionDescriptor>() // More precise computation would look like `getAdditionalFunctions` (and the measurements show that it would be rather slow)
}.map(SimpleFunctionDescriptor::getName) classDescriptor.getJavaAnalogue()?.unsubstitutedMemberScope?.getFunctionNames() ?: emptySet()
private fun getAdditionalFunctions( private fun getAdditionalFunctions(
classDescriptor: DeserializedClassDescriptor, classDescriptor: DeserializedClassDescriptor,