FIR Java types: add Kotlin/Java mapping & mutability enhancements
Related to KT-29937
This commit is contained in:
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.load.java.descriptors.StringDefaultValue
|
|||||||
import org.jetbrains.kotlin.load.java.structure.*
|
import org.jetbrains.kotlin.load.java.structure.*
|
||||||
import org.jetbrains.kotlin.load.java.typeEnhancement.*
|
import org.jetbrains.kotlin.load.java.typeEnhancement.*
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
@@ -78,6 +79,24 @@ private fun JavaType.subtreeSize(): Int {
|
|||||||
return 1 + typeArguments.sumBy { it.subtreeSize() }
|
return 1 + typeArguments.sumBy { it.subtreeSize() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val KOTLIN_COLLECTIONS = FqName("kotlin.collections")
|
||||||
|
|
||||||
|
private val KOTLIN_COLLECTIONS_PREFIX_LENGTH = KOTLIN_COLLECTIONS.asString().length + 1
|
||||||
|
|
||||||
|
private fun ClassId.readOnlyToMutable(): ClassId? {
|
||||||
|
val mutableFqName = JavaToKotlinClassMap.readOnlyToMutable(asSingleFqName().toUnsafe())
|
||||||
|
return mutableFqName?.let {
|
||||||
|
ClassId(KOTLIN_COLLECTIONS, FqName(it.asString().substring(KOTLIN_COLLECTIONS_PREFIX_LENGTH)), false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun ClassId.mutableToReadOnly(): ClassId? {
|
||||||
|
val readOnlyFqName = JavaToKotlinClassMap.mutableToReadOnly(asSingleFqName().toUnsafe())
|
||||||
|
return readOnlyFqName?.let {
|
||||||
|
ClassId(KOTLIN_COLLECTIONS, FqName(it.asString().substring(KOTLIN_COLLECTIONS_PREFIX_LENGTH)), false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun JavaClassifierType.enhanceInflexibleType(
|
private fun JavaClassifierType.enhanceInflexibleType(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
annotations: List<FirAnnotationCall>,
|
annotations: List<FirAnnotationCall>,
|
||||||
@@ -87,7 +106,16 @@ private fun JavaClassifierType.enhanceInflexibleType(
|
|||||||
index: Int
|
index: Int
|
||||||
): ConeLookupTagBasedType {
|
): ConeLookupTagBasedType {
|
||||||
val originalSymbol = when (val classifier = classifier) {
|
val originalSymbol = when (val classifier = classifier) {
|
||||||
is JavaClass -> session.service<FirSymbolProvider>().getClassLikeSymbolByFqName(classifier.classId!!)!!
|
is JavaClass -> {
|
||||||
|
val classId = classifier.classId!!
|
||||||
|
var mappedId = JavaToKotlinClassMap.mapJavaToKotlin(classId.asSingleFqName())
|
||||||
|
if (mappedId != null) {
|
||||||
|
if (position == TypeComponentPosition.FLEXIBLE_LOWER) {
|
||||||
|
mappedId = mappedId.readOnlyToMutable() ?: mappedId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
session.service<FirSymbolProvider>().getClassLikeSymbolByFqName(mappedId ?: classId)!!
|
||||||
|
}
|
||||||
is JavaTypeParameter -> createTypeParameterSymbol(session, classifier.name)
|
is JavaTypeParameter -> createTypeParameterSymbol(session, classifier.name)
|
||||||
else -> return toNotNullConeKotlinType(session)
|
else -> return toNotNullConeKotlinType(session)
|
||||||
}
|
}
|
||||||
@@ -156,23 +184,18 @@ private fun ConeClassifierSymbol.enhanceMutability(
|
|||||||
): EnhanceDetailsResult<ConeClassifierSymbol> {
|
): EnhanceDetailsResult<ConeClassifierSymbol> {
|
||||||
if (!position.shouldEnhance()) return this.noChange()
|
if (!position.shouldEnhance()) return this.noChange()
|
||||||
if (this !is FirClassSymbol) return this.noChange() // mutability is not applicable for type parameters
|
if (this !is FirClassSymbol) return this.noChange() // mutability is not applicable for type parameters
|
||||||
val fqNameUnsafe = classId.asSingleFqName().toUnsafe()
|
|
||||||
|
|
||||||
when (qualifiers.mutability) {
|
when (qualifiers.mutability) {
|
||||||
MutabilityQualifier.READ_ONLY -> {
|
MutabilityQualifier.READ_ONLY -> {
|
||||||
val readOnlyFqName = JavaToKotlinClassMap.mutableToReadOnly(fqNameUnsafe)
|
val readOnlyId = classId.mutableToReadOnly()
|
||||||
if (position == TypeComponentPosition.FLEXIBLE_LOWER && readOnlyFqName != null) {
|
if (position == TypeComponentPosition.FLEXIBLE_LOWER && readOnlyId != null) {
|
||||||
return FirClassSymbol(ClassId(classId.packageFqName, readOnlyFqName, false)).apply {
|
return FirClassSymbol(readOnlyId).enhancedMutability()
|
||||||
bind(fir)
|
|
||||||
}.enhancedMutability()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MutabilityQualifier.MUTABLE -> {
|
MutabilityQualifier.MUTABLE -> {
|
||||||
val mutableFqName = JavaToKotlinClassMap.readOnlyToMutable(fqNameUnsafe)
|
val mutableId = classId.readOnlyToMutable()
|
||||||
if (position == TypeComponentPosition.FLEXIBLE_UPPER && mutableFqName != null) {
|
if (position == TypeComponentPosition.FLEXIBLE_UPPER && mutableId != null) {
|
||||||
return FirClassSymbol(ClassId(classId.packageFqName, mutableFqName, false)).apply {
|
return FirClassSymbol(mutableId).enhancedMutability()
|
||||||
bind(fir)
|
|
||||||
}.enhancedMutability()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
public open class AnnotatedValueParameter : R|java/lang/Object| {
|
public open class AnnotatedValueParameter : R|java/lang/Object| {
|
||||||
public open operator function f(@R|test/AnnotatedValueParameter.Anno|(String(non-empty)) parameter: R|ft<java/util/List<ft<java/lang/String, java/lang/String?>>, java/util/List<ft<java/lang/String, java/lang/String?>>>|): R|kotlin/Unit|
|
public open operator function f(@R|test/AnnotatedValueParameter.Anno|(String(non-empty)) parameter: R|ft<kotlin/collections/MutableList<ft<java/lang/String, java/lang/String?>>, kotlin/collections/List<ft<java/lang/String, java/lang/String?>>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
public open class CustomProjectionKind : R|java/lang/Object| {
|
public open class CustomProjectionKind : R|java/lang/Object| {
|
||||||
public open operator function foo(): R|ft<java/util/List<ft<java/lang/Number, java/lang/Number?>>, java/util/List<ft<java/lang/Number, java/lang/Number?>>>|
|
public open operator function foo(): R|ft<kotlin/collections/MutableList<ft<java/lang/Number, java/lang/Number?>>, kotlin/collections/List<ft<java/lang/Number, java/lang/Number?>>>|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
public open class MethodWithFunctionTypes : R|java/lang/Object| {
|
public open class MethodWithFunctionTypes : R|java/lang/Object| {
|
||||||
public open operator function foo(f: R|ft<kotlin/jvm/functions/Function1<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/jvm/functions/Function1<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>|): R|ft<kotlin/jvm/functions/Function0<ft<java/lang/String, java/lang/String?>>, kotlin/jvm/functions/Function0<ft<java/lang/String, java/lang/String?>>>|
|
public open operator function foo(f: R|ft<kotlin/Function1<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/Function1<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>|): R|ft<kotlin/Function0<ft<java/lang/String, java/lang/String?>>, kotlin/Function0<ft<java/lang/String, java/lang/String?>>>|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
public open class MethodWithGenerics : R|java/lang/Object| {
|
public open class MethodWithGenerics : R|java/lang/Object| {
|
||||||
public open operator function foo(a: R|ft<java/lang/String, java/lang/String?>|!, b: R|ft<java/util/List<ft<java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>, java/util/List<ft<java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>>|): R|ft<java/lang/String, java/lang/String?>|!
|
public open operator function foo(a: R|ft<java/lang/String, java/lang/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>>|): R|ft<java/lang/String, java/lang/String?>|!
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
public open class MethodWithMappedClasses : R|java/lang/Object| {
|
public open class MethodWithMappedClasses : R|java/lang/Object| {
|
||||||
public open operator function copy(dest: R|ft<java/util/List<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? super T>, java/util/List<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? super T>?>|!, src: R|ft<java/util/List<ft<T, T?>>, java/util/List<ft<T, T?>>>|): R|kotlin/Unit|
|
public open operator function copy(dest: R|ft<java/util/List<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? super T>, java/util/List<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? super T>?>|!, src: R|ft<kotlin/collections/MutableList<ft<T, T?>>, kotlin/collections/List<ft<T, T?>>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
public open operator function copyMap(dest: R|ft<java/util/Map<ft<java/lang/String, java/lang/String?>, *>, java/util/Map<ft<java/lang/String, java/lang/String?>, *>>|, src: R|ft<java/util/Map<ft<java/lang/String, java/lang/String?>, ft<T, T?>>, java/util/Map<ft<java/lang/String, java/lang/String?>, ft<T, T?>>>|): R|kotlin/Unit|
|
public open operator function copyMap(dest: R|ft<kotlin/collections/MutableMap<ft<java/lang/String, java/lang/String?>, *>, kotlin/collections/Map<ft<java/lang/String, java/lang/String?>, *>>|, src: R|ft<kotlin/collections/MutableMap<ft<java/lang/String, java/lang/String?>, ft<T, T?>>, kotlin/collections/Map<ft<java/lang/String, java/lang/String?>, ft<T, T?>>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
public open class WrongProjectionKind : R|java/lang/Object| {
|
public open class WrongProjectionKind : R|java/lang/Object| {
|
||||||
public open operator function copy(from: R|kotlin/Array<ft<java/lang/Number, java/lang/Number?>>|, to: R|kotlin/Array<ft<java/lang/Number, java/lang/Number?>>|): R|ft<java/util/List<ft<java/lang/Number, java/lang/Number?>>, java/util/List<ft<java/lang/Number, java/lang/Number?>>>|
|
public open operator function copy(from: R|kotlin/Array<ft<java/lang/Number, java/lang/Number?>>|, to: R|kotlin/Array<ft<java/lang/Number, java/lang/Number?>>|): R|ft<kotlin/collections/MutableList<ft<java/lang/Number, java/lang/Number?>>, kotlin/collections/List<ft<java/lang/Number, java/lang/Number?>>>|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
public open class WrongReturnTypeStructure : R|java/lang/Object| {
|
public open class WrongReturnTypeStructure : R|java/lang/Object| {
|
||||||
public open operator function foo(a: R|ft<java/lang/String, java/lang/String?>|!, b: R|ft<java/util/List<ft<java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>, java/util/List<ft<java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>>|): R|ft<java/lang/String, java/lang/String?>|!
|
public open operator function foo(a: R|ft<java/lang/String, java/lang/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>>|): R|ft<java/lang/String, java/lang/String?>|!
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
public open class WrongValueParameterStructure1 : R|java/lang/Object| {
|
public open class WrongValueParameterStructure1 : R|java/lang/Object| {
|
||||||
public open operator function foo(a: R|ft<java/lang/String, java/lang/String?>|!, b: R|ft<java/util/List<ft<java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>, java/util/List<ft<java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, java/util/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>>|): R|ft<java/lang/String, java/lang/String?>|!
|
public open operator function foo(a: R|ft<java/lang/String, java/lang/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>, kotlin/collections/Map.Entry<ft<java/lang/String, java/lang/String?>, ft<java/lang/String, java/lang/String?>>>>>|): R|ft<java/lang/String, java/lang/String?>|!
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
<E> public abstract interface SubclassOfCollection : R|java/util/Collection<E>| {
|
<E> public abstract interface SubclassOfCollection : R|java/util/Collection<E>| {
|
||||||
public abstract operator function iterator(): R|ft<java/util/Iterator<ft<E, E?>>, java/util/Iterator<ft<E, E?>>>|
|
public abstract operator function iterator(): R|ft<kotlin/collections/MutableIterator<ft<E, E?>>, kotlin/collections/Iterator<ft<E, E?>>>|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<T> public abstract interface LoadIterable : R|java/lang/Object| {
|
<T> public abstract interface LoadIterable : R|java/lang/Object| {
|
||||||
public abstract operator function getIterable(): R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|
|
public abstract operator function getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/Iterable<ft<T, T?>>>|
|
||||||
|
|
||||||
public abstract operator function setIterable(Iterable: R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|): R|kotlin/Unit|
|
public abstract operator function setIterable(Iterable: R|ft<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/Iterable<ft<T, T?>>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<T> public abstract interface LoadIterator : R|java/lang/Object| {
|
<T> public abstract interface LoadIterator : R|java/lang/Object| {
|
||||||
public abstract operator function getIterator(): R|ft<java/util/Iterator<ft<T, T?>>, java/util/Iterator<ft<T, T?>>>|
|
public abstract operator function getIterator(): R|ft<kotlin/collections/MutableIterator<ft<T, T?>>, kotlin/collections/Iterator<ft<T, T?>>>|
|
||||||
|
|
||||||
public abstract operator function setIterator(iterator: R|ft<java/util/Iterator<ft<T, T?>>, java/util/Iterator<ft<T, T?>>>|): R|kotlin/Unit|
|
public abstract operator function setIterator(iterator: R|ft<kotlin/collections/MutableIterator<ft<T, T?>>, kotlin/collections/Iterator<ft<T, T?>>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
public open class ModalityOfFakeOverrides : R|java/util/AbstractList<java/lang/String>| {
|
public open class ModalityOfFakeOverrides : R|java/util/AbstractList<java/lang/String>| {
|
||||||
@R|java/lang/Override|() @R|org/jetbrains/annotations/NotNull|() public open operator function get(index: R|kotlin/Int|): R|ft<java/lang/String, java/lang/String>|
|
@R|java/lang/Override|() @R|org/jetbrains/annotations/NotNull|() public open operator function get(index: R|kotlin/Int|): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
|
||||||
@R|java/lang/Override|() public open operator function size(): R|kotlin/Int|
|
@R|java/lang/Override|() public open operator function size(): R|kotlin/Int|
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<T> public abstract interface LoadIterable : R|java/lang/Object| {
|
<T> public abstract interface LoadIterable : R|java/lang/Object| {
|
||||||
@R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|
|
@R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/MutableIterable<ft<T, T?>>>|
|
||||||
|
|
||||||
public abstract operator function setIterable(@R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|): R|kotlin/Unit|
|
public abstract operator function setIterable(@R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/MutableIterable<ft<T, T?>>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
@R|kotlin/annotations/jvm/ReadOnly|() public abstract operator function getReadOnlyIterable(): R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|
|
@R|kotlin/annotations/jvm/ReadOnly|() public abstract operator function getReadOnlyIterable(): R|ft<kotlin/collections/Iterable<ft<T, T?>>, kotlin/collections/Iterable<ft<T, T?>>>|
|
||||||
|
|
||||||
public abstract operator function setReadOnlyIterable(@R|kotlin/annotations/jvm/ReadOnly|() Iterable: R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|): R|kotlin/Unit|
|
public abstract operator function setReadOnlyIterable(@R|kotlin/annotations/jvm/ReadOnly|() Iterable: R|ft<kotlin/collections/Iterable<ft<T, T?>>, kotlin/collections/Iterable<ft<T, T?>>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
<T> public abstract interface LoadIterableWithConflict : R|java/lang/Object| {
|
<T> public abstract interface LoadIterableWithConflict : R|java/lang/Object| {
|
||||||
@R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|
|
@R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/Iterable<ft<T, T?>>>|
|
||||||
|
|
||||||
public abstract operator function setIterable(@R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|): R|kotlin/Unit|
|
public abstract operator function 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|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -1,10 +1,10 @@
|
|||||||
<T> public abstract interface LoadIterableWithNullability : R|java/lang/Object| {
|
<T> public abstract interface LoadIterableWithNullability : R|java/lang/Object| {
|
||||||
@R|org/jetbrains/annotations/NotNull|() @R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|
|
@R|org/jetbrains/annotations/NotNull|() @R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/MutableIterable<ft<T, T?>>>|
|
||||||
|
|
||||||
public abstract operator function setIterable(@R|kotlin/annotations/jvm/Mutable|() @R|org/jetbrains/annotations/NotNull|() Iterable: R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|): R|kotlin/Unit|
|
public abstract operator function setIterable(@R|kotlin/annotations/jvm/Mutable|() @R|org/jetbrains/annotations/NotNull|() Iterable: R|ft<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/MutableIterable<ft<T, T?>>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
@R|org/jetbrains/annotations/NotNull|() @R|kotlin/annotations/jvm/ReadOnly|() public abstract operator function getReadOnlyIterable(): R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|
|
@R|org/jetbrains/annotations/NotNull|() @R|kotlin/annotations/jvm/ReadOnly|() public abstract operator function getReadOnlyIterable(): R|ft<kotlin/collections/Iterable<ft<T, T?>>, kotlin/collections/Iterable<ft<T, T?>>>|
|
||||||
|
|
||||||
public abstract operator function setReadOnlyIterable(@R|kotlin/annotations/jvm/ReadOnly|() @R|org/jetbrains/annotations/NotNull|() Iterable: R|ft<java/lang/Iterable<ft<T, T?>>, java/lang/Iterable<ft<T, T?>>>|): R|kotlin/Unit|
|
public abstract operator function setReadOnlyIterable(@R|kotlin/annotations/jvm/ReadOnly|() @R|org/jetbrains/annotations/NotNull|() Iterable: R|ft<kotlin/collections/Iterable<ft<T, T?>>, kotlin/collections/Iterable<ft<T, T?>>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
public abstract interface ReadOnlyExtendsWildcard : R|java/lang/Object| {
|
public abstract interface ReadOnlyExtendsWildcard : R|java/lang/Object| {
|
||||||
public abstract operator function bar(): R|kotlin/Unit|
|
public abstract operator function bar(): R|kotlin/Unit|
|
||||||
|
|
||||||
public abstract operator function foo(@R|kotlin/annotations/jvm/ReadOnly|() x: R|ft<java/util/List<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? extends CharSequence>, java/util/List<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? extends CharSequence>?>|!, @R|org/jetbrains/annotations/NotNull|() y: R|ft<java/lang/Comparable<*>, java/lang/Comparable<*>>|): R|kotlin/Unit|
|
public abstract operator function foo(@R|kotlin/annotations/jvm/ReadOnly|() x: R|ft<kotlin/collections/List<*>, java/util/List<class error: Unexpected type argument: JavaWildcardTypeImpl: PsiType:? extends CharSequence>?>|!, @R|org/jetbrains/annotations/NotNull|() y: R|ft<kotlin/Comparable<*>, kotlin/Comparable<*>>|): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
public open class NotNullField : R|java/lang/Object| {
|
public open class NotNullField : R|java/lang/Object| {
|
||||||
@R|org/jetbrains/annotations/NotNull|() public open property hi(var): R|ft<java/lang/String, java/lang/String>|
|
@R|org/jetbrains/annotations/NotNull|() public open property hi(var): R|ft<kotlin/String, kotlin/String>|
|
||||||
public get(): R|ft<java/lang/String, java/lang/String>|
|
public get(): R|ft<kotlin/String, kotlin/String>|
|
||||||
public set(value: R|ft<java/lang/String, java/lang/String>|): kotlin/Unit
|
public set(value: R|ft<kotlin/String, kotlin/String>|): kotlin/Unit
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
public open class NotNullMethod : R|java/lang/Object| {
|
public open class NotNullMethod : R|java/lang/Object| {
|
||||||
@R|org/jetbrains/annotations/NotNull|() public open operator function hi(): R|ft<java/lang/String, java/lang/String>|
|
@R|org/jetbrains/annotations/NotNull|() public open operator function hi(): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
public open class NotNullParameter : R|java/lang/Object| {
|
public open class NotNullParameter : R|java/lang/Object| {
|
||||||
public open operator function hi(@R|org/jetbrains/annotations/NotNull|() param: R|ft<java/lang/String, java/lang/String>|): R|kotlin/Unit|
|
public open operator function hi(@R|org/jetbrains/annotations/NotNull|() param: R|ft<kotlin/String, kotlin/String>|): R|kotlin/Unit|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
public abstract interface TwoSuperclassesInconsistentGenericTypes : R|java/lang/Object| {
|
public abstract interface TwoSuperclassesInconsistentGenericTypes : R|java/lang/Object| {
|
||||||
public abstract operator function foo(): R|ft<java/util/List<ft<java/lang/String, java/lang/String?>>, java/util/List<ft<java/lang/String, java/lang/String?>>>|
|
public abstract operator function foo(): R|ft<kotlin/collections/MutableList<ft<java/lang/String, java/lang/String?>>, kotlin/collections/List<ft<java/lang/String, java/lang/String?>>>|
|
||||||
|
|
||||||
public abstract operator function dummy(): R|kotlin/Unit|
|
public abstract operator function dummy(): R|kotlin/Unit|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
public open class Annotated : R|java/lang/Object| {
|
public open class Annotated : R|java/lang/Object| {
|
||||||
@R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|ft<java/lang/String?, java/lang/String?>|?): R|ft<java/lang/String, java/lang/String>|
|
@R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
public open class Annotated : R|java/lang/Object| {
|
public open class Annotated : R|java/lang/Object| {
|
||||||
@R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|ft<java/lang/String?, java/lang/String?>|?): R|ft<java/lang/String, java/lang/String>|
|
@R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
|
||||||
}
|
}
|
||||||
public open class AnnotatedDerived : R|Annotated| {
|
public open class AnnotatedDerived : R|Annotated| {
|
||||||
public open operator function foo(param: R|ft<java/lang/String?, java/lang/String?>|?): R|ft<java/lang/String, java/lang/String>|
|
public open operator function foo(param: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String, kotlin/String>|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user