don't show function literals and selectors of qualified expressions in "show expression type"

This commit is contained in:
Dmitry Jemerov
2016-08-26 17:19:00 +02:00
parent 256fd04e95
commit 02a5856ffd
3 changed files with 16 additions and 1 deletions
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelector
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.RenderingFormat
@@ -38,13 +39,14 @@ class KotlinExpressionTypeProvider : ExpressionTypeProvider<KtExpression>() {
elementAt.parentsWithSelf.filterIsInstance<KtExpression>().filter { it.shouldShowType() }.toList()
private fun KtExpression.shouldShowType() = when(this) {
is KtFunctionLiteral -> false
is KtFunction -> !hasBlockBody() && !hasDeclaredReturnType()
is KtProperty -> typeReference == null
is KtPropertyAccessor -> false
is KtDestructuringDeclarationEntry -> true
is KtStatementExpression, is KtDestructuringDeclaration -> false
is KtIfExpression, is KtLoopExpression, is KtWhenExpression, is KtTryExpression -> parent !is KtBlockExpression
else -> true
else -> getQualifiedExpressionForSelector() == null
}
override fun getInformationHint(element: KtExpression): String {