in src/main/kotlin/org/arend/refactoring/changeSignature/ArendChangeSignatureDialog.kt [233:266]
override fun editingStopped(e: ChangeEvent) {
super.editingStopped(e)
when (val src = e.source) {
is StringTableCellEditor -> {
val i = myParametersTable.selectionModel.selectedIndices.firstOrNull()
val newName = if (i != null) myParametersTableModel.items.getOrNull(i)?.parameter?.name else null
if (i != null) invokeLater {
resetThreadContext().use { _ ->
val deps = HashSet<Int>()
if (newName == null || myReturnTypeCodeFragment?.text?.contains(newName) == true) deps.add(-1)
for (j in i+1 until myParametersTable.items.size) {
val psi = myParametersTableModel.items.getOrNull(j)?.typeCodeFragment
if (psi != null) {
val children = psi.descendants().filter { it.elementType == ArendElementTypes.ID }.map { it.text }.toSet()
if (newName == null || children.contains(newName))
deps.add(j)
}
}
invalidateIndices(deps)
}
}
}
is CodeFragmentTableCellEditorBase -> {
val fragment = (src.cellEditorValue as? ArendExpressionCodeFragment)
val item = myParametersTable.items.firstOrNull { it.typeCodeFragment == fragment }
val codeAnalyzer = DaemonCodeAnalyzer.getInstance(project) as? DaemonCodeAnalyzerImpl
if (codeAnalyzer != null && fragment != null && item != null)
invokeLater {
invalidateIndices(calculateUsagesOf(singletonList(item)))
}
}
}
}