diff --git a/java/java-analysis-api/src/com/intellij/lang/jvm/actions/methodRequests.kt b/java/java-analysis-api/src/com/intellij/lang/jvm/actions/methodRequests.kt index 311def8e1af4..c5506a76fa5c 100644 --- a/java/java-analysis-api/src/com/intellij/lang/jvm/actions/methodRequests.kt +++ b/java/java-analysis-api/src/com/intellij/lang/jvm/actions/methodRequests.kt @@ -10,6 +10,8 @@ import com.intellij.openapi.project.Project import com.intellij.psi.PsiJvmSubstitutor import com.intellij.psi.PsiSubstitutor import com.intellij.psi.PsiType +import java.util.function.Function +import java.util.function.Supplier import com.intellij.openapi.util.Pair as JBPair private class SimpleMethodRequest( @@ -57,8 +59,8 @@ fun constructorRequest(project: Project, parameters: List>): ChangeParametersRequest = SimpleChangeParametersRequest(parameters.map { expectedParameter(it.value, it.key) }) -fun updateMethodParametersRequest(parametersOwnerPointer: () -> JvmMethod?, - updateFunction: (List) -> List): ChangeParametersRequest = +fun updateMethodParametersRequest(parametersOwnerPointer: Supplier, + updateFunction: Function, List>): ChangeParametersRequest = UpdateParametersRequest(parametersOwnerPointer, updateFunction) private class SimpleChangeParametersRequest(private val parameters: List) : ChangeParametersRequest { @@ -68,15 +70,15 @@ private class SimpleChangeParametersRequest(private val parameters: List JvmMethod?, - val updateFunction: (List) -> List) : ChangeParametersRequest { +private class UpdateParametersRequest(val parametersOwnerPointer: Supplier, + val updateFunction: Function, List>) : ChangeParametersRequest { override fun getExpectedParameters(): List { - val jvmMethod = parametersOwnerPointer() + val jvmMethod = parametersOwnerPointer.get() ?: throw IllegalStateException("parametersOwnerPointer is invalid, please check isValid() before calling this method") - return updateFunction(jvmMethod.parameters.map { ChangeParametersRequest.ExistingParameterWrapper(it) }) + return updateFunction.apply(jvmMethod.parameters.map { ChangeParametersRequest.ExistingParameterWrapper(it) }) } - override fun isValid(): Boolean = parametersOwnerPointer() != null + override fun isValid(): Boolean = parametersOwnerPointer.get() != null }