Code improvements after review

This commit is contained in:
Valentin Kipyatkov
2014-12-03 18:50:58 +03:00
parent dfd5e773df
commit 132cb26e04
6 changed files with 20 additions and 23 deletions
@@ -81,7 +81,7 @@ public class ReferenceVariantsHelper(
return resolutionScope.getDescriptorsFiltered(restrictedFilter, nameFilter)
}
val pair = getReferenceVariantsReceiver(expression)
val pair = getExplicitReceiverData(expression)
if (pair != null) {
val (receiverExpression, callType) = pair
fun filterIfInfix(descriptor: DeclarationDescriptor)
@@ -139,7 +139,7 @@ public class ReferenceVariantsHelper(
}
public fun getReferenceVariantsReceivers(expression: JetSimpleNameExpression): ReceiversData {
val receiverData = getReferenceVariantsReceiver(expression)
val receiverData = getExplicitReceiverData(expression)
if (receiverData != null) {
val receiverExpression = receiverData.first
val expressionType = context[BindingContext.EXPRESSION_TYPE, receiverExpression] ?: return ReceiversData.Empty
@@ -184,7 +184,7 @@ public class ReferenceVariantsHelper(
}
class object {
public fun getReferenceVariantsReceiver(expression: JetSimpleNameExpression): Pair<JetExpression, CallType>? {
public fun getExplicitReceiverData(expression: JetSimpleNameExpression): Pair<JetExpression, CallType>? {
val receiverExpression = expression.getReceiverExpression() ?: return null
val parent = expression.getParent()
val callType = when (parent) {
@@ -111,7 +111,7 @@ public class KotlinIndicesHelper(
dataFlowInfo: DataFlowInfo) {
val matchingNames = fqNames.filter { nameFilter(it.shortName().asString()) }
val receiverPair = ReferenceVariantsHelper.getReferenceVariantsReceiver(expression)
val receiverPair = ReferenceVariantsHelper.getExplicitReceiverData(expression)
if (receiverPair != null) {
val (receiverExpression, callType) = receiverPair
@@ -87,7 +87,7 @@ abstract class CompletionSessionBase(protected val configuration: CompletionSess
receiverTypes
}
else {
null
listOf()
}
LookupElementFactory(receiverTypes)
}
@@ -40,9 +40,8 @@ import java.util.HashSet
import org.jetbrains.jet.lang.resolve.name.FqName
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap
import org.jetbrains.jet.plugin.quickfix.ImportInsertHelper
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor
import org.jetbrains.jet.lang.types.JetType
import org.jetbrains.jet.lang.descriptors.VariableDescriptor
public fun CompletionResultSet.addKotlinSorting(parameters: CompletionParameters): CompletionResultSet {
var sorter = CompletionSorter.defaultSorter(parameters, getPrefixMatcher())!!
@@ -75,8 +74,7 @@ private object SmartCompletionPriorityWeigher : LookupElementWeigher("kotlin.sma
private object KindWeigher : LookupElementWeigher("kotlin.kind") {
private enum class Weight {
localOrParameter
property
variable // variable or property
function
keyword
default
@@ -99,8 +97,7 @@ private object KindWeigher : LookupElementWeigher("kotlin.kind") {
is DeclarationDescriptorLookupObject -> {
val descriptor = o.descriptor
when (descriptor) {
is LocalVariableDescriptor, is ValueParameterDescriptor -> CompoundWeight(Weight.localOrParameter)
is PropertyDescriptor -> CompoundWeight(Weight.property, element.getUserData(CALLABLE_WEIGHT_KEY))
is VariableDescriptor -> CompoundWeight(Weight.variable, element.getUserData(CALLABLE_WEIGHT_KEY))
is FunctionDescriptor -> CompoundWeight(Weight.function, element.getUserData(CALLABLE_WEIGHT_KEY))
is PackageViewDescriptor -> CompoundWeight(Weight.packages)
else -> CompoundWeight(Weight.default)
@@ -40,7 +40,7 @@ import com.intellij.codeInsight.lookup.DefaultLookupItemRenderer
import org.jetbrains.jet.lang.types.TypeUtils
public class LookupElementFactory(
private val receiverTypes: Collection<JetType>?
private val receiverTypes: Collection<JetType>
) {
public fun createLookupElement(
resolutionFacade: ResolutionFacade,
@@ -52,18 +52,19 @@ public class LookupElementFactory(
else
descriptor
var element = createLookupElement(resolutionFacade, _descriptor, DescriptorToSourceUtils.descriptorToDeclaration(_descriptor))
val weight = callableWeight(descriptor)
if (weight != null) {
element.putUserData(CALLABLE_WEIGHT_KEY, weight) // store for use in lookup elements sorting
}
if (boldImmediateMembers) {
element = element.boldIfImmediate(descriptor)
element = element.boldIfImmediate(weight)
}
return element
}
private fun LookupElement.boldIfImmediate(descriptor: DeclarationDescriptor): LookupElement {
val weight = callableWeight(descriptor)
if (weight != null) {
putUserData(CALLABLE_WEIGHT_KEY, weight) // store for use in lookup elements sorting
}
private fun LookupElement.boldIfImmediate(weight: CallableWeight?): LookupElement {
val style = when (weight) {
CallableWeight.thisClassMember, CallableWeight.thisTypeExtension -> Style.BOLD
CallableWeight.notApplicableReceiverNullable -> Style.GRAYED
@@ -204,8 +205,7 @@ public class LookupElementFactory(
}
private fun callableWeight(descriptor: DeclarationDescriptor): CallableWeight? {
if (receiverTypes == null) return null
if (descriptor !is CallableMemberDescriptor) return null
if (descriptor !is CallableDescriptor) return null
val isReceiverNullable = receiverTypes.isNotEmpty() && receiverTypes.all { it.isNullable() }
val receiverParameter = descriptor.getExtensionReceiverParameter()
@@ -229,7 +229,7 @@ public class LookupElementFactory(
is PackageFragmentDescriptor -> CallableWeight.global
is ClassifierDescriptor -> {
if (descriptor.getKind() == CallableMemberDescriptor.Kind.DECLARATION)
if ((descriptor as CallableMemberDescriptor).getKind() == CallableMemberDescriptor.Kind.DECLARATION)
CallableWeight.thisClassMember
else
CallableWeight.baseClassMember
@@ -52,7 +52,7 @@ object PackageDirectiveCompletion {
val variants = ReferenceVariantsHelper(bindingContext, { true }).getPackageReferenceVariants(ref.expression, prefixMatcher.asNameFilter())
for (variant in variants) {
val lookupElement = LookupElementFactory(null).createLookupElement(resolutionFacade, variant, false)
val lookupElement = LookupElementFactory(listOf()).createLookupElement(resolutionFacade, variant, false)
if (!lookupElement.getLookupString().contains(DUMMY_IDENTIFIER)) {
result.addElement(lookupElement)
}