This commit is contained in:
Valentin Kipyatkov
2014-11-28 12:23:08 +03:00
parent 8bc7cf3d18
commit 3c07df36c7
4 changed files with 15 additions and 15 deletions
@@ -229,10 +229,10 @@ class SmartCompletionSession(configuration: CompletionSessionConfiguration, para
override fun doComplete() {
if (jetReference != null) {
val converter = ToFromOriginalFileConverter(parameters.getOriginalFile() as JetFile, position.getContainingFile() as JetFile, parameters.getOffset())
val mapper = ToFromOriginalFileMapper(parameters.getOriginalFile() as JetFile, position.getContainingFile() as JetFile, parameters.getOffset())
val completion = SmartCompletion(jetReference.expression, resolutionFacade, moduleDescriptor,
bindingContext!!, { isVisibleDescriptor(it) }, originalSearchScope,
converter, boldImmediateLookupElementFactory)
mapper, boldImmediateLookupElementFactory)
val result = completion.execute()
if (result != null) {
collector.addElements(result.additionalItems)
@@ -20,7 +20,7 @@ import org.jetbrains.jet.lang.psi.JetFile
import org.jetbrains.jet.lang.psi.JetDeclaration
import com.intellij.psi.util.PsiTreeUtil
class ToFromOriginalFileConverter(
class ToFromOriginalFileMapper(
val originalFile: JetFile,
val syntheticFile: JetFile,
val completionOffset: Int
@@ -46,7 +46,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
val bindingContext: BindingContext,
val visibilityFilter: (DeclarationDescriptor) -> Boolean,
val inheritorSearchScope: GlobalSearchScope,
val toFromOriginalFileConverter: ToFromOriginalFileConverter,
val toFromOriginalFileMapper: ToFromOriginalFileMapper,
val boldImmediateLookupElementFactory: LookupElementFactory) {
private val project = expression.getProject()
@@ -145,8 +145,8 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
val additionalItems = ArrayList<LookupElement>()
val inheritanceSearchers = ArrayList<InheritanceItemsSearcher>()
if (receiver == null) {
TypeInstantiationItems(resolutionFacade, moduleDescriptor, bindingContext, visibilityFilter, toFromOriginalFileConverter, inheritorSearchScope)
.add(additionalItems, inheritanceSearchers, expectedInfos)
TypeInstantiationItems(resolutionFacade, moduleDescriptor, bindingContext, visibilityFilter, toFromOriginalFileMapper, inheritorSearchScope)
.addTo(additionalItems, inheritanceSearchers, expectedInfos)
StaticMembers(bindingContext, resolutionFacade).addToCollection(additionalItems, expectedInfos, expression, itemsToSkip)
@@ -174,7 +174,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
// if our expression is initializer of implicitly typed variable - take type of variable from original file (+ the same for function)
val declaration = implicitlyTypedDeclarationFromInitializer(expression)
if (declaration != null) {
val originalDeclaration = toFromOriginalFileConverter.toOriginalFile(declaration)
val originalDeclaration = toFromOriginalFileMapper.toOriginalFile(declaration)
if (originalDeclaration != null) {
val originalDescriptor = originalDeclaration.resolveToDescriptor() as? CallableDescriptor
val returnType = originalDescriptor?.getReturnType()
@@ -66,10 +66,10 @@ class TypeInstantiationItems(
val moduleDescriptor: ModuleDescriptor,
val bindingContext: BindingContext,
val visibilityFilter: (DeclarationDescriptor) -> Boolean,
val toFromOriginalFileConverter: ToFromOriginalFileConverter,
val toFromOriginalFileMapper: ToFromOriginalFileMapper,
val inheritorSearchScope: GlobalSearchScope
) {
public fun add(
public fun addTo(
items: MutableCollection<LookupElement>,
inheritanceSearchers: MutableCollection<InheritanceItemsSearcher>,
expectedInfos: Collection<ExpectedInfo>
@@ -77,11 +77,11 @@ class TypeInstantiationItems(
val expectedInfosGrouped: Map<JetType, List<ExpectedInfo>> = expectedInfos.groupBy { it.type.makeNotNullable() }
for ((type, infos) in expectedInfosGrouped) {
val tail = mergeTails(infos.map { it.tail })
addToCollection(items, inheritanceSearchers, type, tail)
addTo(items, inheritanceSearchers, type, tail)
}
}
private fun addToCollection(
private fun addTo(
items: MutableCollection<LookupElement>,
inheritanceSearchers: MutableCollection<InheritanceItemsSearcher>,
type: JetType,
@@ -114,8 +114,8 @@ class TypeInstantiationItems(
descriptor: ClassDescriptor, kotlinClassDescriptor: ClassDescriptor, typeArgs: List<TypeProjection>, tail: Tail?
) {
val _declaration = DescriptorToSourceUtils.descriptorToDeclaration(descriptor) ?: return
val declaration = if (_declaration.getContainingFile() == toFromOriginalFileConverter.syntheticFile)
toFromOriginalFileConverter.toOriginalFile(_declaration as JetDeclaration) ?: return
val declaration = if (_declaration.getContainingFile() == toFromOriginalFileMapper.syntheticFile)
toFromOriginalFileMapper.toOriginalFile(_declaration as JetDeclaration) ?: return
else
_declaration
@@ -281,8 +281,8 @@ class TypeInstantiationItems(
for (inheritor in ClassInheritorsSearch.search(parameters)) {
val descriptor = if (inheritor is KotlinLightClass) {
val origin = inheritor.origin ?: continue
val declaration = if (origin.getContainingFile() == toFromOriginalFileConverter.originalFile)
toFromOriginalFileConverter.toSyntheticFile(origin) ?: continue
val declaration = if (origin.getContainingFile() == toFromOriginalFileMapper.originalFile)
toFromOriginalFileMapper.toSyntheticFile(origin) ?: continue
else
origin
resolutionFacade.resolveToDescriptor(declaration)