KT-10974 - code review changes
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.core.formatter
|
package org.jetbrains.kotlin.idea.core.formatter
|
||||||
|
|
||||||
|
import com.intellij.openapi.application.ApplicationBundle
|
||||||
import org.jetbrains.kotlin.resolve.ImportPath
|
import org.jetbrains.kotlin.resolve.ImportPath
|
||||||
|
|
||||||
class KotlinPackageEntry(
|
class KotlinPackageEntry(
|
||||||
@@ -15,14 +16,15 @@ class KotlinPackageEntry(
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@JvmField
|
@JvmField
|
||||||
val ALL_OTHER_IMPORTS_ENTRY = KotlinPackageEntry("<all other imports>", withSubpackages = true)
|
val ALL_OTHER_IMPORTS_ENTRY =
|
||||||
|
KotlinPackageEntry(ApplicationBundle.message("listbox.import.all.other.imports"), withSubpackages = true)
|
||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val ALL_OTHER_ALIAS_IMPORTS_ENTRY = KotlinPackageEntry("<all other alias imports>", withSubpackages = true)
|
val ALL_OTHER_ALIAS_IMPORTS_ENTRY = KotlinPackageEntry("<all other alias imports>", withSubpackages = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun matchesPackageName(otherPackageName: String): Boolean {
|
fun matchesPackageName(otherPackageName: String): Boolean {
|
||||||
if (this == ALL_OTHER_IMPORTS_ENTRY || this == ALL_OTHER_ALIAS_IMPORTS_ENTRY) return true
|
if (isSpecial) return true
|
||||||
|
|
||||||
if (otherPackageName.startsWith(packageName)) {
|
if (otherPackageName.startsWith(packageName)) {
|
||||||
if (otherPackageName.length == packageName.length) return true
|
if (otherPackageName.length == packageName.length) return true
|
||||||
@@ -47,10 +49,7 @@ class KotlinPackageEntry(
|
|||||||
return entry.packageName.count { it == '.' } < packageName.count { it == '.' }
|
return entry.packageName.count { it == '.' } < packageName.count { it == '.' }
|
||||||
}
|
}
|
||||||
|
|
||||||
val isSpecial: Boolean
|
val isSpecial: Boolean get() = this == ALL_OTHER_IMPORTS_ENTRY || this == ALL_OTHER_ALIAS_IMPORTS_ENTRY
|
||||||
get() {
|
|
||||||
return (this == ALL_OTHER_IMPORTS_ENTRY || this == ALL_OTHER_ALIAS_IMPORTS_ENTRY)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun toString(): String {
|
override fun toString(): String {
|
||||||
return packageName
|
return packageName
|
||||||
|
|||||||
+4
-25
@@ -9,15 +9,10 @@ import com.intellij.openapi.util.InvalidDataException
|
|||||||
import com.intellij.openapi.util.JDOMExternalizable
|
import com.intellij.openapi.util.JDOMExternalizable
|
||||||
import org.jdom.Element
|
import org.jdom.Element
|
||||||
|
|
||||||
class KotlinPackageEntryTable: JDOMExternalizable, Cloneable {
|
class KotlinPackageEntryTable : JDOMExternalizable, Cloneable {
|
||||||
private val entries = mutableListOf<KotlinPackageEntry>()
|
private val entries = mutableListOf<KotlinPackageEntry>()
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
val entryCount: Int get() = entries.size
|
||||||
if (other !is KotlinPackageEntryTable) return false
|
|
||||||
if (other.entries.size != entries.size) return false
|
|
||||||
|
|
||||||
return entries.zip(other.entries).any { (entry, otherEntry) -> entry != otherEntry }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override fun clone(): KotlinPackageEntryTable {
|
public override fun clone(): KotlinPackageEntryTable {
|
||||||
val clone = KotlinPackageEntryTable()
|
val clone = KotlinPackageEntryTable()
|
||||||
@@ -25,10 +20,6 @@ class KotlinPackageEntryTable: JDOMExternalizable, Cloneable {
|
|||||||
return clone
|
return clone
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
|
||||||
return entries.firstOrNull()?.hashCode() ?: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
fun copyFrom(packageTable: KotlinPackageEntryTable) {
|
fun copyFrom(packageTable: KotlinPackageEntryTable) {
|
||||||
entries.clear()
|
entries.clear()
|
||||||
entries.addAll(packageTable.entries)
|
entries.addAll(packageTable.entries)
|
||||||
@@ -50,24 +41,12 @@ class KotlinPackageEntryTable: JDOMExternalizable, Cloneable {
|
|||||||
return entries[index]
|
return entries[index]
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEntryCount(): Int {
|
|
||||||
return entries.size
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setEntryAt(entry: KotlinPackageEntry, index: Int) {
|
fun setEntryAt(entry: KotlinPackageEntry, index: Int) {
|
||||||
entries[index] = entry
|
entries[index] = entry
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun contains(packageName: String): Boolean {
|
operator fun contains(packageName: String): Boolean {
|
||||||
for (entry in entries) {
|
return entries.any { !it.isSpecial && it.matchesPackageName(packageName) }
|
||||||
if (packageName.startsWith(entry.packageName)) {
|
|
||||||
if (packageName.length == entry.packageName.length) return true
|
|
||||||
if (entry.withSubpackages) {
|
|
||||||
if (packageName[entry.packageName.length] == '.') return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun removeEmptyPackages() {
|
fun removeEmptyPackages() {
|
||||||
@@ -102,7 +81,7 @@ class KotlinPackageEntryTable: JDOMExternalizable, Cloneable {
|
|||||||
for (entry in entries) {
|
for (entry in entries) {
|
||||||
val element = Element("package")
|
val element = Element("package")
|
||||||
parentNode.addContent(element)
|
parentNode.addContent(element)
|
||||||
val name = if (entry == KotlinPackageEntry.ALL_OTHER_IMPORTS_ENTRY || entry == KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY) "" else entry.packageName
|
val name = if (entry.isSpecial) "" else entry.packageName
|
||||||
val alias = (entry == KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY)
|
val alias = (entry == KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY)
|
||||||
|
|
||||||
element.setAttribute("name", name)
|
element.setAttribute("name", name)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import javax.swing.JTable
|
|||||||
import javax.swing.ListSelectionModel
|
import javax.swing.ListSelectionModel
|
||||||
import javax.swing.table.AbstractTableModel
|
import javax.swing.table.AbstractTableModel
|
||||||
|
|
||||||
open class BaseKotlinImportLayoutPanel(title: String): JPanel(BorderLayout()) {
|
open class BaseKotlinImportLayoutPanel(title: String) : JPanel(BorderLayout()) {
|
||||||
val packageTable = KotlinPackageEntryTable()
|
val packageTable = KotlinPackageEntryTable()
|
||||||
val layoutTable = createTableForPackageEntries(packageTable)
|
val layoutTable = createTableForPackageEntries(packageTable)
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ open class BaseKotlinImportLayoutPanel(title: String): JPanel(BorderLayout()) {
|
|||||||
protected fun addPackage() {
|
protected fun addPackage() {
|
||||||
var row = layoutTable.selectedRow + 1
|
var row = layoutTable.selectedRow + 1
|
||||||
if (row < 0) {
|
if (row < 0) {
|
||||||
row = packageTable.getEntryCount()
|
row = packageTable.entryCount
|
||||||
}
|
}
|
||||||
val entry = KotlinPackageEntry("", true)
|
val entry = KotlinPackageEntry("", true)
|
||||||
packageTable.insertEntryAt(entry, row)
|
packageTable.insertEntryAt(entry, row)
|
||||||
@@ -53,9 +53,7 @@ open class BaseKotlinImportLayoutPanel(title: String): JPanel(BorderLayout()) {
|
|||||||
if (row < 0) return
|
if (row < 0) return
|
||||||
|
|
||||||
val entry = packageTable.getEntryAt(row)
|
val entry = packageTable.getEntryAt(row)
|
||||||
if (entry == KotlinPackageEntry.ALL_OTHER_IMPORTS_ENTRY || entry == KotlinPackageEntry.ALL_OTHER_IMPORTS_ENTRY) {
|
if (entry.isSpecial) return
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
TableUtil.stopEditing(layoutTable)
|
TableUtil.stopEditing(layoutTable)
|
||||||
packageTable.removeEntryAt(row)
|
packageTable.removeEntryAt(row)
|
||||||
@@ -63,7 +61,7 @@ open class BaseKotlinImportLayoutPanel(title: String): JPanel(BorderLayout()) {
|
|||||||
val model = layoutTable.model as AbstractTableModel
|
val model = layoutTable.model as AbstractTableModel
|
||||||
model.fireTableRowsDeleted(row, row)
|
model.fireTableRowsDeleted(row, row)
|
||||||
|
|
||||||
if (row >= packageTable.getEntryCount()) {
|
if (row >= packageTable.entryCount) {
|
||||||
row--
|
row--
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +87,7 @@ open class BaseKotlinImportLayoutPanel(title: String): JPanel(BorderLayout()) {
|
|||||||
|
|
||||||
protected fun movePackageDown() {
|
protected fun movePackageDown() {
|
||||||
val row = layoutTable.selectedRow
|
val row = layoutTable.selectedRow
|
||||||
if (row >= packageTable.getEntryCount() - 1) return
|
if (row >= packageTable.entryCount - 1) return
|
||||||
|
|
||||||
TableUtil.stopEditing(layoutTable)
|
TableUtil.stopEditing(layoutTable)
|
||||||
val entry = packageTable.getEntryAt(row)
|
val entry = packageTable.getEntryAt(row)
|
||||||
@@ -109,7 +107,8 @@ open class BaseKotlinImportLayoutPanel(title: String): JPanel(BorderLayout()) {
|
|||||||
TableUtil.editCellAt(layoutTable, row, 0)
|
TableUtil.editCellAt(layoutTable, row, 0)
|
||||||
val editorComp = layoutTable.editorComponent
|
val editorComp = layoutTable.editorComponent
|
||||||
if (editorComp != null) {
|
if (editorComp != null) {
|
||||||
IdeFocusManager.getGlobalInstance().doWhenFocusSettlesDown { IdeFocusManager.getGlobalInstance().requestFocus(editorComp, true) }
|
IdeFocusManager.getGlobalInstance()
|
||||||
|
.doWhenFocusSettlesDown { IdeFocusManager.getGlobalInstance().requestFocus(editorComp, true) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,7 +155,7 @@ open class BaseKotlinImportLayoutPanel(title: String): JPanel(BorderLayout()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun fixColumnWidthToHeader(columnIndex: Int) {
|
private fun fixColumnWidthToHeader(columnIndex: Int) {
|
||||||
with (layoutTable) {
|
with(layoutTable) {
|
||||||
val column = columnModel.getColumn(columnIndex)
|
val column = columnModel.getColumn(columnIndex)
|
||||||
val width = 15 + tableHeader.getFontMetrics(tableHeader.font).stringWidth(getColumnName(columnIndex))
|
val width = 15 + tableHeader.getFontMetrics(tableHeader.font).stringWidth(getColumnName(columnIndex))
|
||||||
|
|
||||||
@@ -166,14 +165,14 @@ open class BaseKotlinImportLayoutPanel(title: String): JPanel(BorderLayout()) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class KotlinStarImportLayoutPanel: BaseKotlinImportLayoutPanel(ApplicationBundle.message("title.packages.to.use.import.with")) {
|
class KotlinStarImportLayoutPanel : BaseKotlinImportLayoutPanel(ApplicationBundle.message("title.packages.to.use.import.with")) {
|
||||||
init {
|
init {
|
||||||
val importLayoutPanel = ToolbarDecorator.createDecorator(layoutTable)
|
val importLayoutPanel = ToolbarDecorator.createDecorator(layoutTable)
|
||||||
.setAddAction { addPackage() }
|
.setAddAction { addPackage() }
|
||||||
.setRemoveAction { removePackage() }
|
.setRemoveAction { removePackage() }
|
||||||
.setButtonComparator(
|
.setButtonComparator(
|
||||||
"Add",
|
ApplicationBundle.message("button.add.package"),
|
||||||
"Remove"
|
ApplicationBundle.message("button.remove"),
|
||||||
).setPreferredSize(Dimension(-1, 100))
|
).setPreferredSize(Dimension(-1, 100))
|
||||||
.createPanel()
|
.createPanel()
|
||||||
|
|
||||||
@@ -182,7 +181,7 @@ class KotlinStarImportLayoutPanel: BaseKotlinImportLayoutPanel(ApplicationBundle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class KotlinImportOrderLayoutPanel: BaseKotlinImportLayoutPanel(ApplicationBundle.message("title.import.layout")) {
|
class KotlinImportOrderLayoutPanel : BaseKotlinImportLayoutPanel(ApplicationBundle.message("title.import.layout")) {
|
||||||
private val cbImportAliasesSeparately = JBCheckBox("Import aliases separately")
|
private val cbImportAliasesSeparately = JBCheckBox("Import aliases separately")
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@@ -190,7 +189,7 @@ class KotlinImportOrderLayoutPanel: BaseKotlinImportLayoutPanel(ApplicationBundl
|
|||||||
|
|
||||||
val importLayoutPanel = ToolbarDecorator.createDecorator(layoutTable)
|
val importLayoutPanel = ToolbarDecorator.createDecorator(layoutTable)
|
||||||
.addExtraAction(
|
.addExtraAction(
|
||||||
object: DumbAwareActionButton(ApplicationBundle.message("button.add.package"), IconUtil.getAddPackageIcon()) {
|
object : DumbAwareActionButton(ApplicationBundle.message("button.add.package"), IconUtil.getAddPackageIcon()) {
|
||||||
override fun actionPerformed(event: AnActionEvent) {
|
override fun actionPerformed(event: AnActionEvent) {
|
||||||
addPackage()
|
addPackage()
|
||||||
}
|
}
|
||||||
@@ -205,14 +204,14 @@ class KotlinImportOrderLayoutPanel: BaseKotlinImportLayoutPanel(ApplicationBundl
|
|||||||
.setMoveDownAction { movePackageDown() }
|
.setMoveDownAction { movePackageDown() }
|
||||||
.setRemoveActionUpdater {
|
.setRemoveActionUpdater {
|
||||||
val selectedRow = layoutTable.selectedRow
|
val selectedRow = layoutTable.selectedRow
|
||||||
val entry = if (selectedRow in 0 until packageTable.getEntryCount()) packageTable.getEntryAt(selectedRow) else null
|
val entry = if (selectedRow in 0 until packageTable.entryCount) packageTable.getEntryAt(selectedRow) else null
|
||||||
|
|
||||||
entry != null && entry != KotlinPackageEntry.ALL_OTHER_IMPORTS_ENTRY && entry != KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY
|
entry?.isSpecial == false
|
||||||
}.setButtonComparator(
|
}.setButtonComparator(
|
||||||
ApplicationBundle.message("button.add.package"),
|
ApplicationBundle.message("button.add.package"),
|
||||||
"Remove",
|
ApplicationBundle.message("button.remove"),
|
||||||
"Up",
|
ApplicationBundle.message("button.move.up"),
|
||||||
"Down"
|
ApplicationBundle.message("button.move.down")
|
||||||
).setPreferredSize(Dimension(-1, 100))
|
).setPreferredSize(Dimension(-1, 100))
|
||||||
.createPanel()
|
.createPanel()
|
||||||
|
|
||||||
@@ -221,15 +220,15 @@ class KotlinImportOrderLayoutPanel: BaseKotlinImportLayoutPanel(ApplicationBundl
|
|||||||
|
|
||||||
cbImportAliasesSeparately.addItemListener { _ ->
|
cbImportAliasesSeparately.addItemListener { _ ->
|
||||||
if (areImportAliasesEnabled()) {
|
if (areImportAliasesEnabled()) {
|
||||||
if (packageTable.getEntries().none { it == KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY }) {
|
if (KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY !in packageTable.getEntries()) {
|
||||||
packageTable.addEntry(KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY)
|
packageTable.addEntry(KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY)
|
||||||
val row = packageTable.getEntryCount() - 1
|
val row = packageTable.entryCount - 1
|
||||||
val model = layoutTable.model as AbstractTableModel
|
val model = layoutTable.model as AbstractTableModel
|
||||||
model.fireTableRowsInserted(row, row)
|
model.fireTableRowsInserted(row, row)
|
||||||
layoutTable.setRowSelectionInterval(row, row)
|
layoutTable.setRowSelectionInterval(row, row)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
val entryIndex = packageTable.getEntries().indexOfFirst { it == KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY }
|
val entryIndex = packageTable.getEntries().indexOf(KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY)
|
||||||
|
|
||||||
if (entryIndex != -1) {
|
if (entryIndex != -1) {
|
||||||
val currentIndex = layoutTable.selectedRow
|
val currentIndex = layoutTable.selectedRow
|
||||||
@@ -248,7 +247,7 @@ class KotlinImportOrderLayoutPanel: BaseKotlinImportLayoutPanel(ApplicationBundl
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun recomputeAliasesCheckbox() {
|
fun recomputeAliasesCheckbox() {
|
||||||
cbImportAliasesSeparately.isSelected = packageTable.getEntries().any { it == KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY }
|
cbImportAliasesSeparately.isSelected = KotlinPackageEntry.ALL_OTHER_ALIAS_IMPORTS_ENTRY in packageTable.getEntries()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun areImportAliasesEnabled(): Boolean {
|
private fun areImportAliasesEnabled(): Boolean {
|
||||||
@@ -258,6 +257,8 @@ class KotlinImportOrderLayoutPanel: BaseKotlinImportLayoutPanel(ApplicationBundl
|
|||||||
|
|
||||||
fun createTableForPackageEntries(packageTable: KotlinPackageEntryTable): JBTable {
|
fun createTableForPackageEntries(packageTable: KotlinPackageEntryTable): JBTable {
|
||||||
val names = arrayOf(ApplicationBundle.message("listbox.import.package"), ApplicationBundle.message("listbox.import.with.subpackages"))
|
val names = arrayOf(ApplicationBundle.message("listbox.import.package"), ApplicationBundle.message("listbox.import.with.subpackages"))
|
||||||
|
val packageNameColumnIndex = 0
|
||||||
|
val withSubpackagesColumnIndex = 1
|
||||||
|
|
||||||
val dataModel = object : AbstractTableModel() {
|
val dataModel = object : AbstractTableModel() {
|
||||||
override fun getColumnCount(): Int {
|
override fun getColumnCount(): Int {
|
||||||
@@ -265,7 +266,7 @@ fun createTableForPackageEntries(packageTable: KotlinPackageEntryTable): JBTable
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun getRowCount(): Int {
|
override fun getRowCount(): Int {
|
||||||
return packageTable.getEntryCount()
|
return packageTable.entryCount
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getValueAt(rowIndex: Int, columnIndex: Int): Any? {
|
override fun getValueAt(rowIndex: Int, columnIndex: Int): Any? {
|
||||||
@@ -273,8 +274,8 @@ fun createTableForPackageEntries(packageTable: KotlinPackageEntryTable): JBTable
|
|||||||
if (!isCellEditable(rowIndex, columnIndex)) return null
|
if (!isCellEditable(rowIndex, columnIndex)) return null
|
||||||
|
|
||||||
return when (columnIndex) {
|
return when (columnIndex) {
|
||||||
0 -> entry.packageName
|
packageNameColumnIndex -> entry.packageName
|
||||||
1 -> entry.withSubpackages
|
withSubpackagesColumnIndex -> entry.withSubpackages
|
||||||
else -> throw IllegalArgumentException(columnIndex.toString())
|
else -> throw IllegalArgumentException(columnIndex.toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -290,8 +291,8 @@ fun createTableForPackageEntries(packageTable: KotlinPackageEntryTable): JBTable
|
|||||||
|
|
||||||
override fun getColumnClass(columnIndex: Int): Class<*> {
|
override fun getColumnClass(columnIndex: Int): Class<*> {
|
||||||
return when (columnIndex) {
|
return when (columnIndex) {
|
||||||
0 -> String::class.java
|
packageNameColumnIndex -> String::class.java
|
||||||
1 -> Boolean::class.javaObjectType
|
withSubpackagesColumnIndex -> Boolean::class.javaObjectType
|
||||||
else -> throw IllegalArgumentException(columnIndex.toString())
|
else -> throw IllegalArgumentException(columnIndex.toString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -300,8 +301,8 @@ fun createTableForPackageEntries(packageTable: KotlinPackageEntryTable): JBTable
|
|||||||
val entry = packageTable.getEntryAt(rowIndex)
|
val entry = packageTable.getEntryAt(rowIndex)
|
||||||
|
|
||||||
val newEntry = when (columnIndex) {
|
val newEntry = when (columnIndex) {
|
||||||
0 -> KotlinPackageEntry((value as String).trim(), entry.withSubpackages)
|
packageNameColumnIndex -> KotlinPackageEntry((value as String).trim(), entry.withSubpackages)
|
||||||
1 -> KotlinPackageEntry(entry.packageName, value.toString().toBoolean())
|
withSubpackagesColumnIndex -> KotlinPackageEntry(entry.packageName, value.toString().toBoolean())
|
||||||
else -> throw IllegalArgumentException(columnIndex.toString())
|
else -> throw IllegalArgumentException(columnIndex.toString())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -146,11 +146,11 @@ class ImportSettingsPanel(private val commonSettings: CodeStyleSettings) : JPane
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun isModified(list: KotlinPackageEntryTable, table: KotlinPackageEntryTable): Boolean {
|
private fun isModified(list: KotlinPackageEntryTable, table: KotlinPackageEntryTable): Boolean {
|
||||||
if (list.getEntryCount() != table.getEntryCount()) {
|
if (list.entryCount != table.entryCount) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i in 0 until list.getEntryCount()) {
|
for (i in 0 until list.entryCount) {
|
||||||
val entry1 = list.getEntryAt(i)
|
val entry1 = list.getEntryAt(i)
|
||||||
val entry2 = table.getEntryAt(i)
|
val entry2 = table.getEntryAt(i)
|
||||||
if (entry1 != entry2) {
|
if (entry1 != entry2) {
|
||||||
|
|||||||
@@ -13,16 +13,12 @@ import java.util.Comparator
|
|||||||
class ImportPathComparator(
|
class ImportPathComparator(
|
||||||
private val packageTable: KotlinPackageEntryTable
|
private val packageTable: KotlinPackageEntryTable
|
||||||
) : Comparator<ImportPath> {
|
) : Comparator<ImportPath> {
|
||||||
override fun compare(import1: ImportPath, import2: ImportPath): Int {
|
private val comparator = compareBy<ImportPath>(
|
||||||
val index1 = bestMatchIndex(import1)
|
{ import -> bestMatchIndex(import) },
|
||||||
val index2 = bestMatchIndex(import2)
|
{ import -> import.toString() }
|
||||||
|
)
|
||||||
|
|
||||||
return when {
|
override fun compare(import1: ImportPath, import2: ImportPath): Int = comparator.compare(import1, import2)
|
||||||
index1 == index2 -> import1.toString().compareTo(import2.toString())
|
|
||||||
index1 < index2 -> -1
|
|
||||||
else -> +1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun bestMatchIndex(path: ImportPath): Int {
|
private fun bestMatchIndex(path: ImportPath): Int {
|
||||||
var bestIndex: Int? = null
|
var bestIndex: Int? = null
|
||||||
|
|||||||
Reference in New Issue
Block a user