ConvertPropertyToFunctionIntention - no i18n + a bit better range
This commit is contained in:
@@ -343,8 +343,6 @@ convert.to.string.template=Convert concatenation to template
|
|||||||
convert.to.string.template.family=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=Convert template to concatenated string
|
||||||
convert.to.concatenated.string.intention.family=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=Convert receiver to parameter
|
||||||
convert.receiver.to.parameter.intention.family=Convert Receiver to Parameter
|
convert.receiver.to.parameter.intention.family=Convert Receiver to Parameter
|
||||||
|
|
||||||
|
|||||||
+12
-13
@@ -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.checkConflictsInteractively
|
||||||
import org.jetbrains.kotlin.idea.core.refactoring.reportDeclarationConflict
|
import org.jetbrains.kotlin.idea.core.refactoring.reportDeclarationConflict
|
||||||
|
|
||||||
public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetProperty>(
|
public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetProperty>(javaClass(), "Convert property to function") {
|
||||||
"convert.property.to.function.intention", javaClass()
|
private inner class Converter(
|
||||||
) {
|
|
||||||
private inner class Convertor(
|
|
||||||
project: Project,
|
project: Project,
|
||||||
descriptor: CallableDescriptor,
|
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) {
|
private fun convertJetProperty(originalProperty: JetProperty, psiFactory: JetPsiFactory) {
|
||||||
val property = originalProperty.copy() as JetProperty;
|
val property = originalProperty.copy() as JetProperty;
|
||||||
val getter = property.getGetter();
|
val getter = property.getGetter();
|
||||||
@@ -134,7 +134,7 @@ public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetP
|
|||||||
val refElement = usage.getElement()
|
val refElement = usage.getElement()
|
||||||
conflicts.putValue(
|
conflicts.putValue(
|
||||||
refElement,
|
refElement,
|
||||||
"Unrecognized reference will be skipped: ${StringUtil.htmlEmphasize(refElement.getText())}"
|
"Unrecognized reference will be skipped: " + StringUtil.htmlEmphasize(refElement.getText())
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
@@ -156,7 +156,7 @@ public class ConvertPropertyToFunctionIntention : JetSelfTargetingIntention<JetP
|
|||||||
|
|
||||||
conflicts.putValue(
|
conflicts.putValue(
|
||||||
refElement,
|
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)
|
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) }
|
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 startInWriteAction(): Boolean = false
|
||||||
|
|
||||||
override fun isApplicableTo(element: JetProperty, caretOffset: Int): Boolean {
|
override fun isApplicableTo(element: JetProperty, caretOffset: Int): Boolean {
|
||||||
val elementAtCaret = element.getContainingFile().findElementAt(caretOffset)
|
val identifier = element.getNameIdentifier() ?: return false
|
||||||
if (!(element.getNameIdentifier()?.isAncestor(elementAtCaret) ?: false)) return false
|
if (!identifier.getTextRange().containsOffset(caretOffset)) return false
|
||||||
|
|
||||||
return element.getDelegate() == null && !element.isVar() && !element.isLocal()
|
return element.getDelegate() == null && !element.isVar() && !element.isLocal()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun applyTo(element: JetProperty, editor: Editor) {
|
override fun applyTo(element: JetProperty, editor: Editor) {
|
||||||
val context = element.analyze()
|
val context = element.analyze()
|
||||||
val descriptor = context[BindingContext.DECLARATION_TO_DESCRIPTOR, element] as? CallableDescriptor ?: return
|
val descriptor = context[BindingContext.DECLARATION_TO_DESCRIPTOR, element] as? CallableDescriptor ?: return
|
||||||
Convertor(element.getProject(), descriptor, context).run()
|
Converter(element.getProject(), descriptor, context).run()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user