Shorten References: Fix removal of explicit companion references in the position of callee expression

#KT-10102
This commit is contained in:
Alexey Sedunov
2015-11-27 16:04:53 +03:00
parent 2dcc38b92f
commit 44bc937499
12 changed files with 131 additions and 1 deletions
@@ -464,7 +464,25 @@ public class ShortenReferences(val options: (KtElement) -> Options = { Options.D
}
override fun shortenElement(element: KtDotQualifiedExpression): KtElement {
return element.replace(element.getReceiverExpression()) as KtElement
val receiver = element.receiverExpression
val selector = element.selectorExpression ?: return element
return when (receiver) {
is KtSimpleNameExpression -> {
val identifier = receiver.getIdentifier() ?: return element
(selector.getCalleeExpressionIfAny() as? KtSimpleNameExpression)?.getIdentifier()?.replace(identifier)
element.replace(selector) as KtExpression
}
is KtQualifiedExpression -> {
val identifier = (receiver.selectorExpression as? KtSimpleNameExpression)?.getIdentifier() ?: return element
(selector.getCalleeExpressionIfAny() as? KtSimpleNameExpression)?.getIdentifier()?.replace(identifier)
receiver.selectorExpression?.replace(selector)
element.replace(receiver) as KtExpression
}
else -> element
}
}
}
}