Avoid extension functions in Java-facing code in project
This is to workaround the coming functions / extension functions global refactoring and move
This commit is contained in:
@@ -24,7 +24,6 @@ import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.Stack;
|
||||
import kotlin.ExtensionFunction0;
|
||||
import kotlin.Function1;
|
||||
import kotlin.KotlinPackage;
|
||||
import kotlin.Unit;
|
||||
@@ -1584,14 +1583,14 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
|
||||
addLeaveTaskToRemoveDescriptorFromFrameMap(statement, blockEnd, leaveTasks);
|
||||
}
|
||||
|
||||
return new StackValueWithLeaveTask(answer, new ExtensionFunction0<StackValueWithLeaveTask, Unit>() {
|
||||
return new StackValueWithLeaveTask(answer, new Function1<StackValue, Unit>() {
|
||||
@Override
|
||||
public Unit invoke(StackValueWithLeaveTask wrapper) {
|
||||
public Unit invoke(StackValue value) {
|
||||
if (labelBlockEnd == null) {
|
||||
v.mark(blockEnd);
|
||||
}
|
||||
for (Function<StackValue, Void> task : Lists.reverse(leaveTasks)) {
|
||||
task.fun(wrapper.getStackValue());
|
||||
task.fun(value);
|
||||
}
|
||||
return Unit.INSTANCE$;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.codegen
|
||||
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter
|
||||
import org.jetbrains.org.objectweb.asm.Label
|
||||
|
||||
class CoercionValue(
|
||||
val value: StackValue,
|
||||
@@ -47,7 +46,7 @@ class CoercionValue(
|
||||
|
||||
public class StackValueWithLeaveTask(
|
||||
val stackValue: StackValue,
|
||||
val leaveTasks: StackValueWithLeaveTask.() -> Unit
|
||||
val leaveTasks: (StackValue) -> Unit
|
||||
) : StackValue(stackValue.type) {
|
||||
|
||||
override fun putReceiver(v: InstructionAdapter, isRead: Boolean) {
|
||||
@@ -56,7 +55,7 @@ public class StackValueWithLeaveTask(
|
||||
|
||||
override fun putSelector(type: Type, v: InstructionAdapter) {
|
||||
stackValue.putSelector(type, v)
|
||||
leaveTasks()
|
||||
leaveTasks(stackValue)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+9
-10
@@ -16,20 +16,19 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.intentions
|
||||
|
||||
import org.jetbrains.kotlin.psi.JetNamedFunction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.runChangeSignature
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetChangeSignatureConfiguration
|
||||
import org.jetbrains.kotlin.psi.JetParameter
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.runChangeSignature
|
||||
import org.jetbrains.kotlin.psi.JetNamedFunction
|
||||
import org.jetbrains.kotlin.psi.JetParameter
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
|
||||
public class ConvertParameterToReceiverIntention: JetSelfTargetingIntention<JetParameter>(javaClass(), "Convert parameter to receiver") {
|
||||
public class ConvertParameterToReceiverIntention : JetSelfTargetingIntention<JetParameter>(javaClass(), "Convert parameter to receiver") {
|
||||
override fun isApplicableTo(element: JetParameter, caretOffset: Int): Boolean {
|
||||
val identifier = element.getNameIdentifier() ?: return false
|
||||
if (!identifier.getTextRange().containsOffset(caretOffset)) return false
|
||||
@@ -39,9 +38,9 @@ public class ConvertParameterToReceiverIntention: JetSelfTargetingIntention<JetP
|
||||
}
|
||||
|
||||
private fun configureChangeSignature(parameterIndex: Int): JetChangeSignatureConfiguration {
|
||||
return object: JetChangeSignatureConfiguration {
|
||||
return object : JetChangeSignatureConfiguration {
|
||||
override fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor {
|
||||
return originalDescriptor.modify { receiver = originalDescriptor.getParameters()[parameterIndex] }
|
||||
return originalDescriptor.modify { it.receiver = originalDescriptor.getParameters()[parameterIndex] }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+8
-8
@@ -16,26 +16,26 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.intentions
|
||||
|
||||
import org.jetbrains.kotlin.psi.JetNamedFunction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import org.jetbrains.kotlin.psi.JetTypeReference
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.runChangeSignature
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetChangeSignatureConfiguration
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.runChangeSignature
|
||||
import org.jetbrains.kotlin.psi.JetNamedFunction
|
||||
import org.jetbrains.kotlin.psi.JetTypeReference
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
|
||||
public class ConvertReceiverToParameterIntention: JetSelfTargetingOffsetIndependentIntention<JetTypeReference>(javaClass(), "Convert receiver to parameter") {
|
||||
public class ConvertReceiverToParameterIntention : JetSelfTargetingOffsetIndependentIntention<JetTypeReference>(javaClass(), "Convert receiver to parameter") {
|
||||
override fun isApplicableTo(element: JetTypeReference): Boolean {
|
||||
return (element.getParent() as? JetNamedFunction)?.getReceiverTypeReference() == element
|
||||
}
|
||||
|
||||
private fun configureChangeSignature(): JetChangeSignatureConfiguration {
|
||||
return object: JetChangeSignatureConfiguration {
|
||||
return object : JetChangeSignatureConfiguration {
|
||||
override fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor {
|
||||
return originalDescriptor.modify { receiver = null }
|
||||
return originalDescriptor.modify { it.receiver = null }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import kotlin.ExtensionFunction0;
|
||||
import kotlin.Function1;
|
||||
import kotlin.Unit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor;
|
||||
@@ -125,7 +125,7 @@ public class AddFunctionParametersFix extends ChangeFunctionSignatureFix {
|
||||
public JetMethodDescriptor configure(@NotNull final JetMethodDescriptor originalDescriptor, @NotNull final BindingContext bindingContext) {
|
||||
return ChangeSignaturePackage.modify(
|
||||
originalDescriptor,
|
||||
new ExtensionFunction0<JetMutableMethodDescriptor, Unit>() {
|
||||
new Function1<JetMutableMethodDescriptor, Unit>() {
|
||||
@Override
|
||||
public Unit invoke(JetMutableMethodDescriptor descriptor) {
|
||||
List<ValueParameterDescriptor> parameters = functionDescriptor.getValueParameters();
|
||||
|
||||
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.idea.quickfix;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import kotlin.ExtensionFunction0;
|
||||
import kotlin.Function1;
|
||||
import kotlin.Unit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
|
||||
@@ -65,7 +65,7 @@ public class ChangeFunctionLiteralSignatureFix extends ChangeFunctionSignatureFi
|
||||
public JetMethodDescriptor configure(@NotNull JetMethodDescriptor originalDescriptor, @NotNull BindingContext bindingContext) {
|
||||
return ChangeSignaturePackage.modify(
|
||||
originalDescriptor,
|
||||
new ExtensionFunction0<JetMutableMethodDescriptor, Unit>() {
|
||||
new Function1<JetMutableMethodDescriptor, Unit>() {
|
||||
@Override
|
||||
public Unit invoke(JetMutableMethodDescriptor descriptor) {
|
||||
JetNameValidator validator = new SimpleCollectingValidator();
|
||||
|
||||
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.idea.quickfix;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import kotlin.ExtensionFunction0;
|
||||
import kotlin.Function1;
|
||||
import kotlin.Unit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
|
||||
@@ -64,7 +64,7 @@ public class RemoveFunctionParametersFix extends ChangeFunctionSignatureFix {
|
||||
public JetMethodDescriptor configure(@NotNull JetMethodDescriptor originalDescriptor, @NotNull BindingContext bindingContext) {
|
||||
return ChangeSignaturePackage.modify(
|
||||
originalDescriptor,
|
||||
new ExtensionFunction0<JetMutableMethodDescriptor, Unit>() {
|
||||
new Function1<JetMutableMethodDescriptor, Unit>() {
|
||||
@Override
|
||||
public Unit invoke(JetMutableMethodDescriptor descriptor) {
|
||||
int index = functionDescriptor.getValueParameters().indexOf(parameterToRemove);
|
||||
|
||||
+9
-13
@@ -16,27 +16,23 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.quickfix.createFromUsage.createVariable
|
||||
|
||||
import org.jetbrains.kotlin.psi.JetElement
|
||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.CreateFromUsageFixBase
|
||||
import org.jetbrains.kotlin.idea.JetBundle
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetChangeSignatureConfiguration
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.runChangeSignature
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetParameterInfo
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.JetMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
||||
import org.jetbrains.kotlin.idea.JetBundle
|
||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.CreateFromUsageFixBase
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.*
|
||||
import org.jetbrains.kotlin.psi.JetElement
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
|
||||
public class CreateParameterFromUsageFix(
|
||||
val functionDescriptor: FunctionDescriptor,
|
||||
val bindingContext: BindingContext,
|
||||
val parameterInfo: JetParameterInfo,
|
||||
val defaultValueContext: JetElement
|
||||
): CreateFromUsageFixBase(defaultValueContext) {
|
||||
) : CreateFromUsageFixBase(defaultValueContext) {
|
||||
override fun getText(): String {
|
||||
return JetBundle.message("create.parameter.from.usage", parameterInfo.getName())
|
||||
}
|
||||
@@ -44,7 +40,7 @@ public class CreateParameterFromUsageFix(
|
||||
override fun invoke(project: Project, editor: Editor?, file: JetFile?) {
|
||||
val config = object : JetChangeSignatureConfiguration {
|
||||
override fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor {
|
||||
return originalDescriptor.modify { addParameter(parameterInfo) }
|
||||
return originalDescriptor.modify { it.addParameter(parameterInfo) }
|
||||
}
|
||||
|
||||
override fun performSilently(affectedFunctions: Collection<PsiElement>): Boolean = false
|
||||
|
||||
+2
-2
@@ -43,9 +43,9 @@ public trait JetChangeSignatureConfiguration {
|
||||
}
|
||||
}
|
||||
|
||||
fun JetMethodDescriptor.modify(action: JetMutableMethodDescriptor.() -> Unit): JetMethodDescriptor {
|
||||
fun JetMethodDescriptor.modify(action: (JetMutableMethodDescriptor) -> Unit): JetMethodDescriptor {
|
||||
val newDescriptor = JetMutableMethodDescriptor(this)
|
||||
newDescriptor.action()
|
||||
action(newDescriptor)
|
||||
return newDescriptor
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -118,10 +118,10 @@ fun IntroduceParameterDescriptor.performRefactoring() {
|
||||
runWriteAction {
|
||||
val config = object : JetChangeSignatureConfiguration {
|
||||
override fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor {
|
||||
return originalDescriptor.modify {
|
||||
return originalDescriptor.modify { methodDescriptor ->
|
||||
if (!withDefaultValue) {
|
||||
val parameters = callable.getValueParameters()
|
||||
parametersToRemove.map { parameters.indexOf(it) }.sortDescending().forEach { removeParameter(it) }
|
||||
parametersToRemove.map { parameters.indexOf(it) }.sortDescending().forEach { methodDescriptor.removeParameter(it) }
|
||||
}
|
||||
|
||||
val parameterInfo = JetParameterInfo(functionDescriptor = callableDescriptor,
|
||||
@@ -130,7 +130,7 @@ fun IntroduceParameterDescriptor.performRefactoring() {
|
||||
defaultValueForParameter = if (withDefaultValue) newArgumentValue else null,
|
||||
valOrVar = valVar)
|
||||
parameterInfo.currentTypeText = newParameterTypeText
|
||||
addParameter(parameterInfo)
|
||||
methodDescriptor.addParameter(parameterInfo)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ public class RenameKotlinParameterProcessor : RenameKotlinPsiProcessor() {
|
||||
|
||||
val changeSignatureConfiguration = object : JetChangeSignatureConfiguration {
|
||||
override fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor {
|
||||
return originalDescriptor.modify { renameParameter(paramIndex, newName) }
|
||||
return originalDescriptor.modify { it.renameParameter(paramIndex, newName) }
|
||||
}
|
||||
|
||||
override fun performSilently(affectedFunctions: Collection<PsiElement>) = true
|
||||
|
||||
Reference in New Issue
Block a user