Accurate representation of smart casts on complex expressions

This commit is contained in:
Mikhail Glukhikh
2015-12-08 17:30:01 +03:00
parent 7cd867b936
commit 745a3aeeac
11 changed files with 102 additions and 2 deletions
@@ -84,8 +84,14 @@ class VariablesHighlightingVisitor extends AfterAnalysisHighlightingVisitor {
KotlinType smartCast = bindingContext.get(SMARTCAST, expression);
if (smartCast != null) {
holder.createInfoAnnotation(expression, "Smart cast to " +
DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(smartCast))
PsiElement target = expression;
if (expression instanceof KtIfExpression) {
target = ((KtIfExpression) expression).getIfKeyword();
}
else if (expression instanceof KtWhenExpression) {
target = ((KtWhenExpression) expression).getWhenKeyword();
}
holder.createInfoAnnotation(target, "Smart cast to " + DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(smartCast))
.setTextAttributes(KotlinHighlightingColors.SMART_CAST_VALUE);
}