From 7563a98999c50b3fe556efe5e9a30519e0e304f0 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 28 Feb 2019 14:39:13 +0300 Subject: [PATCH] FIR type enhancement: make J2K mapping and changed handling more exact Related to KT-29937 --- .../jetbrains/kotlin/fir/java/JavaUtils.kt | 2 +- .../fir/java/enhancement/javaTypeUtils.kt | 53 +++++++------------ .../InnerClassTypeMultipleGeneric.fir.txt | 2 +- .../IntrinsicCompanionObject.fir.txt | 10 ++-- .../PackageLocalVisibility.fir.txt | 12 ++--- .../RemoveRedundantProjectionKind.fir.txt | 4 +- .../compiledJava/UnboundWildcard.fir.txt | 2 +- .../annotations/AnnotatedTypeInFun.fir.txt | 2 +- .../AnnotatedValueParameter.fir.txt | 2 +- .../annotations/JavaDocDeprecated.fir.txt | 2 +- .../javaBean/DifferentGetterAndSetter.fir.txt | 2 +- .../compiledJava/javaBean/JavaBeanVal.fir.txt | 2 +- .../compiledJava/javaBean/JavaBeanVar.fir.txt | 4 +- .../javaBean/JavaBeanVarOfGenericType.fir.txt | 4 +- .../compiledJava/javaBean/TwoSetters.fir.txt | 2 +- .../CustomProjectionKind.fir.txt | 2 +- .../MethodWithFunctionTypes.fir.txt | 2 +- .../MethodWithGenerics.fir.txt | 2 +- .../MethodWithMappedClasses.fir.txt | 4 +- .../MethodWithTypeParameters.fir.txt | 2 +- .../PropertyComplexTypes.fir.txt | 18 +++---- .../PropertySimpleType.fir.txt | 12 ++--- .../error/WrongProjectionKind.fir.txt | 2 +- .../error/WrongReturnTypeStructure.fir.txt | 2 +- .../WrongTypeParameterBoundStructure1.fir.txt | 2 +- .../WrongValueParameterStructure1.fir.txt | 2 +- .../return/SubclassOfCollection.fir.txt | 2 +- .../compiledJava/library/LoadIterable.fir.txt | 4 +- .../compiledJava/library/LoadIterator.fir.txt | 4 +- .../loadJava/compiledJava/library/Max.fir.txt | 2 +- .../mutability/LoadIterable.fir.txt | 8 +-- .../LoadIterableWithConflict.fir.txt | 4 +- .../ReadOnlyExtendsWildcard.fir.txt | 2 +- .../compiledJava/sam/Comparator.fir.txt | 2 +- .../compiledJava/sam/FilenameFilter.fir.txt | 2 +- .../sam/InterfaceWithObjectMethod.fir.txt | 2 +- .../adapters/NonTrivialFunctionType.fir.txt | 2 +- .../sam/adapters/TypeParameterOfClass.fir.txt | 2 +- .../signatureAnnotations/StableName.fir.txt | 2 +- ...perclassesInconsistentGenericTypes.fir.txt | 2 +- 40 files changed, 91 insertions(+), 104 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt index 0c0cbebd9f1..402636cf70e 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaUtils.kt @@ -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 diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt index 6815e47cf27..df799889b55 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/javaTypeUtils.kt @@ -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 { - 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( - val result: T, - val mutabilityChanged: Boolean = false, - val nullabilityChanged: Boolean = false -) - -private fun T.noChange() = EnhanceDetailsResult(this) -private fun T.enhancedNullability() = EnhanceDetailsResult(this, nullabilityChanged = true) -private fun T.enhancedMutability() = EnhanceDetailsResult(this, mutabilityChanged = true) - private fun ConeClassifierSymbol.enhanceMutability( qualifiers: JavaTypeQualifiers, position: TypeComponentPosition -): EnhanceDetailsResult { - 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 } diff --git a/compiler/testData/loadJava/compiledJava/InnerClassTypeMultipleGeneric.fir.txt b/compiler/testData/loadJava/compiledJava/InnerClassTypeMultipleGeneric.fir.txt index c25a07539a9..7deb45fb6fd 100644 --- a/compiler/testData/loadJava/compiledJava/InnerClassTypeMultipleGeneric.fir.txt +++ b/compiler/testData/loadJava/compiledJava/InnerClassTypeMultipleGeneric.fir.txt @@ -1,4 +1,4 @@ public open class InnerClassTypeMultipleGeneric : R|java/lang/Object| { - public open operator function staticType(): R|ft, ft, ft>, test/InnerClassTypeMultipleGeneric.Outer.Inner, ft, ft>>| + public open operator function staticType(): R|ft, ft, ft>, test/InnerClassTypeMultipleGeneric.Outer.Inner, ft, ft>?>|! } diff --git a/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.fir.txt b/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.fir.txt index b6c77a6b461..84ca211b9a2 100644 --- a/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.fir.txt +++ b/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.fir.txt @@ -1,12 +1,12 @@ public abstract interface IntrinsicCompanionObject : R|java/lang/Object| { - public abstract operator function testInt(i: R|ft|!): R|kotlin/Unit| + public abstract operator function testInt(i: R|ft|!): R|kotlin/Unit| - public abstract operator function testChar(c: R|ft|!): R|kotlin/Unit| + public abstract operator function testChar(c: R|ft|!): R|kotlin/Unit| - public abstract operator function testString(s: R|ft|!): R|kotlin/Unit| + public abstract operator function testString(s: R|ft|!): R|kotlin/Unit| - public abstract operator function testBoolean(b: R|ft|!): R|kotlin/Unit| + public abstract operator function testBoolean(b: R|ft|!): R|kotlin/Unit| - public abstract operator function testEnum(e: R|ft|!): R|kotlin/Unit| + public abstract operator function testEnum(e: R|ft|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/PackageLocalVisibility.fir.txt b/compiler/testData/loadJava/compiledJava/PackageLocalVisibility.fir.txt index 7dbbd1464b8..8e4e0db5688 100644 --- a/compiler/testData/loadJava/compiledJava/PackageLocalVisibility.fir.txt +++ b/compiler/testData/loadJava/compiledJava/PackageLocalVisibility.fir.txt @@ -1,12 +1,12 @@ public open class Frame : R|java/lang/Object| { - public/*package*/ open property accessibleContext(var): R|ft|! - public/*package*/ get(): R|ft|! - public/*package*/ set(value: R|ft|!): kotlin/Unit + public/*package*/ open property accessibleContext(var): R|ft|! + public/*package*/ get(): R|ft|! + public/*package*/ set(value: R|ft|!): kotlin/Unit } public open class JFrame : R|awt/Frame| { - protected/*protected and package*/ open property accessibleContext(var): R|ft|! - protected/*protected and package*/ get(): R|ft|! - protected/*protected and package*/ set(value: R|ft|!): kotlin/Unit + protected/*protected and package*/ open property accessibleContext(var): R|ft|! + protected/*protected and package*/ get(): R|ft|! + protected/*protected and package*/ set(value: R|ft|!): kotlin/Unit } diff --git a/compiler/testData/loadJava/compiledJava/RemoveRedundantProjectionKind.fir.txt b/compiler/testData/loadJava/compiledJava/RemoveRedundantProjectionKind.fir.txt index a6d7f9f83df..ee32ccd14d9 100644 --- a/compiler/testData/loadJava/compiledJava/RemoveRedundantProjectionKind.fir.txt +++ b/compiler/testData/loadJava/compiledJava/RemoveRedundantProjectionKind.fir.txt @@ -1,6 +1,6 @@ public abstract interface RemoveRedundantProjectionKind : R|java/lang/Object| { - public abstract operator function f(collection: R|ft, java/util/Collection?>|!): R|kotlin/Unit| + public abstract operator function f(collection: R|ft, kotlin/collections/Collection?>|!): R|kotlin/Unit| - public abstract operator function f(comparator: R|ft, java/lang/Comparable?>|!): R|kotlin/Unit| + public abstract operator function f(comparator: R|ft, kotlin/Comparable?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/UnboundWildcard.fir.txt b/compiler/testData/loadJava/compiledJava/UnboundWildcard.fir.txt index 69393aae35f..e6b0a3b340f 100644 --- a/compiler/testData/loadJava/compiledJava/UnboundWildcard.fir.txt +++ b/compiler/testData/loadJava/compiledJava/UnboundWildcard.fir.txt @@ -1,6 +1,6 @@ public final class UnboundWildcard : R|java/lang/Object| { public final operator function foo(): R|ft, test/UnboundWildcard.MyClass<*>?>|! - public final operator function collection(): R|ft, java/util/Collection<*>?>|! + public final operator function collection(): R|ft, kotlin/collections/Collection<*>?>|! } diff --git a/compiler/testData/loadJava/compiledJava/annotations/AnnotatedTypeInFun.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/AnnotatedTypeInFun.fir.txt index fc9d8fed0a9..3587b0d51c8 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/AnnotatedTypeInFun.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/AnnotatedTypeInFun.fir.txt @@ -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|!, @R|test/AnnotatedTypeInFun.Anno|(String(b)) b: @R|test/AnnotatedTypeInFun.Anno|(String(b)) R|ft|!): R|kotlin/Unit| + public/*package*/ open operator function foo(@R|test/AnnotatedTypeInFun.Anno|(String(a)) a: @R|test/AnnotatedTypeInFun.Anno|(String(a)) R|ft|!, @R|test/AnnotatedTypeInFun.Anno|(String(b)) b: @R|test/AnnotatedTypeInFun.Anno|(String(b)) R|ft|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/annotations/AnnotatedValueParameter.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/AnnotatedValueParameter.fir.txt index 1ac2158f44d..671f86eb6f2 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/AnnotatedValueParameter.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/AnnotatedValueParameter.fir.txt @@ -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/List>>|): R|kotlin/Unit| + public open operator function f(@R|test/AnnotatedValueParameter.Anno|(String(non-empty)) parameter: R|ft>, kotlin/collections/List>?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/annotations/JavaDocDeprecated.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/JavaDocDeprecated.fir.txt index 95678eae1d4..61d897a87a6 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/JavaDocDeprecated.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/JavaDocDeprecated.fir.txt @@ -1,4 +1,4 @@ public open class JavaDocDeprecated : R|java/lang/Object| { - public open operator function getFoo(text: R|ft|!): R|ft|! + public open operator function getFoo(text: R|ft|!): R|ft|! } diff --git a/compiler/testData/loadJava/compiledJava/javaBean/DifferentGetterAndSetter.fir.txt b/compiler/testData/loadJava/compiledJava/javaBean/DifferentGetterAndSetter.fir.txt index 4dcf24605bf..352f111edb4 100644 --- a/compiler/testData/loadJava/compiledJava/javaBean/DifferentGetterAndSetter.fir.txt +++ b/compiler/testData/loadJava/compiledJava/javaBean/DifferentGetterAndSetter.fir.txt @@ -1,5 +1,5 @@ public open class DifferentGetterAndSetter : R|java/lang/Object| { - public open operator function setSomething(color: R|ft|!): R|kotlin/Unit| + public open operator function setSomething(color: R|ft|!): R|kotlin/Unit| public open operator function getSomething(): R|kotlin/Int| diff --git a/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVal.fir.txt b/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVal.fir.txt index 55dbbeb9e5b..1bbf0a935b4 100644 --- a/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVal.fir.txt +++ b/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVal.fir.txt @@ -1,4 +1,4 @@ public open class JavaBeanVal : R|java/lang/Object| { - public open operator function getColor(): R|ft|! + public open operator function getColor(): R|ft|! } diff --git a/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVar.fir.txt b/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVar.fir.txt index b058578d98b..95289bd7e4a 100644 --- a/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVar.fir.txt +++ b/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVar.fir.txt @@ -1,6 +1,6 @@ public open class JavaBeanVar : R|java/lang/Object| { - public open operator function getColor(): R|ft|! + public open operator function getColor(): R|ft|! - public open operator function setColor(string: R|ft|!): R|kotlin/Unit| + public open operator function setColor(string: R|ft|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVarOfGenericType.fir.txt b/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVarOfGenericType.fir.txt index c047c160f22..3a36277e70e 100644 --- a/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVarOfGenericType.fir.txt +++ b/compiler/testData/loadJava/compiledJava/javaBean/JavaBeanVarOfGenericType.fir.txt @@ -1,6 +1,6 @@

public open class JavaBeanVarOfGenericType : R|java/lang/Object| { - public open operator function getCharacters(): R|ft>, java/util/ArrayList>>| + public open operator function getCharacters(): R|ft>, java/util/ArrayList>?>|! - public open operator function setCharacters(characters: R|ft>, java/util/ArrayList>>|): R|kotlin/Unit| + public open operator function setCharacters(characters: R|ft>, java/util/ArrayList>?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/javaBean/TwoSetters.fir.txt b/compiler/testData/loadJava/compiledJava/javaBean/TwoSetters.fir.txt index 239a873b5b7..1d6bd4e6443 100644 --- a/compiler/testData/loadJava/compiledJava/javaBean/TwoSetters.fir.txt +++ b/compiler/testData/loadJava/compiledJava/javaBean/TwoSetters.fir.txt @@ -1,5 +1,5 @@ public open class TwoSetters : R|java/lang/Object| { - public open operator function setSize(size: R|ft|!): R|kotlin/Unit| + public open operator function setSize(size: R|ft|!): R|kotlin/Unit| public open operator function setSize(size: R|kotlin/Int|): R|kotlin/Unit| diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/CustomProjectionKind.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/CustomProjectionKind.fir.txt index 2bebe1ca4f5..5cd02c33563 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/CustomProjectionKind.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/CustomProjectionKind.fir.txt @@ -1,4 +1,4 @@ public open class CustomProjectionKind : R|java/lang/Object| { - public open operator function foo(): R|ft>, kotlin/collections/List>>| + public open operator function foo(): R|ft>, kotlin/collections/List>?>|! } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithFunctionTypes.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithFunctionTypes.fir.txt index c7cf1146190..98f95044dcf 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithFunctionTypes.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithFunctionTypes.fir.txt @@ -1,4 +1,4 @@ public open class MethodWithFunctionTypes : R|java/lang/Object| { - public open operator function foo(f: R|ft, ft>, kotlin/Function1, ft>>|): R|ft>, kotlin/Function0>>| + public open operator function foo(f: R|ft, ft>, kotlin/Function1, ft>?>|!): R|ft>, kotlin/Function0>?>|! } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithGenerics.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithGenerics.fir.txt index aa8ddf646a0..20b19f6ddfa 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithGenerics.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithGenerics.fir.txt @@ -1,4 +1,4 @@ public open class MethodWithGenerics : R|java/lang/Object| { - public open operator function foo(a: R|ft|!, b: R|ft, ft>, kotlin/collections/Map.Entry, ft>>>, kotlin/collections/List, ft>, kotlin/collections/Map.Entry, ft>>>>|): R|ft|! + public open operator function foo(a: R|ft|!, b: R|ft, ft>, kotlin/collections/Map.Entry, ft>?>>, kotlin/collections/List, ft>, kotlin/collections/Map.Entry, ft>?>>?>|!): R|ft|! } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithMappedClasses.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithMappedClasses.fir.txt index 81d2afa8f2b..4f53285a6b4 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithMappedClasses.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithMappedClasses.fir.txt @@ -1,6 +1,6 @@ public open class MethodWithMappedClasses : R|java/lang/Object| { - public open operator function copy(dest: R|ft, java/util/List?>|!, src: R|ft>, kotlin/collections/List>>|): R|kotlin/Unit| + public open operator function copy(dest: R|ft, kotlin/collections/List?>|!, src: R|ft>, kotlin/collections/List>?>|!): R|kotlin/Unit| - public open operator function copyMap(dest: R|ft, *>, kotlin/collections/Map, *>>|, src: R|ft, ft>, kotlin/collections/Map, ft>>|): R|kotlin/Unit| + public open operator function copyMap(dest: R|ft, in T>, kotlin/collections/Map, in T>?>|!, src: R|ft, ft>, kotlin/collections/Map, ft>?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithTypeParameters.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithTypeParameters.fir.txt index d780aff5edf..30b1fc8b700 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithTypeParameters.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/MethodWithTypeParameters.fir.txt @@ -1,4 +1,4 @@ public open class MethodWithTypeParameters : R|java/lang/Object| { - public open operator function foo(a: R|ft|!, b: R|ft, java/util/List?>|!, list: R|ft, java/util/List?>|!): R|kotlin/Unit| + public open operator function foo(a: R|ft|!, b: R|ft, kotlin/collections/List?>|!, list: R|ft, kotlin/collections/List?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/PropertyComplexTypes.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/PropertyComplexTypes.fir.txt index 605053bc225..f01ebd7a40b 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/PropertyComplexTypes.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/PropertyComplexTypes.fir.txt @@ -3,16 +3,16 @@ public get(): R|ft|! public set(value: R|ft|!): kotlin/Unit - public open property listDefinedGeneric(var): R|ft>, java/util/ArrayList>>| - public get(): R|ft>, java/util/ArrayList>>| - public set(value: R|ft>, java/util/ArrayList>>|): kotlin/Unit + public open property listDefinedGeneric(var): R|ft>, java/util/ArrayList>?>|! + public get(): R|ft>, java/util/ArrayList>?>|! + public set(value: R|ft>, java/util/ArrayList>?>|!): kotlin/Unit - public open property listGeneric(var): R|ft>, java/util/ArrayList>>| - public get(): R|ft>, java/util/ArrayList>>| - public set(value: R|ft>, java/util/ArrayList>>|): kotlin/Unit + public open property listGeneric(var): R|ft>, java/util/ArrayList>?>|! + public get(): R|ft>, java/util/ArrayList>?>|! + public set(value: R|ft>, java/util/ArrayList>?>|!): kotlin/Unit - public open property listOfGenericList(var): R|ft>, java/util/ArrayList>>>, java/util/ArrayList>, java/util/ArrayList>>>>| - public get(): R|ft>, java/util/ArrayList>>>, java/util/ArrayList>, java/util/ArrayList>>>>| - public set(value: R|ft>, java/util/ArrayList>>>, java/util/ArrayList>, java/util/ArrayList>>>>|): kotlin/Unit + public open property listOfGenericList(var): R|ft>, java/util/ArrayList>?>>, java/util/ArrayList>, java/util/ArrayList>?>>?>|! + public get(): R|ft>, java/util/ArrayList>?>>, java/util/ArrayList>, java/util/ArrayList>?>>?>|! + public set(value: R|ft>, java/util/ArrayList>?>>, java/util/ArrayList>, java/util/ArrayList>?>>?>|!): kotlin/Unit } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/PropertySimpleType.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/PropertySimpleType.fir.txt index a38cc0aa3de..5bf195201b7 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/PropertySimpleType.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/PropertySimpleType.fir.txt @@ -1,10 +1,10 @@ public open class PropertySimpleType : R|java/lang/Object| { - public open property fieldOne(var): R|ft|! - public get(): R|ft|! - public set(value: R|ft|!): kotlin/Unit + public open property fieldOne(var): R|ft|! + public get(): R|ft|! + public set(value: R|ft|!): kotlin/Unit - public open property fieldTwo(var): R|ft|! - public get(): R|ft|! - public set(value: R|ft|!): kotlin/Unit + public open property fieldTwo(var): R|ft|! + public get(): R|ft|! + public set(value: R|ft|!): kotlin/Unit } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongProjectionKind.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongProjectionKind.fir.txt index 44d5b0530f7..0bcdcd66f6d 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongProjectionKind.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongProjectionKind.fir.txt @@ -1,4 +1,4 @@ public open class WrongProjectionKind : R|java/lang/Object| { - public open operator function copy(from: R|kotlin/Array>|, to: R|kotlin/Array>|): R|ft>, kotlin/collections/List>>| + public open operator function copy(from: R|kotlin/Array>|, to: R|kotlin/Array>|): R|ft>, kotlin/collections/List>?>|! } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongReturnTypeStructure.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongReturnTypeStructure.fir.txt index 0bf1a078c1e..01281c03d5b 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongReturnTypeStructure.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongReturnTypeStructure.fir.txt @@ -1,4 +1,4 @@ public open class WrongReturnTypeStructure : R|java/lang/Object| { - public open operator function foo(a: R|ft|!, b: R|ft, ft>, kotlin/collections/Map.Entry, ft>>>, kotlin/collections/List, ft>, kotlin/collections/Map.Entry, ft>>>>|): R|ft|! + public open operator function foo(a: R|ft|!, b: R|ft, ft>, kotlin/collections/Map.Entry, ft>?>>, kotlin/collections/List, ft>, kotlin/collections/Map.Entry, ft>?>>?>|!): R|ft|! } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongTypeParameterBoundStructure1.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongTypeParameterBoundStructure1.fir.txt index 640c291be18..954b4b3738a 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongTypeParameterBoundStructure1.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongTypeParameterBoundStructure1.fir.txt @@ -1,4 +1,4 @@ public open class WrongTypeParameterBoundStructure1 : R|java/lang/Object| { - public open operator function foo(a: R|ft|!, b: R|ft, java/util/List?>|!): R|kotlin/Unit| + public open operator function foo(a: R|ft|!, b: R|ft, kotlin/collections/List?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongValueParameterStructure1.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongValueParameterStructure1.fir.txt index bc7fc027f7a..d32c9b7de5a 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongValueParameterStructure1.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/error/WrongValueParameterStructure1.fir.txt @@ -1,4 +1,4 @@ public open class WrongValueParameterStructure1 : R|java/lang/Object| { - public open operator function foo(a: R|ft|!, b: R|ft, ft>, kotlin/collections/Map.Entry, ft>>>, kotlin/collections/List, ft>, kotlin/collections/Map.Entry, ft>>>>|): R|ft|! + public open operator function foo(a: R|ft|!, b: R|ft, ft>, kotlin/collections/Map.Entry, ft>?>>, kotlin/collections/List, ft>, kotlin/collections/Map.Entry, ft>?>>?>|!): R|ft|! } diff --git a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/return/SubclassOfCollection.fir.txt b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/return/SubclassOfCollection.fir.txt index 3aaf597b0e7..dcdd8d93a37 100644 --- a/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/return/SubclassOfCollection.fir.txt +++ b/compiler/testData/loadJava/compiledJava/kotlinSignature/propagation/return/SubclassOfCollection.fir.txt @@ -1,4 +1,4 @@ public abstract interface SubclassOfCollection : R|java/util/Collection| { - public abstract operator function iterator(): R|ft>, kotlin/collections/Iterator>>| + public abstract operator function iterator(): R|ft>, kotlin/collections/Iterator>?>|! } diff --git a/compiler/testData/loadJava/compiledJava/library/LoadIterable.fir.txt b/compiler/testData/loadJava/compiledJava/library/LoadIterable.fir.txt index 94e4345df4c..0324860d473 100644 --- a/compiler/testData/loadJava/compiledJava/library/LoadIterable.fir.txt +++ b/compiler/testData/loadJava/compiledJava/library/LoadIterable.fir.txt @@ -1,6 +1,6 @@ public abstract interface LoadIterable : R|java/lang/Object| { - public abstract operator function getIterable(): R|ft>, kotlin/collections/Iterable>>| + public abstract operator function getIterable(): R|ft>, kotlin/collections/Iterable>?>|! - public abstract operator function setIterable(Iterable: R|ft>, kotlin/collections/Iterable>>|): R|kotlin/Unit| + public abstract operator function setIterable(Iterable: R|ft>, kotlin/collections/Iterable>?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/library/LoadIterator.fir.txt b/compiler/testData/loadJava/compiledJava/library/LoadIterator.fir.txt index a13a2057bc9..438f38a31f4 100644 --- a/compiler/testData/loadJava/compiledJava/library/LoadIterator.fir.txt +++ b/compiler/testData/loadJava/compiledJava/library/LoadIterator.fir.txt @@ -1,6 +1,6 @@ public abstract interface LoadIterator : R|java/lang/Object| { - public abstract operator function getIterator(): R|ft>, kotlin/collections/Iterator>>| + public abstract operator function getIterator(): R|ft>, kotlin/collections/Iterator>?>|! - public abstract operator function setIterator(iterator: R|ft>, kotlin/collections/Iterator>>|): R|kotlin/Unit| + public abstract operator function setIterator(iterator: R|ft>, kotlin/collections/Iterator>?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/library/Max.fir.txt b/compiler/testData/loadJava/compiledJava/library/Max.fir.txt index dbda758a0e3..ebee027e1be 100644 --- a/compiler/testData/loadJava/compiledJava/library/Max.fir.txt +++ b/compiler/testData/loadJava/compiledJava/library/Max.fir.txt @@ -1,4 +1,4 @@ public open class Max : R|java/lang/Object| { - public open operator function max(coll: R|ft, java/util/Collection?>|!): R|ft|! + public open operator function max(coll: R|ft, kotlin/collections/Collection?>|!): R|ft|! } diff --git a/compiler/testData/loadJava/compiledJava/mutability/LoadIterable.fir.txt b/compiler/testData/loadJava/compiledJava/mutability/LoadIterable.fir.txt index f5b3488ab4b..0c1544dc197 100644 --- a/compiler/testData/loadJava/compiledJava/mutability/LoadIterable.fir.txt +++ b/compiler/testData/loadJava/compiledJava/mutability/LoadIterable.fir.txt @@ -1,10 +1,10 @@ public abstract interface LoadIterable : R|java/lang/Object| { - @R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft>, kotlin/collections/MutableIterable>>| + @R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft>, kotlin/collections/MutableIterable>?>|! - public abstract operator function setIterable(@R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft>, kotlin/collections/MutableIterable>>|): R|kotlin/Unit| + public abstract operator function setIterable(@R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft>, kotlin/collections/MutableIterable>?>|!): R|kotlin/Unit| - @R|kotlin/annotations/jvm/ReadOnly|() public abstract operator function getReadOnlyIterable(): R|ft>, kotlin/collections/Iterable>>| + @R|kotlin/annotations/jvm/ReadOnly|() public abstract operator function getReadOnlyIterable(): R|ft>, kotlin/collections/Iterable>?>|! - public abstract operator function setReadOnlyIterable(@R|kotlin/annotations/jvm/ReadOnly|() Iterable: R|ft>, kotlin/collections/Iterable>>|): R|kotlin/Unit| + public abstract operator function setReadOnlyIterable(@R|kotlin/annotations/jvm/ReadOnly|() Iterable: R|ft>, kotlin/collections/Iterable>?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/mutability/LoadIterableWithConflict.fir.txt b/compiler/testData/loadJava/compiledJava/mutability/LoadIterableWithConflict.fir.txt index bd42f9abc50..404c3a17994 100644 --- a/compiler/testData/loadJava/compiledJava/mutability/LoadIterableWithConflict.fir.txt +++ b/compiler/testData/loadJava/compiledJava/mutability/LoadIterableWithConflict.fir.txt @@ -1,6 +1,6 @@ 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/Iterable>>| + @R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() public abstract operator function getIterable(): R|ft>, kotlin/collections/Iterable>?>|! - public abstract operator function setIterable(@R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft>, kotlin/collections/Iterable>>|): R|kotlin/Unit| + public abstract operator function setIterable(@R|kotlin/annotations/jvm/ReadOnly|() @R|kotlin/annotations/jvm/Mutable|() Iterable: R|ft>, kotlin/collections/Iterable>?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/mutability/ReadOnlyExtendsWildcard.fir.txt b/compiler/testData/loadJava/compiledJava/mutability/ReadOnlyExtendsWildcard.fir.txt index 3cd5442ff22..316a82652cd 100644 --- a/compiler/testData/loadJava/compiledJava/mutability/ReadOnlyExtendsWildcard.fir.txt +++ b/compiler/testData/loadJava/compiledJava/mutability/ReadOnlyExtendsWildcard.fir.txt @@ -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, java/util/List?>|!, @R|org/jetbrains/annotations/NotNull|() y: R|ft, kotlin/Comparable<*>>|): R|kotlin/Unit| + public abstract operator function foo(@R|kotlin/annotations/jvm/ReadOnly|() x: R|ft, kotlin/collections/List?>|!, @R|org/jetbrains/annotations/NotNull|() y: R|ft, kotlin/Comparable>|): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/sam/Comparator.fir.txt b/compiler/testData/loadJava/compiledJava/sam/Comparator.fir.txt index 764ed67d2f2..3ee6ef09654 100644 --- a/compiler/testData/loadJava/compiledJava/sam/Comparator.fir.txt +++ b/compiler/testData/loadJava/compiledJava/sam/Comparator.fir.txt @@ -1,6 +1,6 @@ public abstract interface Comparator : R|java/lang/Object| { public abstract operator function compare(o1: R|ft|!, o2: R|ft|!): R|kotlin/Int| - public abstract operator function equals(obj: R|ft|!): R|kotlin/Boolean| + public abstract operator function equals(obj: R|ft|!): R|kotlin/Boolean| } diff --git a/compiler/testData/loadJava/compiledJava/sam/FilenameFilter.fir.txt b/compiler/testData/loadJava/compiledJava/sam/FilenameFilter.fir.txt index 6a2f3875446..5623aeb78de 100644 --- a/compiler/testData/loadJava/compiledJava/sam/FilenameFilter.fir.txt +++ b/compiler/testData/loadJava/compiledJava/sam/FilenameFilter.fir.txt @@ -1,4 +1,4 @@ public abstract interface FilenameFilter : R|java/lang/Object| { - public abstract operator function accept(dir: R|ft|!, name: R|ft|!): R|kotlin/Boolean| + public abstract operator function accept(dir: R|ft|!, name: R|ft|!): R|kotlin/Boolean| } diff --git a/compiler/testData/loadJava/compiledJava/sam/InterfaceWithObjectMethod.fir.txt b/compiler/testData/loadJava/compiledJava/sam/InterfaceWithObjectMethod.fir.txt index 13facc60ec5..e71864751ce 100644 --- a/compiler/testData/loadJava/compiledJava/sam/InterfaceWithObjectMethod.fir.txt +++ b/compiler/testData/loadJava/compiledJava/sam/InterfaceWithObjectMethod.fir.txt @@ -1,4 +1,4 @@ public abstract interface InterfaceWithObjectMethod : R|java/lang/Object| { - public abstract operator function toString(): R|ft|! + public abstract operator function toString(): R|ft|! } diff --git a/compiler/testData/loadJava/compiledJava/sam/adapters/NonTrivialFunctionType.fir.txt b/compiler/testData/loadJava/compiledJava/sam/adapters/NonTrivialFunctionType.fir.txt index 395846ba1e9..91702d2a9f2 100644 --- a/compiler/testData/loadJava/compiledJava/sam/adapters/NonTrivialFunctionType.fir.txt +++ b/compiler/testData/loadJava/compiledJava/sam/adapters/NonTrivialFunctionType.fir.txt @@ -1,7 +1,7 @@ public open class NonTrivialFunctionType : R|java/lang/Object| { public open operator function foo(filenameFilter: R|ft|!): R|kotlin/Unit| - public open operator function foo(comparator: R|ft>, java/util/Comparator>>|): R|kotlin/Unit| + public open operator function foo(comparator: R|ft>, java/util/Comparator>?>|!): R|kotlin/Unit| public open operator function wildcardUnbound(comparator: R|ft, java/util/Comparator<*>?>|!): R|kotlin/Unit| diff --git a/compiler/testData/loadJava/compiledJava/sam/adapters/TypeParameterOfClass.fir.txt b/compiler/testData/loadJava/compiledJava/sam/adapters/TypeParameterOfClass.fir.txt index 3d3f1d6f9e6..a42ff7e43d9 100644 --- a/compiler/testData/loadJava/compiledJava/sam/adapters/TypeParameterOfClass.fir.txt +++ b/compiler/testData/loadJava/compiledJava/sam/adapters/TypeParameterOfClass.fir.txt @@ -1,4 +1,4 @@ public open class TypeParameterOfClass : R|java/lang/Object| { - public open operator function foo(comparator: R|ft>, java/util/Comparator>>|): R|kotlin/Unit| + public open operator function foo(comparator: R|ft>, java/util/Comparator>?>|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/signatureAnnotations/StableName.fir.txt b/compiler/testData/loadJava/compiledJava/signatureAnnotations/StableName.fir.txt index 29070999fd2..40b46cc76d3 100644 --- a/compiler/testData/loadJava/compiledJava/signatureAnnotations/StableName.fir.txt +++ b/compiler/testData/loadJava/compiledJava/signatureAnnotations/StableName.fir.txt @@ -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|!): R|kotlin/Unit| + public open operator function connect(@R|kotlin/annotations/jvm/internal/ParameterName|(String(host)) host: R|ft|!): R|kotlin/Unit| } diff --git a/compiler/testData/loadJava/compiledJava/signaturePropagation/TwoSuperclassesInconsistentGenericTypes.fir.txt b/compiler/testData/loadJava/compiledJava/signaturePropagation/TwoSuperclassesInconsistentGenericTypes.fir.txt index e83975a490c..e0e07e18480 100644 --- a/compiler/testData/loadJava/compiledJava/signaturePropagation/TwoSuperclassesInconsistentGenericTypes.fir.txt +++ b/compiler/testData/loadJava/compiledJava/signaturePropagation/TwoSuperclassesInconsistentGenericTypes.fir.txt @@ -1,5 +1,5 @@ public abstract interface TwoSuperclassesInconsistentGenericTypes : R|java/lang/Object| { - public abstract operator function foo(): R|ft>, kotlin/collections/List>>| + public abstract operator function foo(): R|ft>, kotlin/collections/List>?>|! public abstract operator function dummy(): R|kotlin/Unit|