fun toParametersInfo()

in src/main/kotlin/org/arend/refactoring/changeSignature/ChangeSignatureRefactoringDescriptor.kt [85:107]


    fun toParametersInfo(): ArendParametersInfo? {
        val properOldParameters = oldParameters.filter {
            !it.isThis() && !it.isExternal() && !it.isDataParameter && it.getReferable() !is ArendClassField && (it.classParameterKind == null || it.classParameterKind == ClassParameterKind.OWN_PARAMETER)
        }
        val properNewParameters = newParameters.filter {
            val referable = it.oldParameter?.getReferable()
            !it.isThis() && !it.isExternal() && !it.isDataParameter && referable !is ArendClassField && (it.classParameterKind == null || it.classParameterKind == ClassParameterKind.OWN_PARAMETER)
        }
        val parameterInfo = getParameterInfo(getAffectedDefinition() as? PsiLocatedReferable ?: return null)
        val newParameterInfo = ArrayList<ArendTextualParameter>()

        for (nP in properNewParameters) {
            val oldIndex = if (nP.oldParameter != null) properOldParameters.indexOf(nP.oldParameter) else -1
            val isClassifying = if (oldIndex == -1) false else parameterInfo[oldIndex].isClassifying
            val isCoerce = if (oldIndex == -1) false else parameterInfo[oldIndex].isCoerce
            val isProperty = if (oldIndex == -1) false else parameterInfo[oldIndex].isCoerce
            val accessModifier = if (oldIndex == -1) AccessModifier.PUBLIC else parameterInfo[oldIndex].accessModifier
            val correspondingReferable = if (oldIndex == -1) null else parameterInfo[oldIndex].correspondingReferable
            newParameterInfo.add(ArendTextualParameter(nP.getNameOrUnderscore(), nP.getType(), oldIndex, nP.isExplicit, isClassifying, isCoerce, isProperty, accessModifier, correspondingReferable))
        }

        return ArendParametersInfo(getAffectedDefinition() as PsiLocatedReferable, newParameterInfo)
    }