JVM_IR more precise superclass stub filtering

Filter out abstract members of superclasses when generating collection
stubs.

KT-43207
This commit is contained in:
Dmitry Petrov
2020-11-10 06:45:24 +03:00
parent 7f26deb5e6
commit e10d8e51b6
11 changed files with 325 additions and 94 deletions
@@ -0,0 +1,14 @@
// WITH_RUNTIME
abstract class AIterD : AbstractIterator<Double>()
abstract class ACollD : AbstractCollection<Double>()
abstract class AMCollD : AbstractMutableCollection<Double>()
abstract class ASetD : AbstractSet<Double>()
abstract class AMSetD : AbstractMutableSet<Double>()
abstract class AListD : AbstractList<Double>()
@@ -0,0 +1,54 @@
@kotlin.Metadata
public abstract class ACollD {
// source: 'inheritingFromAbstractCollections.kt'
public method <init>(): void
public bridge method contains(p0: double): boolean
public bridge final method contains(p0: java.lang.Object): boolean
public method iterator(): java.util.Iterator
}
@kotlin.Metadata
public abstract class AIterD {
// source: 'inheritingFromAbstractCollections.kt'
public method <init>(): void
}
@kotlin.Metadata
public abstract class AListD {
// source: 'inheritingFromAbstractCollections.kt'
public method <init>(): void
public bridge method contains(p0: double): boolean
public bridge final method contains(p0: java.lang.Object): boolean
public bridge method indexOf(p0: double): int
public bridge final method indexOf(p0: java.lang.Object): int
public bridge method lastIndexOf(p0: double): int
public bridge final method lastIndexOf(p0: java.lang.Object): int
}
@kotlin.Metadata
public abstract class AMCollD {
// source: 'inheritingFromAbstractCollections.kt'
public method <init>(): void
public bridge method contains(p0: double): boolean
public bridge final method contains(p0: java.lang.Object): boolean
public bridge method remove(p0: double): boolean
public bridge final method remove(p0: java.lang.Object): boolean
}
@kotlin.Metadata
public abstract class AMSetD {
// source: 'inheritingFromAbstractCollections.kt'
public method <init>(): void
public bridge method contains(p0: double): boolean
public bridge final method contains(p0: java.lang.Object): boolean
public bridge method remove(p0: double): boolean
public bridge final method remove(p0: java.lang.Object): boolean
}
@kotlin.Metadata
public abstract class ASetD {
// source: 'inheritingFromAbstractCollections.kt'
public method <init>(): void
public bridge method contains(p0: double): boolean
public bridge final method contains(p0: java.lang.Object): boolean
}
@@ -0,0 +1,5 @@
// WITH_RUNTIME
abstract class AMapSD : AbstractMap<String, Double>()
abstract class AMMapSD : AbstractMutableMap<String, Double>()
@@ -0,0 +1,25 @@
@kotlin.Metadata
public abstract class AMMapSD {
// source: 'inheritingFromAbstractMap.kt'
public method <init>(): void
public bridge final method containsKey(p0: java.lang.Object): boolean
public bridge method containsKey(p0: java.lang.String): boolean
public bridge method containsValue(p0: double): boolean
public bridge final method containsValue(p0: java.lang.Object): boolean
public bridge final method get(p0: java.lang.Object): java.lang.Object
public bridge method get(p0: java.lang.String): java.lang.Double
public bridge final method remove(p0: java.lang.Object): java.lang.Object
public bridge method remove(p0: java.lang.String): java.lang.Double
}
@kotlin.Metadata
public abstract class AMapSD {
// source: 'inheritingFromAbstractMap.kt'
public method <init>(): void
public bridge final method containsKey(p0: java.lang.Object): boolean
public bridge method containsKey(p0: java.lang.String): boolean
public bridge method containsValue(p0: double): boolean
public bridge final method containsValue(p0: java.lang.Object): boolean
public bridge final method get(p0: java.lang.Object): java.lang.Object
public bridge method get(p0: java.lang.String): java.lang.Double
}
@@ -0,0 +1,25 @@
@kotlin.Metadata
public abstract class AMMapSD {
// source: 'inheritingFromAbstractMap.kt'
public method <init>(): void
public bridge final method containsKey(p0: java.lang.Object): boolean
public bridge method containsKey(p0: java.lang.String): boolean
public bridge method containsValue(p0: double): boolean
public bridge final method containsValue(p0: java.lang.Object): boolean
public bridge final method get(p0: java.lang.Object): java.lang.Double
public bridge method get(p0: java.lang.String): java.lang.Double
public bridge final method remove(p0: java.lang.Object): java.lang.Double
public bridge method remove(p0: java.lang.String): java.lang.Double
}
@kotlin.Metadata
public abstract class AMapSD {
// source: 'inheritingFromAbstractMap.kt'
public method <init>(): void
public bridge final method containsKey(p0: java.lang.Object): boolean
public bridge method containsKey(p0: java.lang.String): boolean
public bridge method containsValue(p0: double): boolean
public bridge final method containsValue(p0: java.lang.Object): boolean
public bridge final method get(p0: java.lang.Object): java.lang.Double
public bridge method get(p0: java.lang.String): java.lang.Double
}
@@ -0,0 +1,3 @@
// WITH_RUNTIME
abstract class AMListD : AbstractMutableList<Double>()
@@ -0,0 +1,15 @@
@kotlin.Metadata
public abstract class AMListD {
// source: 'inheritingFromAbstractMutableList.kt'
public method <init>(): void
public bridge method contains(p0: double): boolean
public bridge final method contains(p0: java.lang.Object): boolean
public bridge method indexOf(p0: double): int
public bridge final method indexOf(p0: java.lang.Object): int
public bridge method lastIndexOf(p0: double): int
public bridge final method lastIndexOf(p0: java.lang.Object): int
public bridge method remove(p0: double): boolean
public bridge final method remove(p0: int): double
public bridge final method remove(p0: java.lang.Object): boolean
public synthetic bridge method removeAt(p0: int): java.lang.Object
}
@@ -0,0 +1,16 @@
@kotlin.Metadata
public abstract class AMListD {
// source: 'inheritingFromAbstractMutableList.kt'
public method <init>(): void
public bridge method contains(p0: double): boolean
public bridge final method contains(p0: java.lang.Object): boolean
public bridge method indexOf(p0: double): int
public bridge final method indexOf(p0: java.lang.Object): int
public bridge method lastIndexOf(p0: double): int
public bridge final method lastIndexOf(p0: java.lang.Object): int
public bridge method remove(p0: double): boolean
public bridge final method remove(p0: int): double
public bridge final method remove(p0: java.lang.Object): boolean
public abstract method removeAt(p0: int): java.lang.Double
public synthetic bridge method removeAt(p0: int): java.lang.Object
}