[FIR] Add flexible default upper bound for java type parameters

This commit is contained in:
Dmitriy Novozhilov
2020-03-25 17:17:56 +03:00
parent c23a11a6fc
commit 3acb64c536
35 changed files with 63 additions and 53 deletions
@@ -6,9 +6,9 @@ public open class A : R|kotlin/Any| {
public constructor(): R|A| public constructor(): R|A|
} }
public open class B<T> : R|kotlin/Any| { public open class B<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public open fun foo(@R|kotlin/annotations/jvm/internal/DefaultNull|() t: R|ft<T, T?>!| = Null(null)): R|kotlin/Unit| public open fun foo(@R|kotlin/annotations/jvm/internal/DefaultNull|() t: R|ft<T, T?>!| = Null(null)): R|kotlin/Unit|
public constructor<T>(): R|B<T>| public constructor<T : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|B<T>|
} }
@@ -113,7 +113,7 @@ class JavaSymbolProvider(
forTypeParameterBounds = true forTypeParameterBounds = true
) )
} }
addDefaultBoundIfNecessary() addDefaultBoundIfNecessary(isFlexible = true)
} }
private fun List<JavaTypeParameter>.convertTypeParameters(stack: JavaTypeParameterStack): List<FirTypeParameter> { private fun List<JavaTypeParameter>.convertTypeParameters(stack: JavaTypeParameterStack): List<FirTypeParameter> {
@@ -12,11 +12,21 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.types.ConeFlexibleType
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
import org.jetbrains.kotlin.fir.types.coneTypeSafe import org.jetbrains.kotlin.fir.types.coneTypeSafe
fun FirTypeParameterBuilder.addDefaultBoundIfNecessary() { fun FirTypeParameterBuilder.addDefaultBoundIfNecessary(isFlexible: Boolean = false) {
if (bounds.isEmpty()) { if (bounds.isEmpty()) {
bounds += session.builtinTypes.nullableAnyType val type = if (isFlexible) {
val session = this.session
buildResolvedTypeRef {
type = ConeFlexibleType(session.builtinTypes.anyType.type, session.builtinTypes.nullableAnyType.type)
}
} else {
session.builtinTypes.nullableAnyType
}
bounds += type
} }
} }
@@ -1,4 +1,4 @@
public final class ClassWithTypeP<P> : R|kotlin/Any| { public final class ClassWithTypeP<P : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public constructor<P>(): R|test/ClassWithTypeP<P>| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/ClassWithTypeP<P>|
} }
@@ -1,4 +1,4 @@
public abstract class ClassWithTypePExtendsIterableP<P> : R|kotlin/Any|, R|kotlin/collections/MutableIterable<ft<P, P?>!>| { public abstract class ClassWithTypePExtendsIterableP<P : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any|, R|kotlin/collections/MutableIterable<ft<P, P?>!>| {
public constructor<P>(): R|test/ClassWithTypePExtendsIterableP<P>| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/ClassWithTypePExtendsIterableP<P>|
} }
@@ -1,4 +1,4 @@
public final class ClassWithTypePP<P, Q : R|ft<P, P?>!|> : R|kotlin/Any| { public final class ClassWithTypePP<P : R|ft<kotlin/Any, kotlin/Any?>!|, Q : R|ft<P, P?>!|> : R|kotlin/Any| {
public constructor<P, Q : R|ft<P, P?>!|>(): R|test/ClassWithTypePP<P, Q>| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|, Q : R|ft<P, P?>!|>(): R|test/ClassWithTypePP<P, Q>|
} }
@@ -1,4 +1,4 @@
public open class ClassWithTypePRefNext<R : R|ft<kotlin/collections/MutableIterable<ft<P, P?>!>, kotlin/collections/Iterable<ft<P, P?>!>?>!|, P> : R|kotlin/Any| { public open class ClassWithTypePRefNext<R : R|ft<kotlin/collections/MutableIterable<ft<P, P?>!>, kotlin/collections/Iterable<ft<P, P?>!>?>!|, P : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public constructor<R : R|ft<kotlin/collections/MutableIterable<ft<P, P?>!>, kotlin/collections/Iterable<ft<P, P?>!>?>!|, P>(): R|test/ClassWithTypePRefNext<R, P>| public constructor<R : R|ft<kotlin/collections/MutableIterable<ft<P, P?>!>, kotlin/collections/Iterable<ft<P, P?>!>?>!|, P : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/ClassWithTypePRefNext<R, P>|
} }
@@ -1,4 +1,4 @@
public open class InnerClassReferencesOuterTP<P> : R|kotlin/Any| { public open class InnerClassReferencesOuterTP<P : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public constructor<P>(): R|test/InnerClassReferencesOuterTP<P>| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/InnerClassReferencesOuterTP<P>|
} }
@@ -1,4 +1,4 @@
public open class InnerClassesInGeneric<P, Q> : R|kotlin/Any| { public open class InnerClassesInGeneric<P : R|ft<kotlin/Any, kotlin/Any?>!|, Q : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public constructor<P, Q>(): R|test/InnerClassesInGeneric<P, Q>| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|, Q : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/InnerClassesInGeneric<P, Q>|
} }
@@ -1,4 +1,4 @@
public final class MethodReferencesOuterClassTP<P> : R|kotlin/Any| { public final class MethodReferencesOuterClassTP<P : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public constructor<P>(): R|test/MethodReferencesOuterClassTP<P>| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/MethodReferencesOuterClassTP<P>|
} }
@@ -1,5 +1,5 @@
public final class MethodWithTypeP : R|kotlin/Any| { public final class MethodWithTypeP : R|kotlin/Any| {
public final fun <P> f(): R|kotlin/Unit| public final fun <P : R|ft<kotlin/Any, kotlin/Any?>!|> f(): R|kotlin/Unit|
public constructor(): R|test/MethodWithTypeP| public constructor(): R|test/MethodWithTypeP|
@@ -1,5 +1,5 @@
public final class MethodWithTypePP : R|kotlin/Any| { public final class MethodWithTypePP : R|kotlin/Any| {
public final fun <P, Q : R|ft<P, P?>!|> f(): R|kotlin/Unit| public final fun <P : R|ft<kotlin/Any, kotlin/Any?>!|, Q : R|ft<P, P?>!|> f(): R|kotlin/Unit|
public constructor(): R|test/MethodWithTypePP| public constructor(): R|test/MethodWithTypePP|
@@ -1,6 +1,6 @@
public open class MethodWithTypePRefClassP<P> : R|kotlin/Any| { public open class MethodWithTypePRefClassP<P : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public final fun <Q : R|ft<P, P?>!|> f(): R|kotlin/Unit| public final fun <Q : R|ft<P, P?>!|> f(): R|kotlin/Unit|
public constructor<P>(): R|test/MethodWithTypePRefClassP<P>| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/MethodWithTypePRefClassP<P>|
} }
@@ -1,5 +1,5 @@
public final class MethosWithPRefTP : R|kotlin/Any| { public final class MethosWithPRefTP : R|kotlin/Any| {
public final fun <P> f(p: R|ft<P, P?>!|): R|kotlin/Unit| public final fun <P : R|ft<kotlin/Any, kotlin/Any?>!|> f(p: R|ft<P, P?>!|): R|kotlin/Unit|
public constructor(): R|test/MethosWithPRefTP| public constructor(): R|test/MethosWithPRefTP|
@@ -1,4 +1,4 @@
public open class ConstructorGenericDeep : R|kotlin/Any| { public open class ConstructorGenericDeep : R|kotlin/Any| {
public constructor<P>(cl: R|ft<java/lang/Class<ft<P, P?>!>, java/lang/Class<ft<P, P?>!>?>!|): R|test/ConstructorGenericDeep| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|>(cl: R|ft<java/lang/Class<ft<P, P?>!>, java/lang/Class<ft<P, P?>!>?>!|): R|test/ConstructorGenericDeep|
} }
@@ -1,4 +1,4 @@
public open class ConstructorGenericSimple : R|kotlin/Any| { public open class ConstructorGenericSimple : R|kotlin/Any| {
public constructor<P>(p: R|ft<P, P?>!|): R|test/ConstructorGenericSimple| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|>(p: R|ft<P, P?>!|): R|test/ConstructorGenericSimple|
} }
@@ -1,8 +1,8 @@
public open class JavaBeanVarOfGenericType<P> : R|kotlin/Any| { public open class JavaBeanVarOfGenericType<P : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public open fun getCharacters(): R|ft<java/util/ArrayList<ft<P, P?>!>, java/util/ArrayList<ft<P, P?>!>?>!| public open fun getCharacters(): R|ft<java/util/ArrayList<ft<P, P?>!>, java/util/ArrayList<ft<P, P?>!>?>!|
public open fun setCharacters(characters: R|ft<java/util/ArrayList<ft<P, P?>!>, java/util/ArrayList<ft<P, P?>!>?>!|): R|kotlin/Unit| public open fun setCharacters(characters: R|ft<java/util/ArrayList<ft<P, P?>!>, java/util/ArrayList<ft<P, P?>!>?>!|): R|kotlin/Unit|
public constructor<P>(): R|test/JavaBeanVarOfGenericType<P>| public constructor<P : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/JavaBeanVarOfGenericType<P>|
} }
@@ -1,4 +1,4 @@
public open class ConstructorWithNewTypeParams<T> : R|kotlin/Any| { public open class ConstructorWithNewTypeParams<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public constructor<T, U>(first: R|ft<U, U?>!|): R|test/ConstructorWithNewTypeParams<T>| public constructor<T : R|ft<kotlin/Any, kotlin/Any?>!|, U : R|ft<kotlin/Any, kotlin/Any?>!|>(first: R|ft<U, U?>!|): R|test/ConstructorWithNewTypeParams<T>|
} }
@@ -1,4 +1,4 @@
public open class ConstructorWithParentTypeParams<T> : R|kotlin/Any| { public open class ConstructorWithParentTypeParams<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public constructor<T>(first: R|ft<T, T?>!|): R|test/ConstructorWithParentTypeParams<T>| public constructor<T : R|ft<kotlin/Any, kotlin/Any?>!|>(first: R|ft<T, T?>!|): R|test/ConstructorWithParentTypeParams<T>|
} }
@@ -1,7 +1,7 @@
public open class MethodWithMappedClasses : R|kotlin/Any| { public open class MethodWithMappedClasses : R|kotlin/Any| {
public open fun <T> copy(dest: R|ft<kotlin/collections/MutableList<in ft<T, T?>!>, kotlin/collections/List<in ft<T, T?>!>?>!|, src: R|ft<kotlin/collections/MutableList<ft<T, T?>!>, kotlin/collections/List<ft<T, T?>!>?>!|): R|kotlin/Unit| public open fun <T : R|ft<kotlin/Any, kotlin/Any?>!|> copy(dest: R|ft<kotlin/collections/MutableList<in ft<T, T?>!>, kotlin/collections/List<in ft<T, T?>!>?>!|, src: R|ft<kotlin/collections/MutableList<ft<T, T?>!>, kotlin/collections/List<ft<T, T?>!>?>!|): R|kotlin/Unit|
public open fun <T> copyMap(dest: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>!, in ft<T, T?>!>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>!, in ft<T, T?>!>?>!|, src: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>!, ft<T, T?>!>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>!, ft<T, T?>!>?>!|): R|kotlin/Unit| public open fun <T : R|ft<kotlin/Any, kotlin/Any?>!|> copyMap(dest: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>!, in ft<T, T?>!>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>!, in ft<T, T?>!>?>!|, src: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>!, ft<T, T?>!>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>!, ft<T, T?>!>?>!|): R|kotlin/Unit|
public constructor(): R|test/MethodWithMappedClasses| public constructor(): R|test/MethodWithMappedClasses|
@@ -1,5 +1,5 @@
public open class MethodWithTypeParameters : R|kotlin/Any| { public open class MethodWithTypeParameters : R|kotlin/Any| {
public open fun <A, B : R|ft<java/lang/Runnable, java/lang/Runnable?>!|, R|ft<kotlin/collections/MutableList<ft<kotlin/Cloneable, kotlin/Cloneable?>!>, kotlin/collections/List<ft<kotlin/Cloneable, kotlin/Cloneable?>!>?>!|> foo(a: R|ft<A, A?>!|, b: R|ft<kotlin/collections/MutableList<out ft<B, B?>!>, kotlin/collections/List<out ft<B, B?>!>?>!|, list: R|ft<kotlin/collections/MutableList<in ft<kotlin/String, kotlin/String?>!>, kotlin/collections/List<in ft<kotlin/String, kotlin/String?>!>?>!|): R|kotlin/Unit| public open fun <A : R|ft<kotlin/Any, kotlin/Any?>!|, B : R|ft<java/lang/Runnable, java/lang/Runnable?>!|, R|ft<kotlin/collections/MutableList<ft<kotlin/Cloneable, kotlin/Cloneable?>!>, kotlin/collections/List<ft<kotlin/Cloneable, kotlin/Cloneable?>!>?>!|> foo(a: R|ft<A, A?>!|, b: R|ft<kotlin/collections/MutableList<out ft<B, B?>!>, kotlin/collections/List<out ft<B, B?>!>?>!|, list: R|ft<kotlin/collections/MutableList<in ft<kotlin/String, kotlin/String?>!>, kotlin/collections/List<in ft<kotlin/String, kotlin/String?>!>?>!|): R|kotlin/Unit|
public constructor(): R|test/MethodWithTypeParameters| public constructor(): R|test/MethodWithTypeParameters|
@@ -1,10 +1,10 @@
public open class PropertyArrayTypes<T> : R|kotlin/Any| { public open class PropertyArrayTypes<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public open field arrayOfArrays: R|ft<kotlin/Array<ft<kotlin/Array<ft<kotlin/String, kotlin/String?>!>, kotlin/Array<out ft<kotlin/String, kotlin/String?>!>?>!>, kotlin/Array<out ft<kotlin/Array<ft<kotlin/String, kotlin/String?>!>, kotlin/Array<out ft<kotlin/String, kotlin/String?>!>?>!>?>!| public open field arrayOfArrays: R|ft<kotlin/Array<ft<kotlin/Array<ft<kotlin/String, kotlin/String?>!>, kotlin/Array<out ft<kotlin/String, kotlin/String?>!>?>!>, kotlin/Array<out ft<kotlin/Array<ft<kotlin/String, kotlin/String?>!>, kotlin/Array<out ft<kotlin/String, kotlin/String?>!>?>!>?>!|
public open field array: R|ft<kotlin/Array<ft<kotlin/String, kotlin/String?>!>, kotlin/Array<out ft<kotlin/String, kotlin/String?>!>?>!| public open field array: R|ft<kotlin/Array<ft<kotlin/String, kotlin/String?>!>, kotlin/Array<out ft<kotlin/String, kotlin/String?>!>?>!|
public open field genericArray: R|ft<kotlin/Array<ft<T, T?>!>, kotlin/Array<out ft<T, T?>!>?>!| public open field genericArray: R|ft<kotlin/Array<ft<T, T?>!>, kotlin/Array<out ft<T, T?>!>?>!|
public constructor<T>(): R|test/PropertyArrayTypes<T>| public constructor<T : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/PropertyArrayTypes<T>|
} }
@@ -1,4 +1,4 @@
public open class PropertyComplexTypes<T> : R|kotlin/Any| { public open class PropertyComplexTypes<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public open field genericType: R|ft<T, T?>!| public open field genericType: R|ft<T, T?>!|
public open field listDefinedGeneric: R|ft<java/util/ArrayList<ft<kotlin/String, kotlin/String?>!>, java/util/ArrayList<ft<kotlin/String, kotlin/String?>!>?>!| public open field listDefinedGeneric: R|ft<java/util/ArrayList<ft<kotlin/String, kotlin/String?>!>, java/util/ArrayList<ft<kotlin/String, kotlin/String?>!>?>!|
@@ -7,6 +7,6 @@ public open class PropertyComplexTypes<T> : R|kotlin/Any| {
public open field listOfGenericList: R|ft<java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>!>, java/util/ArrayList<ft<T, T?>!>?>!>, java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>!>, java/util/ArrayList<ft<T, T?>!>?>!>?>!| public open field listOfGenericList: R|ft<java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>!>, java/util/ArrayList<ft<T, T?>!>?>!>, java/util/ArrayList<ft<java/util/ArrayList<ft<T, T?>!>, java/util/ArrayList<ft<T, T?>!>?>!>?>!|
public constructor<T>(): R|test/PropertyComplexTypes<T>| public constructor<T : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/PropertyComplexTypes<T>|
} }
@@ -1,5 +1,5 @@
public open class WrongTypeParameterBoundStructure1 : R|kotlin/Any| { public open class WrongTypeParameterBoundStructure1 : R|kotlin/Any| {
public open fun <A, B : R|ft<java/lang/Runnable, java/lang/Runnable?>!|, R|ft<kotlin/collections/MutableList<ft<kotlin/Cloneable, kotlin/Cloneable?>!>, kotlin/collections/List<ft<kotlin/Cloneable, kotlin/Cloneable?>!>?>!|> foo(a: R|ft<A, A?>!|, b: R|ft<kotlin/collections/MutableList<out ft<B, B?>!>, kotlin/collections/List<out ft<B, B?>!>?>!|): R|kotlin/Unit| public open fun <A : R|ft<kotlin/Any, kotlin/Any?>!|, B : R|ft<java/lang/Runnable, java/lang/Runnable?>!|, R|ft<kotlin/collections/MutableList<ft<kotlin/Cloneable, kotlin/Cloneable?>!>, kotlin/collections/List<ft<kotlin/Cloneable, kotlin/Cloneable?>!>?>!|> foo(a: R|ft<A, A?>!|, b: R|ft<kotlin/collections/MutableList<out ft<B, B?>!>, kotlin/collections/List<out ft<B, B?>!>?>!|): R|kotlin/Unit|
public constructor(): R|test/WrongTypeParameterBoundStructure1| public constructor(): R|test/WrongTypeParameterBoundStructure1|
@@ -1,4 +1,4 @@
public abstract interface SubclassOfCollection<E> : R|kotlin/collections/MutableCollection<ft<E, E?>!>| { public abstract interface SubclassOfCollection<E : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/collections/MutableCollection<ft<E, E?>!>| {
public abstract operator fun iterator(): R|kotlin/collections/MutableIterator<ft<E, E?>!>| public abstract operator fun iterator(): R|kotlin/collections/MutableIterator<ft<E, E?>!>|
} }
@@ -1,4 +1,4 @@
public abstract interface SubclassOfMapEntry<K, V> : R|kotlin/collections/MutableMap.MutableEntry<ft<K, K?>!, ft<V, V?>!>| { public abstract interface SubclassOfMapEntry<K : R|ft<kotlin/Any, kotlin/Any?>!|, V : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/collections/MutableMap.MutableEntry<ft<K, K?>!, ft<V, V?>!>| {
public abstract operator fun setValue(value: R|ft<V, V?>!|): R|ft<V, V?>!| public abstract operator fun setValue(value: R|ft<V, V?>!|): R|ft<V, V?>!|
} }
@@ -1,4 +1,4 @@
public abstract interface LoadIterable<T> : R|kotlin/Any| { public abstract interface LoadIterable<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public abstract fun getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/Iterable<ft<T, T?>!>?>!| public abstract fun getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/Iterable<ft<T, T?>!>?>!|
public abstract fun setIterable(Iterable: R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/Iterable<ft<T, T?>!>?>!|): R|kotlin/Unit| public abstract fun setIterable(Iterable: R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/Iterable<ft<T, T?>!>?>!|): R|kotlin/Unit|
@@ -1,4 +1,4 @@
public abstract interface LoadIterator<T> : R|kotlin/Any| { public abstract interface LoadIterator<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public abstract fun getIterator(): R|ft<kotlin/collections/MutableIterator<ft<T, T?>!>, kotlin/collections/Iterator<ft<T, T?>!>?>!| public abstract fun getIterator(): R|ft<kotlin/collections/MutableIterator<ft<T, T?>!>, kotlin/collections/Iterator<ft<T, T?>!>?>!|
public abstract fun setIterator(iterator: R|ft<kotlin/collections/MutableIterator<ft<T, T?>!>, kotlin/collections/Iterator<ft<T, T?>!>?>!|): R|kotlin/Unit| public abstract fun setIterator(iterator: R|ft<kotlin/collections/MutableIterator<ft<T, T?>!>, kotlin/collections/Iterator<ft<T, T?>!>?>!|): R|kotlin/Unit|
@@ -1,4 +1,4 @@
public abstract interface LoadIterable<T> : R|kotlin/Any| { public abstract interface LoadIterable<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
@R|kotlin/annotations/jvm/Mutable|() public abstract fun getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/MutableIterable<ft<T, T?>!>?>!| @R|kotlin/annotations/jvm/Mutable|() public abstract fun getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/MutableIterable<ft<T, T?>!>?>!|
public abstract fun setIterable(@R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/MutableIterable<ft<T, T?>!>?>!|): R|kotlin/Unit| public abstract fun setIterable(@R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/MutableIterable<ft<T, T?>!>?>!|): R|kotlin/Unit|
@@ -1,4 +1,4 @@
public abstract interface LoadIterableWithConflict<T> : R|kotlin/Any| { public abstract interface LoadIterableWithConflict<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
@R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() public abstract fun getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/Iterable<ft<T, T?>!>?>!| @R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() public abstract fun getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/Iterable<ft<T, T?>!>?>!|
public abstract fun setIterable(@R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/Iterable<ft<T, T?>!>?>!|): R|kotlin/Unit| public abstract fun setIterable(@R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft<kotlin/collections/MutableIterable<ft<T, T?>!>, kotlin/collections/Iterable<ft<T, T?>!>?>!|): R|kotlin/Unit|
@@ -1,4 +1,4 @@
public abstract interface LoadIterableWithNullability<T> : R|kotlin/Any| { public abstract interface LoadIterableWithNullability<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
@R|org/jetbrains/annotations/NotNull|() @R|kotlin/annotations/jvm/Mutable|() public abstract fun getIterable(): R|kotlin/collections/MutableIterable<ft<T, T?>!>| @R|org/jetbrains/annotations/NotNull|() @R|kotlin/annotations/jvm/Mutable|() public abstract fun getIterable(): R|kotlin/collections/MutableIterable<ft<T, T?>!>|
public abstract fun setIterable(@R|kotlin/annotations/jvm/Mutable|() @R|org/jetbrains/annotations/NotNull|() Iterable: R|kotlin/collections/MutableIterable<ft<T, T?>!>|): R|kotlin/Unit| public abstract fun setIterable(@R|kotlin/annotations/jvm/Mutable|() @R|org/jetbrains/annotations/NotNull|() Iterable: R|kotlin/collections/MutableIterable<ft<T, T?>!>|): R|kotlin/Unit|
@@ -1,4 +1,4 @@
public abstract interface Comparator<T> : R|kotlin/Any| { public abstract interface Comparator<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public abstract fun compare(o1: R|ft<T, T?>!|, o2: R|ft<T, T?>!|): R|kotlin/Int| public abstract fun compare(o1: R|ft<T, T?>!|, o2: R|ft<T, T?>!|): R|kotlin/Int|
public abstract operator fun equals(obj: R|kotlin/Any?|): R|kotlin/Boolean| public abstract operator fun equals(obj: R|kotlin/Any?|): R|kotlin/Boolean|
@@ -1,6 +1,6 @@
public open class TypeParameterOfClass<T> : R|kotlin/Any| { public open class TypeParameterOfClass<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public open fun foo(comparator: R|ft<java/util/Comparator<ft<T, T?>!>, java/util/Comparator<ft<T, T?>!>?>!|): R|kotlin/Unit| public open fun foo(comparator: R|ft<java/util/Comparator<ft<T, T?>!>, java/util/Comparator<ft<T, T?>!>?>!|): R|kotlin/Unit|
public constructor<T>(): R|test/TypeParameterOfClass<T>| public constructor<T : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/TypeParameterOfClass<T>|
} }
@@ -1,5 +1,5 @@
public open class TypeParameterOfMethod : R|kotlin/Any| { public open class TypeParameterOfMethod : R|kotlin/Any| {
public open static fun <T> max(comparator: R|ft<java/util/Comparator<ft<T, T?>!>, java/util/Comparator<ft<T, T?>!>?>!|, value1: R|ft<T, T?>!|, value2: R|ft<T, T?>!|): R|ft<T, T?>!| public open static fun <T : R|ft<kotlin/Any, kotlin/Any?>!|> max(comparator: R|ft<java/util/Comparator<ft<T, T?>!>, java/util/Comparator<ft<T, T?>!>?>!|, value1: R|ft<T, T?>!|, value2: R|ft<T, T?>!|): R|ft<T, T?>!|
public open static fun <T : R|ft<kotlin/CharSequence, kotlin/CharSequence?>!|> max2(comparator: R|ft<java/util/Comparator<ft<T, T?>!>, java/util/Comparator<ft<T, T?>!>?>!|, value1: R|ft<T, T?>!|, value2: R|ft<T, T?>!|): R|ft<T, T?>!| public open static fun <T : R|ft<kotlin/CharSequence, kotlin/CharSequence?>!|> max2(comparator: R|ft<java/util/Comparator<ft<T, T?>!>, java/util/Comparator<ft<T, T?>!>?>!|, value1: R|ft<T, T?>!|, value2: R|ft<T, T?>!|): R|ft<T, T?>!|
@@ -1,4 +1,4 @@
public open class TypeParameterOfOuterClass<T> : R|kotlin/Any| { public open class TypeParameterOfOuterClass<T : R|ft<kotlin/Any, kotlin/Any?>!|> : R|kotlin/Any| {
public constructor<T>(): R|test/TypeParameterOfOuterClass<T>| public constructor<T : R|ft<kotlin/Any, kotlin/Any?>!|>(): R|test/TypeParameterOfOuterClass<T>|
} }