This commit is contained in:
Valentin Kipyatkov
2016-09-27 22:06:18 +03:00
parent 2f5e820afb
commit aec2f19682
4 changed files with 18 additions and 18 deletions
@@ -276,7 +276,7 @@ class BasicCompletionSession(
} }
} }
if (configuration.completeStaticMembers && callTypeAndReceiver is CallTypeAndReceiver.DEFAULT && prefix.isNotEmpty()) { if (configuration.staticMembers && callTypeAndReceiver is CallTypeAndReceiver.DEFAULT && prefix.isNotEmpty()) {
staticMembersCompletion.completeFromIndices(indicesHelper(false), collector) staticMembersCompletion.completeFromIndices(indicesHelper(false), collector)
} }
} }
@@ -594,7 +594,7 @@ class BasicCompletionSession(
collector.addElement(basicLookupElementFactory.createLookupElementForJavaClass(javaClass), notImported = true) collector.addElement(basicLookupElementFactory.createLookupElementForJavaClass(javaClass), notImported = true)
} }
AllClassesCompletion(parameters, indicesHelper(true), prefixMatcher, resolutionFacade, AllClassesCompletion(parameters, indicesHelper(true), prefixMatcher, resolutionFacade,
kindFilter, includeTypeAliases, configuration.completeJavaClassesNotToBeUsed kindFilter, includeTypeAliases, configuration.javaClassesNotToBeUsed
).collect(classifierDescriptorCollector, javaClassCollector) ).collect(classifierDescriptorCollector, javaClassCollector)
} }
@@ -55,19 +55,19 @@ import java.util.*
class CompletionSessionConfiguration( class CompletionSessionConfiguration(
val useBetterPrefixMatcherForNonImportedClasses: Boolean, val useBetterPrefixMatcherForNonImportedClasses: Boolean,
val completeNonAccessibleDeclarations: Boolean, val nonAccessibleDeclarations: Boolean,
val filterOutJavaGettersAndSetters: Boolean, val javaGettersAndSetters: Boolean,
val completeJavaClassesNotToBeUsed: Boolean, val javaClassesNotToBeUsed: Boolean,
val completeStaticMembers: Boolean, val staticMembers: Boolean,
val dataClassComponentFunctions: Boolean val dataClassComponentFunctions: Boolean
) )
fun CompletionSessionConfiguration(parameters: CompletionParameters) = CompletionSessionConfiguration( fun CompletionSessionConfiguration(parameters: CompletionParameters) = CompletionSessionConfiguration(
useBetterPrefixMatcherForNonImportedClasses = parameters.invocationCount < 2, useBetterPrefixMatcherForNonImportedClasses = parameters.invocationCount < 2,
completeNonAccessibleDeclarations = parameters.invocationCount >= 2, nonAccessibleDeclarations = parameters.invocationCount >= 2,
filterOutJavaGettersAndSetters = parameters.invocationCount < 2, javaGettersAndSetters = parameters.invocationCount >= 2,
completeJavaClassesNotToBeUsed = parameters.invocationCount >= 2, javaClassesNotToBeUsed = parameters.invocationCount >= 2,
completeStaticMembers = parameters.invocationCount >= 2, staticMembers = parameters.invocationCount >= 2,
dataClassComponentFunctions = parameters.invocationCount >= 2 dataClassComponentFunctions = parameters.invocationCount >= 2
) )
@@ -131,7 +131,7 @@ abstract class CompletionSession(
protected val descriptorNameFilter: (Name) -> Boolean = descriptorStringNameFilter.toNameFilter() protected val descriptorNameFilter: (Name) -> Boolean = descriptorStringNameFilter.toNameFilter()
protected val isVisibleFilter: (DeclarationDescriptor) -> Boolean = { isVisibleDescriptor(it, completeNonAccessible = configuration.completeNonAccessibleDeclarations) } protected val isVisibleFilter: (DeclarationDescriptor) -> Boolean = { isVisibleDescriptor(it, completeNonAccessible = configuration.nonAccessibleDeclarations) }
protected val isVisibleFilterCheckAlways: (DeclarationDescriptor) -> Boolean = { isVisibleDescriptor(it, completeNonAccessible = false) } protected val isVisibleFilterCheckAlways: (DeclarationDescriptor) -> Boolean = { isVisibleDescriptor(it, completeNonAccessible = false) }
protected val referenceVariantsHelper = ReferenceVariantsHelper(bindingContext, resolutionFacade, moduleDescriptor, isVisibleFilter) protected val referenceVariantsHelper = ReferenceVariantsHelper(bindingContext, resolutionFacade, moduleDescriptor, isVisibleFilter)
@@ -178,7 +178,7 @@ abstract class CompletionSession(
} }
private fun isVisibleDescriptor(descriptor: DeclarationDescriptor, completeNonAccessible: Boolean): Boolean { private fun isVisibleDescriptor(descriptor: DeclarationDescriptor, completeNonAccessible: Boolean): Boolean {
if (!configuration.completeJavaClassesNotToBeUsed && descriptor is ClassDescriptor) { if (!configuration.javaClassesNotToBeUsed && descriptor is ClassDescriptor) {
if (descriptor.importableFqName?.let { isJavaClassNotToBeUsedInKotlin(it) } == true) return false if (descriptor.importableFqName?.let { isJavaClassNotToBeUsedInKotlin(it) } == true) return false
} }
@@ -342,7 +342,7 @@ abstract class CompletionSession(
.invoke(notImportedExtensions) .invoke(notImportedExtensions)
} }
if (configuration.filterOutJavaGettersAndSetters) { if (!configuration.javaGettersAndSetters) {
variants = referenceVariantsHelper.filterOutJavaGettersAndSetters(variants) variants = referenceVariantsHelper.filterOutJavaGettersAndSetters(variants)
} }
@@ -301,10 +301,10 @@ class KotlinCompletionContributor : CompletionContributor() {
// Rerun completion if nothing was found // Rerun completion if nothing was found
val newConfiguration = CompletionSessionConfiguration( val newConfiguration = CompletionSessionConfiguration(
useBetterPrefixMatcherForNonImportedClasses = false, useBetterPrefixMatcherForNonImportedClasses = false,
completeNonAccessibleDeclarations = false, nonAccessibleDeclarations = false,
filterOutJavaGettersAndSetters = false, javaGettersAndSetters = true,
completeJavaClassesNotToBeUsed = false, javaClassesNotToBeUsed = false,
completeStaticMembers = parameters.invocationCount > 0, staticMembers = parameters.invocationCount > 0,
dataClassComponentFunctions = true dataClassComponentFunctions = true
) )
@@ -150,7 +150,7 @@ class SmartCompletionSession(
} }
} }
if (staticMembersCompletion != null && configuration.completeStaticMembers) { if (staticMembersCompletion != null && configuration.staticMembers) {
val decoratedFactory = staticMembersCompletion.decoratedLookupElementFactory(ItemPriority.STATIC_MEMBER) val decoratedFactory = staticMembersCompletion.decoratedLookupElementFactory(ItemPriority.STATIC_MEMBER)
staticMembersCompletion.processMembersFromIndices(indicesHelper(false)) { staticMembersCompletion.processMembersFromIndices(indicesHelper(false)) {
filter(it, decoratedFactory).forEach { filter(it, decoratedFactory).forEach {