diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/JvmSignatureClashDetector.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/JvmSignatureClashDetector.kt index 7939eac6f85..e5a735952f6 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/JvmSignatureClashDetector.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/JvmSignatureClashDetector.kt @@ -22,8 +22,8 @@ class JvmSignatureClashDetector( private val type: Type, private val context: JvmBackendContext ) { - private val methodsBySignature = HashMap>() - private val fieldsBySignature = HashMap>() + private val methodsBySignature = LinkedHashMap>() + private val fieldsBySignature = LinkedHashMap>() fun trackField(irField: IrField, rawSignature: RawSignature) { fieldsBySignature.getOrPut(rawSignature) { SmartSet.create() }.add(irField) @@ -49,7 +49,7 @@ class JvmSignatureClashDetector( } private fun getOverriddenFunctions(irFunction: IrSimpleFunction): Set { - val result = HashSet() + val result = LinkedHashSet() collectOverridesOf(irFunction, result) return result } @@ -146,7 +146,7 @@ class JvmSignatureClashDetector( irDeclarations: Collection, conflictingJvmDeclarationsData: ConflictingJvmDeclarationsData ) { - val psiElements = irDeclarations.mapNotNullTo(HashSet()) { it.getElementForDiagnostics() } + val psiElements = irDeclarations.mapNotNullTo(LinkedHashSet()) { it.getElementForDiagnostics() } for (psiElement in psiElements) { context.psiErrorBuilder.at(psiElement) .report(diagnosticFactory1, conflictingJvmDeclarationsData) diff --git a/compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.out b/compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.out index a060e2b4509..28ecabd8855 100644 --- a/compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.out +++ b/compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.out @@ -1,6 +1,6 @@ -compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$getFoo$cp()I): - fun `access$getFoo$cp`(): Int defined in A - fun `access$getFoo$cp`(): Int defined in A +compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$getFoo$p(LA;)I): + fun `access$getFoo$p`(`$this`: A): Int defined in A + fun `access$getFoo$p`(a: A): Int defined in A class A { ^ compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$setFoo$p(LA;I)V): @@ -8,16 +8,16 @@ compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.kt:1:7: e fun `access$setFoo$p`(a: A, d: Int): Unit defined in A class A { ^ +compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$getFoo$cp()I): + fun `access$getFoo$cp`(): Int defined in A + fun `access$getFoo$cp`(): Int defined in A +class A { + ^ compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$setFoo$cp(I)V): fun `access$setFoo$cp`(``: Int): Unit defined in A fun `access$setFoo$cp`(d: Int): Unit defined in A class A { ^ -compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$getFoo$p(LA;)I): - fun `access$getFoo$p`(`$this`: A): Int defined in A - fun `access$getFoo$p`(a: A): Int defined in A -class A { - ^ compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.kt:5:5: error: platform declaration clash: The following declarations have the same JVM signature (access$getFoo$p(LA;)I): fun `access$getFoo$p`(`$this`: A): Int defined in A fun `access$getFoo$p`(a: A): Int defined in A diff --git a/compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.out b/compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.out index 1b132b195d9..623e736c7a2 100644 --- a/compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.out +++ b/compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.out @@ -1,3 +1,13 @@ +compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$getFoo$p(LA;)I): + fun `access$getFoo$p`(`$this`: A): Int defined in A + fun `access$getFoo$p`(a: A): Int defined in A +class A { + ^ +compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$setFoo$p(LA;I)V): + fun `access$setFoo$p`(`$this`: A, ``: Int): Unit defined in A + fun `access$setFoo$p`(a: A, d: Int): Unit defined in A +class A { + ^ compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$getFoo(LA;)I): fun `access$getFoo`(`$this`: A): Int defined in A fun `access$getFoo`(a: A): Int defined in A @@ -8,16 +18,6 @@ compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.kt:1:7: fun `access$setFoo`(a: A, d: Int): Unit defined in A class A { ^ -compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$setFoo$p(LA;I)V): - fun `access$setFoo$p`(`$this`: A, ``: Int): Unit defined in A - fun `access$setFoo$p`(a: A, d: Int): Unit defined in A -class A { - ^ -compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.kt:1:7: error: platform declaration clash: The following declarations have the same JVM signature (access$getFoo$p(LA;)I): - fun `access$getFoo$p`(`$this`: A): Int defined in A - fun `access$getFoo$p`(a: A): Int defined in A -class A { - ^ compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.kt:5:5: error: platform declaration clash: The following declarations have the same JVM signature (access$getFoo$p(LA;)I): fun `access$getFoo$p`(`$this`: A): Int defined in A fun `access$getFoo$p`(a: A): Int defined in A diff --git a/compiler/testData/cli/jvm/syntheticAccessorSignatureClash.out b/compiler/testData/cli/jvm/syntheticAccessorSignatureClash.out index c0adaf24f8b..af756588cfa 100644 --- a/compiler/testData/cli/jvm/syntheticAccessorSignatureClash.out +++ b/compiler/testData/cli/jvm/syntheticAccessorSignatureClash.out @@ -3,6 +3,16 @@ compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt:14:7: error: accide fun `access$foo`(`$this`: Derived): Unit defined in Derived class Derived : Base() { ^ +compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt:14:7: error: accidental override: The following declarations have the same JVM signature (access$getBar$p(LDerived;)I): + fun `access$getBar$p`(d: Derived): Int defined in Derived + fun `access$getBar$p`(`$this`: Derived): Int defined in Derived +class Derived : Base() { + ^ +compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt:14:7: error: accidental override: The following declarations have the same JVM signature (access$getBaz$p(LDerived;)I): + fun `access$getBaz$p`(d: Derived): Int defined in Derived + fun `access$getBaz$p`(`$this`: Derived): Int defined in Derived +class Derived : Base() { + ^ compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt:14:7: error: accidental override: The following declarations have the same JVM signature (access$getBoo$p(LDerived;)I): fun `access$getBoo$p`(d: Derived): Int defined in Derived fun `access$getBoo$p`(`$this`: Derived): Int defined in Derived @@ -13,19 +23,9 @@ compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt:14:7: error: accide fun `access$setBar$p`(`$this`: Derived, ``: Int): Unit defined in Derived class Derived : Base() { ^ -compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt:14:7: error: accidental override: The following declarations have the same JVM signature (access$getBar$p(LDerived;)I): - fun `access$getBar$p`(d: Derived): Int defined in Derived - fun `access$getBar$p`(`$this`: Derived): Int defined in Derived -class Derived : Base() { - ^ compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt:14:7: error: accidental override: The following declarations have the same JVM signature (access$setBar1$p(LDerived;I)V): fun `access$setBar1$p`(d: Derived, i: Int): Unit defined in Derived fun `access$setBar1$p`(`$this`: Derived, ``: Int): Unit defined in Derived class Derived : Base() { ^ -compiler/testData/cli/jvm/syntheticAccessorSignatureClash.kt:14:7: error: accidental override: The following declarations have the same JVM signature (access$getBaz$p(LDerived;)I): - fun `access$getBaz$p`(d: Derived): Int defined in Derived - fun `access$getBaz$p`(`$this`: Derived): Int defined in Derived -class Derived : Base() { - ^ COMPILATION_ERROR