ConvertPropertyToFunctionIntention - no i18n + a bit better range

This commit is contained in:
Valentin Kipyatkov
2015-04-14 21:41:16 +03:00
parent 0698bb3866
commit 24203a8a31
2 changed files with 12 additions and 15 deletions
@@ -343,8 +343,6 @@ convert.to.string.template=Convert concatenation to template
convert.to.string.template.family=Convert Concatenation to Template
convert.to.concatenated.string.intention=Convert template to concatenated string
convert.to.concatenated.string.intention.family=Convert Template to Concatenated String
convert.property.to.function.intention=Convert property to function
convert.property.to.function.intention.family=Convert Property to Function
convert.receiver.to.parameter.intention=Convert receiver to parameter
convert.receiver.to.parameter.intention.family=Convert Receiver to Parameter
@@ -58,13 +58,13 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.idea.core.refactoring.checkConflictsInteractively
import org.jetbrains.kotlin.idea.core.refactoring.reportDeclarationConflict
public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetProperty>(
"convert.property.to.function.intention", javaClass()
) {
private inner class Convertor(
public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetProperty>(javaClass(), "Convert property to function") {
private inner class Converter(
project: Project,
descriptor: CallableDescriptor,
context: BindingContext): CallableRefactoring<CallableDescriptor>(project, descriptor, context, getText()) {
context: BindingContext
): CallableRefactoring<CallableDescriptor>(project, descriptor, context, getText()) {
private fun convertJetProperty(originalProperty: JetProperty, psiFactory: JetPsiFactory) {
val property = originalProperty.copy() as JetProperty;
val getter = property.getGetter();
@@ -134,7 +134,7 @@ public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetP
val refElement = usage.getElement()
conflicts.putValue(
refElement,
"Unrecognized reference will be skipped: ${StringUtil.htmlEmphasize(refElement.getText())}"
"Unrecognized reference will be skipped: " + StringUtil.htmlEmphasize(refElement.getText())
)
}
continue
@@ -156,7 +156,7 @@ public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetP
conflicts.putValue(
refElement,
"Can't replace foreign reference with call expression: ${StringUtil.htmlEmphasize(refElement.getText())}"
"Can't replace foreign reference with call expression: " + StringUtil.htmlEmphasize(refElement.getText())
)
}
}
@@ -172,9 +172,9 @@ public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetP
is PsiMethod -> it.setName(propertyName)
}
}
kotlinRefs.forEach { it.replace(kotlinPsiFactory.createExpression("${it.getText()}()")) }
kotlinRefs.forEach { it.replace(kotlinPsiFactory.createExpression(it.getText() + "()")) }
foreignRefsToRename.forEach { it.handleElementRename(propertyName) }
javaRefsToReplaceWithCall.forEach { it.replace(javaPsiFactory.createExpressionFromText("${it.getText()}()", null)) }
javaRefsToReplaceWithCall.forEach { it.replace(javaPsiFactory.createExpressionFromText(it.getText() + "()", null)) }
}
}
}
@@ -183,15 +183,14 @@ public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetP
override fun startInWriteAction(): Boolean = false
override fun isApplicableTo(element: JetProperty, caretOffset: Int): Boolean {
val elementAtCaret = element.getContainingFile().findElementAt(caretOffset)
if (!(element.getNameIdentifier()?.isAncestor(elementAtCaret) ?: false)) return false
val identifier = element.getNameIdentifier() ?: return false
if (!identifier.getTextRange().containsOffset(caretOffset)) return false
return element.getDelegate() == null && !element.isVar() && !element.isLocal()
}
override fun applyTo(element: JetProperty, editor: Editor) {
val context = element.analyze()
val descriptor = context[BindingContext.DECLARATION_TO_DESCRIPTOR, element] as? CallableDescriptor ?: return
Convertor(element.getProject(), descriptor, context).run()
Converter(element.getProject(), descriptor, context).run()
}
}