KT-14252 Completion could suggest constructors available via typealiases

#KT-14252 fixed
This commit is contained in:
Simon Ogorodnik
2017-01-27 23:21:16 +03:00
parent 39fc1789e0
commit c2ba4e3ab9
14 changed files with 197 additions and 37 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.util
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.resolve.OverridingUtil
import org.jetbrains.kotlin.resolve.OverridingUtil.OverrideCompatibilityInfo.Result.OVERRIDABLE
import org.jetbrains.kotlin.resolve.calls.tower.getTypeAliasConstructors
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.TypeConstructor
@@ -76,4 +77,18 @@ fun TypeConstructor.supertypesWithAny(): Collection<KotlinType> {
.map { it.constructor.declarationDescriptor as? ClassDescriptor }
.all { it == null || it.kind == ClassKind.INTERFACE }
return if (noSuperClass) supertypes + builtIns.anyType else supertypes
}
}
val ClassifierDescriptorWithTypeParameters.constructors: Collection<ConstructorDescriptor>
get() = when (this) {
is TypeAliasDescriptor -> getTypeAliasConstructors()
is ClassDescriptor -> this.constructors
else -> emptyList()
}
val ClassifierDescriptorWithTypeParameters.kind: ClassKind?
get() = when (this) {
is TypeAliasDescriptor -> classDescriptor?.kind
is ClassDescriptor -> kind
else -> null
}