use short names in Show Expression Type

#KT-11310 Fixed
This commit is contained in:
Dmitry Jemerov
2016-08-26 11:47:56 +02:00
parent 4346afa19e
commit 6dccfd3b22
5 changed files with 13 additions and 8 deletions
@@ -23,10 +23,15 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.RenderingFormat
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
class KotlinExpressionTypeProvider : ExpressionTypeProvider<KtExpression>() {
private val typeRenderer = DescriptorRenderer.COMPACT_WITH_SHORT_TYPES.withOptions {
textFormat = RenderingFormat.HTML
}
override fun getExpressionsAt(elementAt: PsiElement): List<KtExpression> =
elementAt.parentsWithSelf.filterIsInstance<KtExpression>().filter { it.shouldShowType() }.toList()
@@ -47,12 +52,12 @@ class KotlinExpressionTypeProvider : ExpressionTypeProvider<KtExpression>() {
if (element is KtCallableDeclaration) {
val descriptor = bindingContext[BindingContext.DECLARATION_TO_DESCRIPTOR, element] as? CallableDescriptor
if (descriptor != null) {
return descriptor.returnType?.let { DescriptorRenderer.HTML.renderType(it) } ?: "Type is unknown"
return descriptor.returnType?.let { typeRenderer.renderType(it) } ?: "Type is unknown"
}
}
val expressionType = element.getType(bindingContext) ?: return "Type is unknown"
val result = DescriptorRenderer.HTML.renderType(expressionType)
val result = typeRenderer.renderType(expressionType)
val smartCast = bindingContext[BindingContext.SMARTCAST, element]
if (smartCast != null) {
return result + " (smart cast)"