FIR type enhancement: make J2K mapping and changed handling more exact
Related to KT-29937
This commit is contained in:
@@ -172,7 +172,7 @@ internal fun FirAbstractAnnotatedElement.addAnnotationsFrom(javaAnnotationOwner:
|
||||
}
|
||||
}
|
||||
|
||||
private fun JavaType.toConeProjection(session: FirSession, boundTypeParameter: FirTypeParameter?): ConeKotlinTypeProjection {
|
||||
internal fun JavaType.toConeProjection(session: FirSession, boundTypeParameter: FirTypeParameter?): ConeKotlinTypeProjection {
|
||||
return when (this) {
|
||||
is JavaWildcardType -> {
|
||||
val bound = this.bound
|
||||
|
||||
@@ -7,12 +7,13 @@ package org.jetbrains.kotlin.fir.java.enhancement
|
||||
|
||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableMember
|
||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.resolvedFqName
|
||||
import org.jetbrains.kotlin.fir.java.createTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.fir.java.toConeKotlinTypeWithNullability
|
||||
import org.jetbrains.kotlin.fir.java.toConeProjection
|
||||
import org.jetbrains.kotlin.fir.java.toNotNullConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.java.types.FirJavaTypeRef
|
||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||
@@ -20,6 +21,7 @@ import org.jetbrains.kotlin.fir.resolve.constructType
|
||||
import org.jetbrains.kotlin.fir.resolve.toTypeProjection
|
||||
import org.jetbrains.kotlin.fir.service
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||
@@ -121,29 +123,24 @@ private fun JavaClassifierType.enhanceInflexibleType(
|
||||
}
|
||||
|
||||
val effectiveQualifiers = qualifiers(index)
|
||||
val (enhancedSymbol, mutabilityChanged) = originalSymbol.enhanceMutability(effectiveQualifiers, position)
|
||||
val enhancedSymbol = originalSymbol.enhanceMutability(effectiveQualifiers, position)
|
||||
|
||||
var globalArgIndex = index + 1
|
||||
var wereChanges = mutabilityChanged
|
||||
val enhancedArguments = arguments.mapIndexed { localArgIndex, arg ->
|
||||
if (arg is JavaWildcardType) {
|
||||
globalArgIndex++
|
||||
ConeStarProjection
|
||||
// TODO: (?) TypeUtils.makeStarProjection(enhancedClassifier.typeConstructor.parameters[localArgIndex])
|
||||
arg.toConeProjection(
|
||||
session,
|
||||
((originalSymbol as? FirBasedSymbol<*>)?.fir as? FirCallableMember)?.typeParameters?.getOrNull(localArgIndex)
|
||||
)
|
||||
} else {
|
||||
val argEnhancedTypeRef = arg.enhancePossiblyFlexible(session, annotations, qualifiers, globalArgIndex)
|
||||
wereChanges = wereChanges || argEnhancedTypeRef !== arg
|
||||
globalArgIndex += arg.subtreeSize()
|
||||
argEnhancedTypeRef.type.type.toTypeProjection(Variance.INVARIANT)
|
||||
}
|
||||
}
|
||||
|
||||
val (enhancedNullability, _, nullabilityChanged) = getEnhancedNullability(effectiveQualifiers, position)
|
||||
wereChanges = wereChanges || nullabilityChanged
|
||||
|
||||
if (!wereChanges) return toConeKotlinTypeWithNullability(
|
||||
session, isNullable = position == TypeComponentPosition.FLEXIBLE_UPPER
|
||||
)
|
||||
val enhancedNullability = getEnhancedNullability(effectiveQualifiers, position)
|
||||
|
||||
val enhancedType = enhancedSymbol.constructType(enhancedArguments.toTypedArray(), enhancedNullability)
|
||||
|
||||
@@ -158,49 +155,39 @@ private fun JavaClassifierType.enhanceInflexibleType(
|
||||
private fun getEnhancedNullability(
|
||||
qualifiers: JavaTypeQualifiers,
|
||||
position: TypeComponentPosition
|
||||
): EnhanceDetailsResult<Boolean> {
|
||||
if (!position.shouldEnhance()) return false.noChange()
|
||||
): Boolean {
|
||||
if (!position.shouldEnhance()) return position == TypeComponentPosition.FLEXIBLE_UPPER
|
||||
|
||||
return when (qualifiers.nullability) {
|
||||
NullabilityQualifier.NULLABLE -> true.enhancedNullability()
|
||||
NullabilityQualifier.NOT_NULL -> false.enhancedNullability()
|
||||
else -> false.noChange()
|
||||
NullabilityQualifier.NULLABLE -> true
|
||||
NullabilityQualifier.NOT_NULL -> false
|
||||
else -> position == TypeComponentPosition.FLEXIBLE_UPPER
|
||||
}
|
||||
}
|
||||
|
||||
private data class EnhanceDetailsResult<out T>(
|
||||
val result: T,
|
||||
val mutabilityChanged: Boolean = false,
|
||||
val nullabilityChanged: Boolean = false
|
||||
)
|
||||
|
||||
private fun <T> T.noChange() = EnhanceDetailsResult(this)
|
||||
private fun <T> T.enhancedNullability() = EnhanceDetailsResult(this, nullabilityChanged = true)
|
||||
private fun <T> T.enhancedMutability() = EnhanceDetailsResult(this, mutabilityChanged = true)
|
||||
|
||||
private fun ConeClassifierSymbol.enhanceMutability(
|
||||
qualifiers: JavaTypeQualifiers,
|
||||
position: TypeComponentPosition
|
||||
): EnhanceDetailsResult<ConeClassifierSymbol> {
|
||||
if (!position.shouldEnhance()) return this.noChange()
|
||||
if (this !is FirClassSymbol) return this.noChange() // mutability is not applicable for type parameters
|
||||
): ConeClassifierSymbol {
|
||||
if (!position.shouldEnhance()) return this
|
||||
if (this !is FirClassSymbol) return this // mutability is not applicable for type parameters
|
||||
|
||||
when (qualifiers.mutability) {
|
||||
MutabilityQualifier.READ_ONLY -> {
|
||||
val readOnlyId = classId.mutableToReadOnly()
|
||||
if (position == TypeComponentPosition.FLEXIBLE_LOWER && readOnlyId != null) {
|
||||
return FirClassSymbol(readOnlyId).enhancedMutability()
|
||||
return FirClassSymbol(readOnlyId)
|
||||
}
|
||||
}
|
||||
MutabilityQualifier.MUTABLE -> {
|
||||
val mutableId = classId.readOnlyToMutable()
|
||||
if (position == TypeComponentPosition.FLEXIBLE_UPPER && mutableId != null) {
|
||||
return FirClassSymbol(mutableId).enhancedMutability()
|
||||
return FirClassSymbol(mutableId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return this.noChange()
|
||||
return this
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class InnerClassTypeMultipleGeneric : R|java/lang/Object| {
|
||||
public open operator function staticType(): R|ft<test/InnerClassTypeMultipleGeneric.Outer.Inner<ft<java/lang/Byte, java/lang/Byte?>, ft<java/lang/Character, java/lang/Character?>, ft<java/lang/Boolean, java/lang/Boolean?>>, test/InnerClassTypeMultipleGeneric.Outer.Inner<ft<java/lang/Byte, java/lang/Byte?>, ft<java/lang/Character, java/lang/Character?>, ft<java/lang/Boolean, java/lang/Boolean?>>>|
|
||||
public open operator function staticType(): R|ft<test/InnerClassTypeMultipleGeneric.Outer.Inner<ft<kotlin/Byte, kotlin/Byte?>, ft<kotlin/Char, kotlin/Char?>, ft<kotlin/Boolean, kotlin/Boolean?>>, test/InnerClassTypeMultipleGeneric.Outer.Inner<ft<kotlin/Byte, kotlin/Byte?>, ft<kotlin/Char, kotlin/Char?>, ft<kotlin/Boolean, kotlin/Boolean?>>?>|!
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
public abstract interface IntrinsicCompanionObject : R|java/lang/Object| {
|
||||
public abstract operator function testInt(i: R|ft<kotlin/jvm/internal/IntCompanionObject, kotlin/jvm/internal/IntCompanionObject?>|!): R|kotlin/Unit|
|
||||
public abstract operator function testInt(i: R|ft<kotlin/Int.Companion, kotlin/Int.Companion?>|!): R|kotlin/Unit|
|
||||
|
||||
public abstract operator function testChar(c: R|ft<kotlin/jvm/internal/CharCompanionObject, kotlin/jvm/internal/CharCompanionObject?>|!): R|kotlin/Unit|
|
||||
public abstract operator function testChar(c: R|ft<kotlin/Char.Companion, kotlin/Char.Companion?>|!): R|kotlin/Unit|
|
||||
|
||||
public abstract operator function testString(s: R|ft<kotlin/jvm/internal/StringCompanionObject, kotlin/jvm/internal/StringCompanionObject?>|!): R|kotlin/Unit|
|
||||
public abstract operator function testString(s: R|ft<kotlin/String.Companion, kotlin/String.Companion?>|!): R|kotlin/Unit|
|
||||
|
||||
public abstract operator function testBoolean(b: R|ft<kotlin/jvm/internal/BooleanCompanionObject, kotlin/jvm/internal/BooleanCompanionObject?>|!): R|kotlin/Unit|
|
||||
public abstract operator function testBoolean(b: R|ft<kotlin/Boolean.Companion, kotlin/Boolean.Companion?>|!): R|kotlin/Unit|
|
||||
|
||||
public abstract operator function testEnum(e: R|ft<kotlin/jvm/internal/EnumCompanionObject, kotlin/jvm/internal/EnumCompanionObject?>|!): R|kotlin/Unit|
|
||||
public abstract operator function testEnum(e: R|ft<kotlin/Enum.Companion, kotlin/Enum.Companion?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
public open class Frame : R|java/lang/Object| {
|
||||
public/*package*/ open property accessibleContext(var): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public/*package*/ get(): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public/*package*/ set(value: R|ft<java/lang/String, java/lang/String?>|!): kotlin/Unit
|
||||
public/*package*/ open property accessibleContext(var): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public/*package*/ get(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public/*package*/ set(value: R|ft<kotlin/String, kotlin/String?>|!): kotlin/Unit
|
||||
|
||||
}
|
||||
public open class JFrame : R|awt/Frame| {
|
||||
protected/*protected and package*/ open property accessibleContext(var): R|ft<java/lang/String, java/lang/String?>|!
|
||||
protected/*protected and package*/ get(): R|ft<java/lang/String, java/lang/String?>|!
|
||||
protected/*protected and package*/ set(value: R|ft<java/lang/String, java/lang/String?>|!): kotlin/Unit
|
||||
protected/*protected and package*/ open property accessibleContext(var): R|ft<kotlin/String, kotlin/String?>|!
|
||||
protected/*protected and package*/ get(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
protected/*protected and package*/ set(value: R|ft<kotlin/String, kotlin/String?>|!): kotlin/Unit
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
public abstract interface RemoveRedundantProjectionKind : R|java/lang/Object| {
|
||||
public abstract operator function f(collection: R|ft<java/util/Collection<out java/lang/CharSequence>, java/util/Collection<out java/lang/CharSequence>?>|!): R|kotlin/Unit|
|
||||
public abstract operator function f(collection: R|ft<kotlin/collections/MutableCollection<out java/lang/CharSequence>, kotlin/collections/Collection<out java/lang/CharSequence>?>|!): R|kotlin/Unit|
|
||||
|
||||
public abstract operator function f(comparator: R|ft<java/lang/Comparable<in java/lang/CharSequence>, java/lang/Comparable<in java/lang/CharSequence>?>|!): R|kotlin/Unit|
|
||||
public abstract operator function f(comparator: R|ft<kotlin/Comparable<in java/lang/CharSequence>, kotlin/Comparable<in java/lang/CharSequence>?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
public final class UnboundWildcard : R|java/lang/Object| {
|
||||
public final operator function foo(): R|ft<test/UnboundWildcard.MyClass<*>, test/UnboundWildcard.MyClass<*>?>|!
|
||||
|
||||
public final operator function collection(): R|ft<java/util/Collection<*>, java/util/Collection<*>?>|!
|
||||
public final operator function collection(): R|ft<kotlin/collections/MutableCollection<*>, kotlin/collections/Collection<*>?>|!
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public/*package*/ open class AnnotatedTypeInFun : R|java/lang/Object| {
|
||||
public/*package*/ open operator function foo(@R|test/AnnotatedTypeInFun.Anno|(String(a)) a: @R|test/AnnotatedTypeInFun.Anno|(String(a)) R|ft<java/lang/String, java/lang/String?>|!, @R|test/AnnotatedTypeInFun.Anno|(String(b)) b: @R|test/AnnotatedTypeInFun.Anno|(String(b)) R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Unit|
|
||||
public/*package*/ open operator function foo(@R|test/AnnotatedTypeInFun.Anno|(String(a)) a: @R|test/AnnotatedTypeInFun.Anno|(String(a)) R|ft<kotlin/String, kotlin/String?>|!, @R|test/AnnotatedTypeInFun.Anno|(String(b)) b: @R|test/AnnotatedTypeInFun.Anno|(String(b)) R|ft<kotlin/String, kotlin/String?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class AnnotatedValueParameter : R|java/lang/Object| {
|
||||
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|
|
||||
public open operator function f(@R|test/AnnotatedValueParameter.Anno|(String(non-empty)) parameter: R|ft<kotlin/collections/MutableList<ft<kotlin/String, kotlin/String?>>, kotlin/collections/List<ft<kotlin/String, kotlin/String?>>?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class JavaDocDeprecated : R|java/lang/Object| {
|
||||
public open operator function getFoo(text: R|ft<java/lang/String, java/lang/String?>|!): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public open operator function getFoo(text: R|ft<kotlin/String, kotlin/String?>|!): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
public open class DifferentGetterAndSetter : R|java/lang/Object| {
|
||||
public open operator function setSomething(color: R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Unit|
|
||||
public open operator function setSomething(color: R|ft<kotlin/String, kotlin/String?>|!): R|kotlin/Unit|
|
||||
|
||||
public open operator function getSomething(): R|kotlin/Int|
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
public open class JavaBeanVal : R|java/lang/Object| {
|
||||
public open operator function getColor(): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public open operator function getColor(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
public open class JavaBeanVar : R|java/lang/Object| {
|
||||
public open operator function getColor(): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public open operator function getColor(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
public open operator function setColor(string: R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Unit|
|
||||
public open operator function setColor(string: R|ft<kotlin/String, kotlin/String?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
<P> public open class JavaBeanVarOfGenericType : R|java/lang/Object| {
|
||||
public open operator function getCharacters(): R|ft<java/util/ArrayList<ft<P, P?>>, java/util/ArrayList<ft<P, P?>>>|
|
||||
public open operator function getCharacters(): R|ft<java/util/ArrayList<ft<P, P?>>, java/util/ArrayList<ft<P, P?>>?>|!
|
||||
|
||||
public open operator function setCharacters(characters: R|ft<java/util/ArrayList<ft<P, P?>>, java/util/ArrayList<ft<P, P?>>>|): R|kotlin/Unit|
|
||||
public open operator function setCharacters(characters: R|ft<java/util/ArrayList<ft<P, P?>>, java/util/ArrayList<ft<P, P?>>?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
public open class TwoSetters : R|java/lang/Object| {
|
||||
public open operator function setSize(size: R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Unit|
|
||||
public open operator function setSize(size: R|ft<kotlin/String, kotlin/String?>|!): R|kotlin/Unit|
|
||||
|
||||
public open operator function setSize(size: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class CustomProjectionKind : R|java/lang/Object| {
|
||||
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?>>>|
|
||||
public open operator function foo(): R|ft<kotlin/collections/MutableList<ft<kotlin/Number, kotlin/Number?>>, kotlin/collections/List<ft<kotlin/Number, kotlin/Number?>>?>|!
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class MethodWithFunctionTypes : R|java/lang/Object| {
|
||||
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?>>>|
|
||||
public open operator function foo(f: R|ft<kotlin/Function1<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/Function1<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>|!): R|ft<kotlin/Function0<ft<kotlin/String, kotlin/String?>>, kotlin/Function0<ft<kotlin/String, kotlin/String?>>?>|!
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
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<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?>|!
|
||||
public open operator function foo(a: R|ft<kotlin/String, kotlin/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>?>|!): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
public open class MethodWithMappedClasses : R|java/lang/Object| {
|
||||
public open operator function copy(dest: R|ft<java/util/List<in T>, java/util/List<in T>?>|!, src: R|ft<kotlin/collections/MutableList<ft<T, T?>>, kotlin/collections/List<ft<T, T?>>>|): R|kotlin/Unit|
|
||||
public open operator function copy(dest: R|ft<kotlin/collections/MutableList<in T>, kotlin/collections/List<in 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<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|
|
||||
public open operator function copyMap(dest: R|ft<kotlin/collections/MutableMap<ft<kotlin/String, kotlin/String?>, in T>, kotlin/collections/Map<ft<kotlin/String, kotlin/String?>, in 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|
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class MethodWithTypeParameters : R|java/lang/Object| {
|
||||
public open operator function foo(a: R|ft<A, A?>|!, b: R|ft<java/util/List<out B>, java/util/List<out B>?>|!, list: R|ft<java/util/List<in java/lang/String>, java/util/List<in java/lang/String>?>|!): R|kotlin/Unit|
|
||||
public open operator function foo(a: R|ft<A, A?>|!, b: R|ft<kotlin/collections/MutableList<out B>, kotlin/collections/List<out B>?>|!, list: R|ft<kotlin/collections/MutableList<in java/lang/String>, kotlin/collections/List<in java/lang/String>?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
+9
-9
@@ -3,16 +3,16 @@
|
||||
public get(): R|ft<T, T?>|!
|
||||
public set(value: R|ft<T, T?>|!): kotlin/Unit
|
||||
|
||||
public open property listDefinedGeneric(var): R|ft<java/util/ArrayList<ft<java/lang/String, java/lang/String?>>, java/util/ArrayList<ft<java/lang/String, java/lang/String?>>>|
|
||||
public get(): R|ft<java/util/ArrayList<ft<java/lang/String, java/lang/String?>>, java/util/ArrayList<ft<java/lang/String, java/lang/String?>>>|
|
||||
public set(value: R|ft<java/util/ArrayList<ft<java/lang/String, java/lang/String?>>, java/util/ArrayList<ft<java/lang/String, java/lang/String?>>>|): kotlin/Unit
|
||||
public open property listDefinedGeneric(var): R|ft<java/util/ArrayList<ft<kotlin/String, kotlin/String?>>, java/util/ArrayList<ft<kotlin/String, kotlin/String?>>?>|!
|
||||
public get(): R|ft<java/util/ArrayList<ft<kotlin/String, kotlin/String?>>, java/util/ArrayList<ft<kotlin/String, kotlin/String?>>?>|!
|
||||
public set(value: R|ft<java/util/ArrayList<ft<kotlin/String, kotlin/String?>>, java/util/ArrayList<ft<kotlin/String, kotlin/String?>>?>|!): kotlin/Unit
|
||||
|
||||
public open property listGeneric(var): R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>|
|
||||
public get(): R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>|
|
||||
public set(value: R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>>|): kotlin/Unit
|
||||
public open property listGeneric(var): R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>|!
|
||||
public get(): R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>|!
|
||||
public set(value: R|ft<java/util/ArrayList<ft<T, T?>>, java/util/ArrayList<ft<T, T?>>?>|!): kotlin/Unit
|
||||
|
||||
public open property listOfGenericList(var): 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 get(): 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 set(value: 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?>>>>>|): kotlin/Unit
|
||||
public open property listOfGenericList(var): 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 get(): 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 set(value: 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?>>?>>?>|!): kotlin/Unit
|
||||
|
||||
}
|
||||
|
||||
+6
-6
@@ -1,10 +1,10 @@
|
||||
public open class PropertySimpleType : R|java/lang/Object| {
|
||||
public open property fieldOne(var): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public get(): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public set(value: R|ft<java/lang/String, java/lang/String?>|!): kotlin/Unit
|
||||
public open property fieldOne(var): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public get(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public set(value: R|ft<kotlin/String, kotlin/String?>|!): kotlin/Unit
|
||||
|
||||
public open property fieldTwo(var): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public get(): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public set(value: R|ft<java/lang/String, java/lang/String?>|!): kotlin/Unit
|
||||
public open property fieldTwo(var): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public get(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public set(value: R|ft<kotlin/String, kotlin/String?>|!): kotlin/Unit
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
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<kotlin/collections/MutableList<ft<java/lang/Number, java/lang/Number?>>, kotlin/collections/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<kotlin/Number, kotlin/Number?>>, kotlin/collections/List<ft<kotlin/Number, kotlin/Number?>>?>|!
|
||||
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
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<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?>|!
|
||||
public open operator function foo(a: R|ft<kotlin/String, kotlin/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>?>|!): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class WrongTypeParameterBoundStructure1 : R|java/lang/Object| {
|
||||
public open operator function foo(a: R|ft<A, A?>|!, b: R|ft<java/util/List<out B>, java/util/List<out B>?>|!): R|kotlin/Unit|
|
||||
public open operator function foo(a: R|ft<A, A?>|!, b: R|ft<kotlin/collections/MutableList<out B>, kotlin/collections/List<out B>?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
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<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?>|!
|
||||
public open operator function foo(a: R|ft<kotlin/String, kotlin/String?>|!, b: R|ft<kotlin/collections/MutableList<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>, kotlin/collections/List<ft<kotlin/collections/MutableMap.MutableEntry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>, kotlin/collections/Map.Entry<ft<kotlin/String, kotlin/String?>, ft<kotlin/String, kotlin/String?>>?>>?>|!): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
<E> public abstract interface SubclassOfCollection : R|java/util/Collection<E>| {
|
||||
public abstract operator function iterator(): R|ft<kotlin/collections/MutableIterator<ft<E, E?>>, kotlin/collections/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| {
|
||||
public abstract operator function getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/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<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/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| {
|
||||
public abstract operator function getIterator(): R|ft<kotlin/collections/MutableIterator<ft<T, T?>>, kotlin/collections/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<kotlin/collections/MutableIterator<ft<T, T?>>, kotlin/collections/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,4 +1,4 @@
|
||||
public open class Max : R|java/lang/Object| {
|
||||
public open operator function max(coll: R|ft<java/util/Collection<out T>, java/util/Collection<out T>?>|!): R|ft<T, T?>|!
|
||||
public open operator function max(coll: R|ft<kotlin/collections/MutableCollection<out T>, kotlin/collections/Collection<out T>?>|!): R|ft<T, T?>|!
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<T> public abstract interface LoadIterable : R|java/lang/Object| {
|
||||
@R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/MutableIterable<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<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/MutableIterable<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<kotlin/collections/Iterable<ft<T, T?>>, kotlin/collections/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<kotlin/collections/Iterable<ft<T, T?>>, kotlin/collections/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| {
|
||||
@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?>>>|
|
||||
@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<kotlin/collections/MutableIterable<ft<T, T?>>, kotlin/collections/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|
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
public abstract interface ReadOnlyExtendsWildcard : R|java/lang/Object| {
|
||||
public abstract operator function bar(): R|kotlin/Unit|
|
||||
|
||||
public abstract operator function foo(@R|kotlin/annotations/jvm/ReadOnly|() x: R|ft<kotlin/collections/List<*>, java/util/List<out java/lang/CharSequence>?>|!, @R|org/jetbrains/annotations/NotNull|() y: R|ft<kotlin/Comparable<*>, kotlin/Comparable<*>>|): R|kotlin/Unit|
|
||||
public abstract operator function foo(@R|kotlin/annotations/jvm/ReadOnly|() x: R|ft<kotlin/collections/List<out java/lang/CharSequence>, kotlin/collections/List<out java/lang/CharSequence>?>|!, @R|org/jetbrains/annotations/NotNull|() y: R|ft<kotlin/Comparable<in java/lang/String>, kotlin/Comparable<in java/lang/String>>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<T> public abstract interface Comparator : R|java/lang/Object| {
|
||||
public abstract operator function compare(o1: R|ft<T, T?>|!, o2: R|ft<T, T?>|!): R|kotlin/Int|
|
||||
|
||||
public abstract operator function equals(obj: R|ft<java/lang/Object, java/lang/Object?>|!): R|kotlin/Boolean|
|
||||
public abstract operator function equals(obj: R|ft<kotlin/Any, kotlin/Any?>|!): R|kotlin/Boolean|
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
public abstract interface FilenameFilter : R|java/lang/Object| {
|
||||
public abstract operator function accept(dir: R|ft<java/io/File, java/io/File?>|!, name: R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Boolean|
|
||||
public abstract operator function accept(dir: R|ft<java/io/File, java/io/File?>|!, name: R|ft<kotlin/String, kotlin/String?>|!): R|kotlin/Boolean|
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public abstract interface InterfaceWithObjectMethod : R|java/lang/Object| {
|
||||
public abstract operator function toString(): R|ft<java/lang/String, java/lang/String?>|!
|
||||
public abstract operator function toString(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
public open class NonTrivialFunctionType : R|java/lang/Object| {
|
||||
public open operator function foo(filenameFilter: R|ft<java/io/FilenameFilter, java/io/FilenameFilter?>|!): R|kotlin/Unit|
|
||||
|
||||
public open operator function foo(comparator: R|ft<java/util/Comparator<ft<java/lang/String, java/lang/String?>>, java/util/Comparator<ft<java/lang/String, java/lang/String?>>>|): R|kotlin/Unit|
|
||||
public open operator function foo(comparator: R|ft<java/util/Comparator<ft<kotlin/String, kotlin/String?>>, java/util/Comparator<ft<kotlin/String, kotlin/String?>>?>|!): R|kotlin/Unit|
|
||||
|
||||
public open operator function wildcardUnbound(comparator: R|ft<java/util/Comparator<*>, java/util/Comparator<*>?>|!): R|kotlin/Unit|
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
<T> public open class TypeParameterOfClass : R|java/lang/Object| {
|
||||
public open operator function foo(comparator: R|ft<java/util/Comparator<ft<T, T?>>, java/util/Comparator<ft<T, T?>>>|): R|kotlin/Unit|
|
||||
public open operator function foo(comparator: R|ft<java/util/Comparator<ft<T, T?>>, java/util/Comparator<ft<T, T?>>?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class StableName : R|java/lang/Object| {
|
||||
public open operator function connect(@R|kotlin/annotations/jvm/internal/ParameterName|(String(host)) host: R|ft<java/lang/String, java/lang/String?>|!): R|kotlin/Unit|
|
||||
public open operator function connect(@R|kotlin/annotations/jvm/internal/ParameterName|(String(host)) host: 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 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 foo(): R|ft<kotlin/collections/MutableList<ft<kotlin/String, kotlin/String?>>, kotlin/collections/List<ft<kotlin/String, kotlin/String?>>?>|!
|
||||
|
||||
public abstract operator function dummy(): R|kotlin/Unit|
|
||||
|
||||
|
||||
Reference in New Issue
Block a user