Fix InsertExplicitTypeArguments intention to insert imports for shortened types

#KT-5489 Fixed
This commit is contained in:
Pavel V. Talanov
2014-07-16 21:53:16 +04:00
parent 0462a018c5
commit 1bc0a9dfd9
4 changed files with 28 additions and 10 deletions
@@ -58,17 +58,13 @@ public class InsertExplicitTypeArguments : JetSelfTargetingIntention<JetCallExpr
val psiFactory = JetPsiFactory(element)
val typeArgs = types.map {
assert(args[it] != null, "there is a null in the type arguments to transform")
val typeToCompute = DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(args[it]!!);
val computedTypeRef = psiFactory.createType(typeToCompute)
ShortenReferences.process(computedTypeRef)
computedTypeRef.getText()
}.makeString(", ", "<", ">")
DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(args[it]!!)
}.joinToString(", ", "<", ">")
val name = element.getCalleeExpression()?.getText()
if (name == null) return
val callee = element.getCalleeExpression()
if (callee == null) return
val valueAndFunctionArguments = element.getText()?.substring(name.size) ?: throw AssertionError("InsertExplicitTypeArguments intention shouldn't be applicable for empty call expression")
val expr = psiFactory.createExpression("$name$typeArgs${valueAndFunctionArguments}")
element.replace(expr)
element.addAfter(psiFactory.createTypeArguments(typeArgs), callee)
ShortenReferences.process(element.getTypeArgumentList()!!)
}
}