Adapt collecting synthetic constructors in IDE for completion
This commit is contained in:
+5
-4
@@ -206,7 +206,7 @@ class ReferenceVariantsHelper(
|
||||
// add non-instance members
|
||||
descriptors.addAll(resolutionScope.collectDescriptorsFiltered(filterWithoutExtensions, nameFilter))
|
||||
descriptors.addAll(resolutionScope.collectAllFromMeAndParent { scope ->
|
||||
scope.collectSyntheticStaticMembers(resolutionFacade, kindFilter, nameFilter)
|
||||
scope.collectSyntheticStaticMembersAndConstructors(resolutionFacade, kindFilter, nameFilter)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -405,14 +405,15 @@ private fun MemberScope.collectStaticMembers(
|
||||
kindFilter: DescriptorKindFilter,
|
||||
nameFilter: (Name) -> Boolean
|
||||
): Collection<DeclarationDescriptor> {
|
||||
return getDescriptorsFiltered(kindFilter, nameFilter) + collectSyntheticStaticMembers(resolutionFacade, kindFilter, nameFilter)
|
||||
return getDescriptorsFiltered(kindFilter, nameFilter) + collectSyntheticStaticMembersAndConstructors(resolutionFacade, kindFilter, nameFilter)
|
||||
}
|
||||
|
||||
fun ResolutionScope.collectSyntheticStaticMembers(
|
||||
fun ResolutionScope.collectSyntheticStaticMembersAndConstructors(
|
||||
resolutionFacade: ResolutionFacade,
|
||||
kindFilter: DescriptorKindFilter,
|
||||
nameFilter: (Name) -> Boolean
|
||||
): List<FunctionDescriptor> {
|
||||
val syntheticScopes = resolutionFacade.getFrontendService(SyntheticScopes::class.java)
|
||||
return syntheticScopes.collectSyntheticStaticFunctions(this).filter { kindFilter.accepts(it) && nameFilter(it.name) }
|
||||
return (syntheticScopes.collectSyntheticStaticFunctions(this) + syntheticScopes.collectSyntheticConstructors(this))
|
||||
.filter { kindFilter.accepts(it) && nameFilter(it.name) }
|
||||
}
|
||||
+2
-2
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.collectSyntheticStaticMembers
|
||||
import org.jetbrains.kotlin.idea.codeInsight.collectSyntheticStaticMembersAndConstructors
|
||||
import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
|
||||
import org.jetbrains.kotlin.idea.core.targetDescriptors
|
||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||
@@ -84,7 +84,7 @@ class StaticMembersCompletion(
|
||||
val memberScope = if (container.kind == ClassKind.OBJECT) container.unsubstitutedMemberScope else container.staticScope
|
||||
val members =
|
||||
memberScope.getDescriptorsFiltered(kindFilter, nameFilter) +
|
||||
memberScope.collectSyntheticStaticMembers(resolutionFacade, kindFilter, nameFilter)
|
||||
memberScope.collectSyntheticStaticMembersAndConstructors(resolutionFacade, kindFilter, nameFilter)
|
||||
members.filterTo(result) { it is CallableDescriptor && it !in alreadyAdded }
|
||||
}
|
||||
return result
|
||||
|
||||
+2
-2
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.codeInsight.collectSyntheticStaticMembers
|
||||
import org.jetbrains.kotlin.idea.codeInsight.collectSyntheticStaticMembersAndConstructors
|
||||
import org.jetbrains.kotlin.idea.completion.*
|
||||
import org.jetbrains.kotlin.idea.completion.handlers.KotlinFunctionInsertHandler
|
||||
import org.jetbrains.kotlin.idea.core.ExpectedInfo
|
||||
@@ -312,7 +312,7 @@ class TypeInstantiationItems(
|
||||
is ClassDescriptor -> container.unsubstitutedMemberScope
|
||||
else -> return
|
||||
}
|
||||
scope.collectSyntheticStaticMembers(resolutionFacade, DescriptorKindFilter.FUNCTIONS, { classifier.name == it })
|
||||
scope.collectSyntheticStaticMembersAndConstructors(resolutionFacade, DescriptorKindFilter.FUNCTIONS, { classifier.name == it })
|
||||
.filterIsInstance<SamConstructorDescriptor>()
|
||||
.singleOrNull() ?: return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user