FIR type enhancement: fold flexible types when it's possible
Related to KT-29937
This commit is contained in:
@@ -23,6 +23,7 @@ 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.typeContext
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||
@@ -33,6 +34,7 @@ import org.jetbrains.kotlin.load.java.structure.*
|
||||
import org.jetbrains.kotlin.load.java.typeEnhancement.*
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.types.AbstractStrictEqualityTypeChecker
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
@@ -65,7 +67,7 @@ private fun JavaType?.enhancePossiblyFlexible(
|
||||
|
||||
FirResolvedTypeRefImpl(
|
||||
session, psi = null,
|
||||
type = ConeFlexibleType(lowerResult, upperResult),
|
||||
type = coneFlexibleOrSimpleType(session, lowerResult, upperResult),
|
||||
isMarkedNullable = false, annotations = annotations
|
||||
)
|
||||
}
|
||||
@@ -81,6 +83,17 @@ private fun JavaType?.subtreeSize(): Int {
|
||||
return 1 + typeArguments.sumBy { it?.subtreeSize() ?: 0 }
|
||||
}
|
||||
|
||||
private fun coneFlexibleOrSimpleType(
|
||||
session: FirSession,
|
||||
lowerBound: ConeLookupTagBasedType,
|
||||
upperBound: ConeLookupTagBasedType
|
||||
): ConeKotlinType {
|
||||
if (AbstractStrictEqualityTypeChecker.strictEqualTypes(session.typeContext, lowerBound, upperBound)) {
|
||||
return lowerBound
|
||||
}
|
||||
return ConeFlexibleType(lowerBound, upperBound)
|
||||
}
|
||||
|
||||
private val KOTLIN_COLLECTIONS = FqName("kotlin.collections")
|
||||
|
||||
private val KOTLIN_COLLECTIONS_PREFIX_LENGTH = KOTLIN_COLLECTIONS.asString().length + 1
|
||||
|
||||
@@ -33,15 +33,6 @@ class JavaClassUseSiteScope(
|
||||
//base symbol as key, overridden as value
|
||||
private val overriddenByBase = mutableMapOf<ConeFunctionSymbol, ConeFunctionSymbol?>()
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
private fun isSubtypeOf(subType: ConeKotlinType, superType: ConeKotlinType): Boolean {
|
||||
// TODO: introduce normal sub-typing
|
||||
return true
|
||||
}
|
||||
|
||||
private fun isSubtypeOf(subType: FirTypeRef, superType: FirTypeRef) =
|
||||
isSubtypeOf(subType.toNotNullConeKotlinType(), superType.toNotNullConeKotlinType())
|
||||
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
private fun isEqualTypes(a: ConeKotlinType, b: ConeKotlinType): Boolean {
|
||||
// TODO: introduce normal type comparison
|
||||
@@ -73,7 +64,6 @@ class JavaClassUseSiteScope(
|
||||
val member = (it as FirFunctionSymbol).fir as FirNamedFunction
|
||||
self.modality != Modality.FINAL
|
||||
&& sameReceivers(member.receiverTypeRef, self.receiverTypeRef)
|
||||
&& isSubtypeOf(member.returnTypeRef, self.returnTypeRef)
|
||||
&& isOverriddenFunCheck(member, self)
|
||||
} // TODO: two or more overrides for one fun?
|
||||
overriddenByBase[this] = overriding
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir
|
||||
|
||||
import org.jetbrains.kotlin.fir.types.ConeTypeContext
|
||||
|
||||
private class SessionBasedTypeContext(override val session: FirSession) : ConeTypeContext
|
||||
|
||||
val FirSession.typeContext: ConeTypeContext get() = SessionBasedTypeContext(this)
|
||||
+2
-5
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ConePropertySymbol
|
||||
import org.jetbrains.kotlin.fir.typeContext
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.ConeTypeContext
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
@@ -35,11 +36,7 @@ class FirClassUseSiteScope(
|
||||
//base symbol as key
|
||||
val overrides = mutableMapOf<ConeCallableSymbol, ConeCallableSymbol?>()
|
||||
|
||||
|
||||
val context = object : ConeTypeContext {
|
||||
override val session: FirSession
|
||||
get() = session
|
||||
}
|
||||
val context: ConeTypeContext = session.typeContext
|
||||
|
||||
private fun isEqualTypes(a: ConeKotlinType, b: ConeKotlinType) = AbstractStrictEqualityTypeChecker.strictEqualTypes(context, a, b)
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
@R|java/lang/annotation/Documented|() @R|javax/annotation/meta/TypeQualifierNickname|() @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) public abstract annotation class MyNullable : R|java/lang/annotation/Annotation| {
|
||||
}
|
||||
public open class NonNullNever : R|java/lang/Object| {
|
||||
@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) public open property field(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
|
||||
@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) public open property field(var): R|kotlin/String|?
|
||||
public get(): R|kotlin/String|?
|
||||
public set(value: R|kotlin/String|?): kotlin/Unit
|
||||
|
||||
@R|MyNullable|() public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) x: R|ft<kotlin/String?, kotlin/String?>|?, @R|MyNullable|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
@R|MyNullable|() public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) x: R|kotlin/String|?, @R|MyNullable|() y: R|kotlin/CharSequence|?): R|kotlin/String|?
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
public open class Simple : R|java/lang/Object| {
|
||||
@R|javax/annotation/Nullable|() public open property field(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
|
||||
@R|javax/annotation/Nullable|() public open property field(var): R|kotlin/String|?
|
||||
public get(): R|kotlin/String|?
|
||||
public set(value: R|kotlin/String|?): kotlin/Unit
|
||||
|
||||
@R|javax/annotation/Nullable|() public open operator function foo(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/CheckForNull|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
@R|javax/annotation/Nullable|() public open operator function foo(@R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|kotlin/String|?
|
||||
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String|
|
||||
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@ public open class Strange : R|java/lang/Object| {
|
||||
public get(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public set(value: R|ft<kotlin/String, kotlin/String?>|!): kotlin/Unit
|
||||
|
||||
@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.MAYBE|()) public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.ALWAYS|()) x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.MAYBE|()) public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.ALWAYS|()) x: R|kotlin/String|, @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) y: R|kotlin/CharSequence|?): R|kotlin/String|?
|
||||
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String|
|
||||
|
||||
}
|
||||
|
||||
Vendored
+8
-8
@@ -1,15 +1,15 @@
|
||||
@R|FieldsAreNullable|() public open class A : R|java/lang/Object| {
|
||||
public open property field(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 field(var): R|kotlin/String|?
|
||||
public get(): R|kotlin/String|?
|
||||
public set(value: R|kotlin/String|?): kotlin/Unit
|
||||
|
||||
@R|javax/annotation/Nonnull|() public open property nonNullField(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
|
||||
@R|javax/annotation/Nonnull|() public open property nonNullField(var): R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
public set(value: R|kotlin/String|): kotlin/Unit
|
||||
|
||||
public open operator function foo(q: R|ft<kotlin/String, kotlin/String?>|!, @R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/CheckForNull|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public open operator function foo(q: R|ft<kotlin/String, kotlin/String?>|!, @R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String|
|
||||
|
||||
}
|
||||
@R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/CheckForNull|() @R|javax/annotation/meta/TypeQualifierDefault|(<implicitArrayOf>(R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class FieldsAreNullable : R|java/lang/annotation/Annotation| {
|
||||
|
||||
Vendored
+2
-2
@@ -1,7 +1,7 @@
|
||||
@R|spr/NonNullApi|() public open class A : R|java/lang/Object| {
|
||||
public open operator function foo(x: R|ft<kotlin/String, kotlin/String>|, @R|spr/Nullable|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo(x: R|kotlin/String|, @R|spr/Nullable|() y: R|kotlin/CharSequence|?): R|kotlin/String|
|
||||
|
||||
@R|spr/ForceFlexibility|() public open operator function bar(x: R|ft<kotlin/String, kotlin/String?>|!, @R|javax/annotation/Nonnull|() y: R|ft<kotlin/CharSequence, kotlin/CharSequence>|): R|ft<kotlin/String, kotlin/String?>|!
|
||||
@R|spr/ForceFlexibility|() public open operator function bar(x: R|ft<kotlin/String, kotlin/String?>|!, @R|javax/annotation/Nonnull|() y: R|kotlin/CharSequence|): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
}
|
||||
@R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|spr/UnknownNullability|() @R|javax/annotation/meta/TypeQualifierDefault|(<implicitArrayOf>(R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class ForceFlexibility : R|java/lang/annotation/Annotation| {
|
||||
|
||||
+7
-7
@@ -1,21 +1,21 @@
|
||||
@R|spr/NonNullApi|() public open class A : R|java/lang/Object|, R|B| {
|
||||
@R|spr/ForceFlexibility|() public open operator function foo(x: R|ft<kotlin/String, kotlin/String>|): R|kotlin/Unit|
|
||||
@R|spr/ForceFlexibility|() public open operator function foo(x: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
public open operator function bar(@R|spr/ForceFlexibility|() x: R|ft<kotlin/String, kotlin/String>|): R|kotlin/Unit|
|
||||
public open operator function bar(@R|spr/ForceFlexibility|() x: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
public open operator function baz(@R|spr/UnknownNullability|() x: R|ft<kotlin/String, kotlin/String>|): R|kotlin/Unit|
|
||||
public open operator function baz(@R|spr/UnknownNullability|() x: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
public open operator function foobar(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.UNKNOWN|()) x: R|ft<kotlin/String, kotlin/String?>|!): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
public abstract interface B : R|java/lang/Object| {
|
||||
public abstract operator function foo(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|): R|kotlin/Unit|
|
||||
public abstract operator function foo(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
public abstract operator function bar(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|): R|kotlin/Unit|
|
||||
public abstract operator function bar(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
public abstract operator function baz(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|): R|kotlin/Unit|
|
||||
public abstract operator function baz(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
public abstract operator function foobar(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|): R|kotlin/Unit|
|
||||
public abstract operator function foobar(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
@R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|spr/UnknownNullability|() @R|javax/annotation/meta/TypeQualifierDefault|(<implicitArrayOf>(R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class ForceFlexibility : R|java/lang/annotation/Annotation| {
|
||||
|
||||
+21
-21
@@ -1,51 +1,51 @@
|
||||
@R|NonNullApi|() public open class A : R|java/lang/Object| {
|
||||
public open operator function foo1(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo1(x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
public open operator function foo2(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo2(x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
public open operator function foo3(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo3(x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
@R|javax/annotation/Nullable|() public open operator function bar1(@R|javax/annotation/Nullable|() x: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
@R|javax/annotation/Nullable|() public open operator function bar1(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/String|?
|
||||
|
||||
@R|javax/annotation/Nullable|() public open operator function bar2(@R|javax/annotation/Nullable|() x: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
@R|javax/annotation/Nullable|() public open operator function bar2(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/String|?
|
||||
|
||||
public open operator function baz(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function baz(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
}
|
||||
@R|NonNullApi|() public abstract interface AInt : R|java/lang/Object| {
|
||||
public abstract operator function foo1(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/CharSequence, kotlin/CharSequence>|
|
||||
public abstract operator function foo1(x: R|kotlin/String|): R|kotlin/CharSequence|
|
||||
|
||||
public abstract operator function foo2(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/CharSequence, kotlin/CharSequence>|
|
||||
public abstract operator function foo2(x: R|kotlin/String|): R|kotlin/CharSequence|
|
||||
|
||||
public abstract operator function foo3(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/CharSequence, kotlin/CharSequence>|
|
||||
public abstract operator function foo3(x: R|kotlin/String|): R|kotlin/CharSequence|
|
||||
|
||||
@R|javax/annotation/Nullable|() public abstract operator function bar1(@R|javax/annotation/Nullable|() x: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?
|
||||
@R|javax/annotation/Nullable|() public abstract operator function bar1(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/CharSequence|?
|
||||
|
||||
@R|javax/annotation/Nullable|() public abstract operator function bar2(@R|javax/annotation/Nullable|() x: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?
|
||||
@R|javax/annotation/Nullable|() public abstract operator function bar2(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/CharSequence|?
|
||||
|
||||
public abstract operator function baz(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/CharSequence, kotlin/CharSequence>|
|
||||
public abstract operator function baz(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/CharSequence|
|
||||
|
||||
}
|
||||
@R|NullableApi|() public open class B : R|A|, R|AInt| {
|
||||
public open operator function foo1(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo1(x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
@R|javax/annotation/Nonnull|() public open operator function foo2(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|javax/annotation/Nonnull|() public open operator function foo2(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
public open operator function bar1(x: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
public open operator function bar1(x: R|kotlin/String|?): R|kotlin/String|?
|
||||
|
||||
public open operator function baz(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function baz(x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
}
|
||||
@R|NonNullApi|() public open class C : R|A|, R|AInt| {
|
||||
public open operator function foo1(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo1(x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
public open operator function foo2(@R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo2(@R|javax/annotation/Nonnull|() x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
public open operator function bar1(x: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
public open operator function bar1(x: R|kotlin/String|?): R|kotlin/String|?
|
||||
|
||||
@R|javax/annotation/Nullable|() public open operator function bar2(@R|javax/annotation/Nullable|() x: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
@R|javax/annotation/Nullable|() public open operator function bar2(@R|javax/annotation/Nullable|() x: R|kotlin/String|?): R|kotlin/String|?
|
||||
|
||||
public open operator function baz(x: R|ft<kotlin/String, kotlin/String>|): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function baz(x: R|kotlin/String|): R|kotlin/String|
|
||||
|
||||
}
|
||||
@R|java/lang/annotation/Target|(R|java/lang/annotation/ElementType.TYPE|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|() @R|javax/annotation/meta/TypeQualifierDefault|(<implicitArrayOf>(R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|(), R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class NonNullApi : R|java/lang/annotation/Annotation| {
|
||||
|
||||
+6
-6
@@ -1,13 +1,13 @@
|
||||
@R|NonNullApi|() public open class A : R|java/lang/Object| {
|
||||
public open property field(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 field(var): R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
public set(value: R|kotlin/String|): kotlin/Unit
|
||||
|
||||
public open operator function foo(x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/CheckForNull|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo(x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|kotlin/String|
|
||||
|
||||
@R|NullableApi|() public open operator function foobar(x: R|ft<kotlin/String?, kotlin/String?>|?, @R|NonNullApi|() y: R|ft<kotlin/CharSequence, kotlin/CharSequence>|): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
@R|NullableApi|() public open operator function foobar(x: R|kotlin/String|?, @R|NonNullApi|() y: R|kotlin/CharSequence|): R|kotlin/String|?
|
||||
|
||||
public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function bar(): R|kotlin/String|
|
||||
|
||||
@R|javax/annotation/Nullable|() public open operator function baz(): R|ft<kotlin/collections/MutableList<ft<kotlin/String, kotlin/String?>>?, kotlin/collections/List<ft<kotlin/String, kotlin/String?>>?>|?
|
||||
|
||||
|
||||
+5
-5
@@ -1,10 +1,10 @@
|
||||
@R|javax/annotation/ParametersAreNonnullByDefault|() public open class A : R|java/lang/Object| {
|
||||
@R|javax/annotation/Nullable|() public open property field(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
|
||||
@R|javax/annotation/Nullable|() public open property field(var): R|kotlin/String|?
|
||||
public get(): R|kotlin/String|?
|
||||
public set(value: R|kotlin/String|?): kotlin/Unit
|
||||
|
||||
public open operator function foo(q: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/CheckForNull|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public open operator function foo(q: R|kotlin/String|, @R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String|
|
||||
|
||||
}
|
||||
|
||||
+10
-10
@@ -1,20 +1,20 @@
|
||||
public open class A : R|java/lang/Object| {
|
||||
@R|javax/annotation/Nullable|() public open property field(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
|
||||
@R|javax/annotation/Nullable|() public open property field(var): R|kotlin/String|?
|
||||
public get(): R|kotlin/String|?
|
||||
public set(value: R|kotlin/String|?): kotlin/Unit
|
||||
|
||||
public open operator function foo(q: R|ft<kotlin/String, kotlin/String?>|!, @R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/CheckForNull|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public open operator function foo(q: R|ft<kotlin/String, kotlin/String?>|!, @R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String|
|
||||
|
||||
}
|
||||
public open class A2 : R|java/lang/Object| {
|
||||
@R|javax/annotation/Nullable|() public open property field(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
|
||||
@R|javax/annotation/Nullable|() public open property field(var): R|kotlin/String|?
|
||||
public get(): R|kotlin/String|?
|
||||
public set(value: R|kotlin/String|?): kotlin/Unit
|
||||
|
||||
public open operator function foo(q: R|ft<kotlin/String, kotlin/String?>|!, @R|javax/annotation/Nonnull|() x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/CheckForNull|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public open operator function foo(q: R|ft<kotlin/String, kotlin/String?>|!, @R|javax/annotation/Nonnull|() x: R|kotlin/String|, @R|javax/annotation/CheckForNull|() y: R|kotlin/CharSequence|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|kotlin/String|
|
||||
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -3,9 +3,9 @@
|
||||
public get(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public set(value: R|ft<kotlin/String, kotlin/String?>|!): kotlin/Unit
|
||||
|
||||
public open operator function foo(x: R|ft<kotlin/String, kotlin/String>|, @R|spr/Nullable|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo(x: R|kotlin/String|, @R|spr/Nullable|() y: R|kotlin/CharSequence|?): R|kotlin/String|
|
||||
|
||||
public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function bar(): R|kotlin/String|
|
||||
|
||||
@R|spr/Nullable|() public open operator function baz(): R|ft<kotlin/collections/MutableList<ft<kotlin/String, kotlin/String?>>?, kotlin/collections/List<ft<kotlin/String, kotlin/String?>>?>|?
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -3,7 +3,7 @@ public open class A : R|java/lang/Object| {
|
||||
public get(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public set(value: R|ft<kotlin/String, kotlin/String?>|!): kotlin/Unit
|
||||
|
||||
public open operator function foo(x: R|ft<kotlin/String, kotlin/String?>|!, @R|spr/Nullable|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public open operator function foo(x: R|ft<kotlin/String, kotlin/String?>|!, @R|spr/Nullable|() y: R|kotlin/CharSequence|?): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
public open operator function bar(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
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<kotlin/String, kotlin/String>|
|
||||
@R|java/lang/Override|() @R|org/jetbrains/annotations/NotNull|() public open operator function get(index: R|kotlin/Int|): R|kotlin/String|
|
||||
|
||||
@R|java/lang/Override|() public open operator function size(): R|kotlin/Int|
|
||||
|
||||
|
||||
+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<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|
|
||||
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|kotlin/Comparable<in java/lang/String>|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
public open class NotNullField : R|java/lang/Object| {
|
||||
@R|org/jetbrains/annotations/NotNull|() public open property hi(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
|
||||
@R|org/jetbrains/annotations/NotNull|() public open property hi(var): R|kotlin/String|
|
||||
public get(): R|kotlin/String|
|
||||
public set(value: R|kotlin/String|): kotlin/Unit
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
public open class NotNullMethod : R|java/lang/Object| {
|
||||
@R|org/jetbrains/annotations/NotNull|() public open operator function hi(): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|org/jetbrains/annotations/NotNull|() public open operator function hi(): R|kotlin/String|
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
public open class NotNullParameter : R|java/lang/Object| {
|
||||
public open operator function hi(@R|org/jetbrains/annotations/NotNull|() param: R|ft<kotlin/String, kotlin/String>|): R|kotlin/Unit|
|
||||
public open operator function hi(@R|org/jetbrains/annotations/NotNull|() param: R|kotlin/String|): R|kotlin/Unit|
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
public open class ConstructorWithAnnotations : R|java/lang/Object| {
|
||||
public final function ConstructorWithAnnotations(r: R|ft<java/lang/Runnable, java/lang/Runnable?>|!, @R|org/jetbrains/annotations/NotNull|() s: R|ft<kotlin/String, kotlin/String>|): R|test/ConstructorWithAnnotations|
|
||||
public final function ConstructorWithAnnotations(r: R|ft<java/lang/Runnable, java/lang/Runnable?>|!, @R|org/jetbrains/annotations/NotNull|() s: R|kotlin/String|): R|test/ConstructorWithAnnotations|
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
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<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|kotlin/String|?): R|kotlin/String|
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,8 +1,8 @@
|
||||
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<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|org/jetbrains/annotations/NotNull|() public open operator function foo(@R|org/jetbrains/annotations/Nullable|() param: R|kotlin/String|?): R|kotlin/String|
|
||||
|
||||
}
|
||||
public open class AnnotatedDerived : R|Annotated| {
|
||||
public open operator function foo(param: R|ft<kotlin/String?, kotlin/String?>|?): R|ft<kotlin/String, kotlin/String>|
|
||||
public open operator function foo(param: R|kotlin/String|?): R|kotlin/String|
|
||||
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
public open class Some : R|java/lang/Object|, R|Strange<*>| {
|
||||
public open operator function foo(): R|ft<kotlin/Any, kotlin/Any>|
|
||||
public open operator function foo(): R|kotlin/Any|
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user