Removed useless nested object

This commit is contained in:
Valentin Kipyatkov
2015-02-10 19:05:08 +03:00
parent 25f4987299
commit 2e275e7624
@@ -254,7 +254,7 @@ public class KotlinCopyPasteReferenceProcessor() : CopyPastePostProcessor<Refere
conflict -> { conflict -> {
val mustBeReferencedWithReceiver = referencedDescriptors.any { it.isExtension } val mustBeReferencedWithReceiver = referencedDescriptors.any { it.isExtension }
if (!mustBeReferencedWithReceiver && LengthenReferences.canLengthenReferenceExpression(expression, originalReferencedFqName)) { if (!mustBeReferencedWithReceiver && canLengthenReferenceExpression(expression, originalReferencedFqName)) {
return ReferenceToRestoreData(expression, originalReferencedFqName, lengthenReference = true) return ReferenceToRestoreData(expression, originalReferencedFqName, lengthenReference = true)
} }
} }
@@ -269,7 +269,7 @@ public class KotlinCopyPasteReferenceProcessor() : CopyPastePostProcessor<Refere
} }
else { else {
//TODO: try to shorten reference after (sometimes is possible), need shorten reference to support all relevant cases //TODO: try to shorten reference after (sometimes is possible), need shorten reference to support all relevant cases
LengthenReferences.lengthenReference(referenceExpression, fqName) lengthenReference(referenceExpression, fqName)
} }
} }
} }
@@ -295,35 +295,32 @@ public class KotlinCopyPasteReferenceProcessor() : CopyPastePostProcessor<Refere
) )
} }
private object LengthenReferences { private fun createQualifiedExpression(psiFactory: JetPsiFactory, text: String)
= psiFactory.createExpression(text) as JetDotQualifiedExpression
private fun createQualifiedExpression(psiFactory: JetPsiFactory, text: String) private fun lengthenReference(expression: JetElement, fqName: FqName) {
= psiFactory.createExpression(text) as JetDotQualifiedExpression assert(canLengthenReferenceExpression(expression, fqName))
val parent = expression.getParent()
fun lengthenReference(expression: JetElement, fqName: FqName) { val prefixToInsert = IdeDescriptorRenderers.SOURCE_CODE.renderFqName(fqName.parent())
assert(canLengthenReferenceExpression(expression, fqName)) val psiFactory = JetPsiFactory(expression)
val parent = expression.getParent() if (parent is JetCallExpression) {
val prefixToInsert = IdeDescriptorRenderers.SOURCE_CODE.renderFqName(fqName.parent()) val text = prefixToInsert + "." + parent.getText()
val psiFactory = JetPsiFactory(expression) parent.replace(createQualifiedExpression(psiFactory, text))
if (parent is JetCallExpression) {
val text = prefixToInsert + "." + parent.getText()
parent.replace(createQualifiedExpression(psiFactory, text))
}
else if (parent is JetUserType) {
val typeReference = expression.getStrictParentOfType<JetTypeReference>()!!
typeReference.replace(psiFactory.createType(prefixToInsert + "." + typeReference.getText()))
}
else {
expression.replace(createQualifiedExpression(psiFactory, IdeDescriptorRenderers.SOURCE_CODE.renderFqName(fqName)))
}
} }
else if (parent is JetUserType) {
val typeReference = expression.getStrictParentOfType<JetTypeReference>()!!
typeReference.replace(psiFactory.createType(prefixToInsert + "." + typeReference.getText()))
}
else {
expression.replace(createQualifiedExpression(psiFactory, IdeDescriptorRenderers.SOURCE_CODE.renderFqName(fqName)))
}
}
fun canLengthenReferenceExpression(expression: JetElement, fqName: FqName): Boolean { private fun canLengthenReferenceExpression(expression: JetElement, fqName: FqName): Boolean {
return when { return when {
fqName.pathSegments().size() < 2 -> false fqName.pathSegments().size() < 2 -> false
expression is JetSimpleNameExpression && expression.getReceiverExpression() == null -> true expression is JetSimpleNameExpression && expression.getReceiverExpression() == null -> true
else -> false else -> false
}
} }
} }