[FIR] Don't remove subsumed members from intersection overrides's overriddens

This fixes a bunch of missing overridden symbols in IR.
This is also required for fixing KT-59921 in the following commit
where we need to keep all overridden symbols of intersection overrides
so that we can enhance them properly.

#KT-57300 Fixed
#KT-57299 Fixed
#KT-59921
#KT-57300
#KT-62788
#KT-64271
#KT-64382
This commit is contained in:
Kirill Rakhman
2024-01-17 09:59:17 +01:00
committed by Space Team
parent d80dee6e1c
commit 3b841dcb98
58 changed files with 899 additions and 530 deletions
@@ -41,22 +41,22 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
/* fake */ override fun computeIfPresent(p0: @EnhancedNullability K, p1: @EnhancedNullability BiFunction<in @EnhancedNullability K, in V, out V?>): V?
// CHECK JVM_IR:
// Mangled name: MyMap#containsKey(1:0?){}kotlin.Boolean
// Public signature: /MyMap.containsKey|5388260987070917879[0]
// Public signature debug description: containsKey(1:0?){}kotlin.Boolean
/* fake */ override fun containsKey(p0: K?): Boolean
// Mangled name: MyMap#containsKey(1:0){}kotlin.Boolean
// Public signature: /MyMap.containsKey|-2697616884574929105[0]
// Public signature debug description: containsKey(1:0){}kotlin.Boolean
/* fake */ override fun containsKey(key: K): Boolean
// CHECK JVM_IR:
// Mangled name: MyMap#containsValue(1:1?){}kotlin.Boolean
// Public signature: /MyMap.containsValue|6075307672600079396[0]
// Public signature debug description: containsValue(1:1?){}kotlin.Boolean
/* fake */ override fun containsValue(p0: V?): Boolean
// Mangled name: MyMap#containsValue(1:1){}kotlin.Boolean
// Public signature: /MyMap.containsValue|4814293423579408279[0]
// Public signature debug description: containsValue(1:1){}kotlin.Boolean
/* fake */ override fun containsValue(value: V): Boolean
// CHECK JVM_IR:
// Mangled name: MyMap#equals(kotlin.Any?){}kotlin.Boolean
// Public signature: /MyMap.equals|722809408929142791[0]
// Public signature debug description: equals(kotlin.Any?){}kotlin.Boolean
/* fake */ override operator fun equals(p0: Any?): Boolean
/* fake */ override operator fun equals(other: Any?): Boolean
// CHECK:
// Mangled name: MyMap#forEach(java.util.function.BiConsumer<in|1:0{EnhancedNullability},in|1:1{EnhancedNullability}>{EnhancedNullability}){}
@@ -65,10 +65,10 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
/* fake */ override fun forEach(p0: @EnhancedNullability BiConsumer<in @EnhancedNullability K, in @EnhancedNullability V>): Unit
// CHECK JVM_IR:
// Mangled name: MyMap#get(1:0?){}1:1?
// Public signature: /MyMap.get|-6772263552617817959[0]
// Public signature debug description: get(1:0?){}1:1?
/* fake */ override operator fun get(p0: K?): V?
// Mangled name: MyMap#get(1:0){}1:1?
// Public signature: /MyMap.get|-2177239518810968262[0]
// Public signature debug description: get(1:0){}1:1?
/* fake */ override operator fun get(key: K): V?
// CHECK JVM_IR:
// Mangled name: MyMap#hashCode(){}kotlin.Int
@@ -91,12 +91,10 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
/* fake */ override fun merge(p0: @EnhancedNullability K, p1: @EnhancedNullability (V & Any), p2: @EnhancedNullability BiFunction<in V, in V, out V?>): V?
// CHECK:
// Mangled name: MyMap#putAll(kotlin.collections.Map<out|1:0?,1:1?>{EnhancedNullability}){}
// Mangled name for the signature by IR: putAll(kotlin.collections.Map<out|1:0?,1:1?>{EnhancedNullability}){}
// Mangled name for the signature by Frontend: putAll(kotlin.collections.Map<out|1:0?,out|1:1?>{EnhancedNullability}){}
// Public signature: /MyMap.putAll|8252374948943605914[0]
// Public signature debug description: putAll(kotlin.collections.Map<out|1:0?,1:1?>{EnhancedNullability}){}
/* fake */ override fun putAll(p0: @EnhancedNullability Map<out K?, V?>): Unit
// Mangled name: MyMap#putAll(kotlin.collections.Map<out|1:0,1:1>){}
// Public signature: /MyMap.putAll|3806055228188180795[0]
// Public signature debug description: putAll(kotlin.collections.Map<out|1:0,1:1>){}
/* fake */ override fun putAll(from: Map<out K, V>): Unit
// CHECK JVM_IR:
// Mangled name: MyMap#putIfAbsent(1:0{EnhancedNullability};1:1{EnhancedNullability}){}1:1?
@@ -105,10 +103,10 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
/* fake */ override fun putIfAbsent(p0: @EnhancedNullability K, p1: @EnhancedNullability V): V?
// CHECK JVM_IR:
// Mangled name: MyMap#remove(1:0?){}1:1?
// Public signature: /MyMap.remove|-6409265674850759324[0]
// Public signature debug description: remove(1:0?){}1:1?
/* fake */ override fun remove(p0: K?): V?
// Mangled name: MyMap#remove(1:0){}1:1?
// Public signature: /MyMap.remove|-2166109024517733367[0]
// Public signature debug description: remove(1:0){}1:1?
/* fake */ override fun remove(key: K): V?
// CHECK JVM_IR:
// Mangled name: MyMap#replace(1:0{EnhancedNullability};1:1{EnhancedNullability}){}1:1?
@@ -129,10 +127,10 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
/* fake */ override fun replaceAll(p0: @EnhancedNullability BiFunction<in @EnhancedNullability K, in @EnhancedNullability V, out @EnhancedNullability V>): Unit
// CHECK JVM_IR:
// Mangled name: MyMap#toString(){}kotlin.String{EnhancedNullability}
// Public signature: /MyMap.toString|7581629773206850948[0]
// Public signature debug description: toString(){}kotlin.String{EnhancedNullability}
/* fake */ override fun toString(): @EnhancedNullability String
// Mangled name: MyMap#toString(){}kotlin.String
// Public signature: /MyMap.toString|6958853723545266802[0]
// Public signature debug description: toString(){}kotlin.String
/* fake */ override fun toString(): String
// CHECK JVM_IR:
// Mangled name: MyMap#put(1:0;1:1){}1:1?
@@ -144,12 +142,12 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
// Mangled name: MyMap{}keys
// Public signature: /MyMap.keys|-1539062068328255324[0]
// Public signature debug description: {}keys
/* fake */ override val keys: MutableSet<K?>?
/* fake */ override val keys: MutableSet<K>
// CHECK JVM_IR:
// Mangled name: MyMap#<get-keys>(){}kotlin.collections.MutableSet<1:0?>?
// Public signature: /MyMap.keys.<get-keys>|-1655820107680360252[0]
// Public signature debug description: <get-keys>(){}kotlin.collections.MutableSet<1:0?>?
/* fake */ override get(): MutableSet<K?>?
// Mangled name: MyMap#<get-keys>(){}kotlin.collections.MutableSet<1:0>
// Public signature: /MyMap.keys.<get-keys>|7916886785914150473[0]
// Public signature debug description: <get-keys>(){}kotlin.collections.MutableSet<1:0>
/* fake */ override get(): MutableSet<K>
// CHECK:
// Mangled name: MyMap{}size
@@ -166,12 +164,12 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
// Mangled name: MyMap{}values
// Public signature: /MyMap.values|-764749005844117249[0]
// Public signature debug description: {}values
/* fake */ override val values: MutableCollection<V?>?
/* fake */ override val values: MutableCollection<V>
// CHECK JVM_IR:
// Mangled name: MyMap#<get-values>(){}kotlin.collections.MutableCollection<1:1?>?
// Public signature: /MyMap.values.<get-values>|-600458440523652989[0]
// Public signature debug description: <get-values>(){}kotlin.collections.MutableCollection<1:1?>?
/* fake */ override get(): MutableCollection<V?>?
// Mangled name: MyMap#<get-values>(){}kotlin.collections.MutableCollection<1:1>
// Public signature: /MyMap.values.<get-values>|2480674037943213638[0]
// Public signature debug description: <get-values>(){}kotlin.collections.MutableCollection<1:1>
/* fake */ override get(): MutableCollection<V>
// CHECK:
// Mangled name: MyMap{}entries
@@ -185,3 +183,4 @@ class MyMap<K : Any, V : Any> : AbstractMutableMap<K, V> {
override get(): MutableSet<MutableEntry<K, V>>
}