diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/MyMap.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/MyMap.txt index c205590d84b..7ba11f34937 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/MyMap.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/MyMap.txt @@ -26,7 +26,7 @@ FILE: test.kt ^ String(value) } ) - lval otherResult: R|kotlin/String| = R|/map|.R|FakeOverride|(String(key), String(value)) + lval otherResult: R|ft!| = R|/map|.R|FakeOverride!|>|(String(key), String(value)) lval anotherResult: R|kotlin/String?| = R|/map|.R|FakeOverride|(String(key), String(value)) R|/map|.R|FakeOverride|( = forEach@fun (key: R|ft!|, value: R|ft!|): R|kotlin/Unit| { R|kotlin/io/println|((R|/key|.R|kotlin/Any.toString|(), String(: ), R|/value|.R|kotlin/Any.toString|())) diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/smartSet.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/smartSet.txt index 042dad07fbd..f531b95e267 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/smartSet.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/smartSet.txt @@ -19,7 +19,7 @@ FILE: smartSet.kt public final override fun clear(): R|kotlin/Unit| { } - public final override fun contains(element: R|T|): R|kotlin/Boolean| { + public final override operator fun contains(element: R|T|): R|kotlin/Boolean| { ^contains Boolean(false) } diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java index 7b8788401a0..dda0d42f391 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java @@ -1723,6 +1723,11 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest { KotlinTestUtils.runTestWithCustomIgnoreDirective(this::doTest, TargetBackend.ANY, testDataFilePath, "// IGNORE_BACKEND_FIR: "); } + @TestMetadata("AbstractMutableMap.kt") + public void testAbstractMutableMap() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/AbstractMutableMap.kt"); + } + @TestMetadata("AllCandidates.kt") public void testAllCandidates() throws Exception { runTest("compiler/testData/ir/irText/firProblems/AllCandidates.kt"); diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt index 153279fff5d..c83bf00e6af 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt @@ -5,19 +5,29 @@ package org.jetbrains.kotlin.fir.java.scopes +import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration +import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.java.enhancement.FirSignatureEnhancement +import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.scopes.FirTypeScope import org.jetbrains.kotlin.fir.scopes.ProcessorAction +import org.jetbrains.kotlin.fir.scopes.impl.FirFakeOverrideGenerator +import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptorReplacingKotlinToJava +import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag +import org.jetbrains.kotlin.fir.symbols.StandardClassIds import org.jetbrains.kotlin.fir.symbols.impl.* +import org.jetbrains.kotlin.fir.types.* +import org.jetbrains.kotlin.load.java.SpecialGenericSignatures import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.utils.addToStdlib.safeAs class JavaClassMembersEnhancementScope( session: FirSession, - owner: FirRegularClassSymbol, + private val owner: FirRegularClassSymbol, private val useSiteMemberScope: JavaClassUseSiteMemberScope, ) : FirTypeScope() { private val overriddenFunctions = mutableMapOf, Collection>>() @@ -46,10 +56,66 @@ class JavaClassMembersEnhancementScope( return super.processPropertiesByName(name, processor) } + private fun FirSimpleFunction.changeSignatureIfErasedValueParameter(): FirSimpleFunction { + val typeParameters = owner.fir.typeParameters + if (typeParameters.isEmpty() || name !in SpecialGenericSignatures.ERASED_VALUE_PARAMETERS_SHORT_NAMES) { + return this + } + val jvmDescriptor = this.computeJvmDescriptorReplacingKotlinToJava() + if (SpecialGenericSignatures.ERASED_VALUE_PARAMETERS_SIGNATURES.none { it.endsWith(jvmDescriptor) }) { + return this + } + val superClassIds = listOfNotNull(symbol.callableId.classId) + + lookupSuperTypes(owner, lookupInterfaces = true, deep = true, useSiteSession = session).map { it.lookupTag.classId } + for (superClassId in superClassIds) { + val javaClassId = JavaToKotlinClassMap.mapKotlinToJava(superClassId.asSingleFqName().toUnsafe()) ?: superClassId + val fqJvmDescriptor = "${javaClassId.asString()}.$jvmDescriptor" + if (fqJvmDescriptor in SpecialGenericSignatures.ERASED_VALUE_PARAMETERS_SIGNATURES) { + val specialSignatureInfo = SpecialGenericSignatures.getSpecialSignatureInfo(fqJvmDescriptor) + if (!specialSignatureInfo.isObjectReplacedWithTypeParameter) { + return this + } + val newParameterTypes = valueParameters.mapIndexed { i, valueParameter -> + val classLikeType = + valueParameter.returnTypeRef.coneTypeSafe()?.lowerBoundIfFlexible().safeAs() + if (classLikeType?.lookupTag?.classId == StandardClassIds.Any) { + val typeParameterIndex = if (name.asString() == "containsValue") 1 else i + val typeParameter = typeParameters.getOrNull(typeParameterIndex) ?: typeParameters.first() + val type = ConeTypeParameterLookupTag(typeParameter.symbol).constructType( + emptyArray(), valueParameter.returnTypeRef.isMarkedNullable == true + ) + if (valueParameter.returnTypeRef.coneType is ConeFlexibleType) { + ConeFlexibleType(type, type.withNullability(ConeNullability.NULLABLE)) + } else { + type + } + } else { + null + } + } + if (newParameterTypes.none { it != null }) { + return this + } + + return FirFakeOverrideGenerator.createCopyForFirFunction( + FirNamedFunctionSymbol(symbol.callableId), + this, + session, + FirDeclarationOrigin.Enhancement, + newParameterTypes = valueParameters.zip(newParameterTypes).map { (valueParameter, newType) -> + newType ?: valueParameter.returnTypeRef.coneType + } + ) + } + } + return this + } + override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { useSiteMemberScope.processFunctionsByName(name) process@{ original -> - val enhancedFunctionSymbol = signatureEnhancement.enhancedFunction(original, name) - val enhancedFunction = enhancedFunctionSymbol.fir as? FirSimpleFunction + val symbol = signatureEnhancement.enhancedFunction(original, name) + val enhancedFunction = (symbol.fir as? FirSimpleFunction)?.changeSignatureIfErasedValueParameter() + val enhancedFunctionSymbol = enhancedFunction?.symbol ?: symbol overriddenFunctions[enhancedFunctionSymbol] = enhancedFunction diff --git a/compiler/testData/codegen/box/builtinStubMethods/mapRemove/noDefaultImpls.kt b/compiler/testData/codegen/box/builtinStubMethods/mapRemove/noDefaultImpls.kt index 437d064d7f4..6b21a1c1eb4 100644 --- a/compiler/testData/codegen/box/builtinStubMethods/mapRemove/noDefaultImpls.kt +++ b/compiler/testData/codegen/box/builtinStubMethods/mapRemove/noDefaultImpls.kt @@ -1,5 +1,4 @@ // !JVM_DEFAULT_MODE: enable -// IGNORE_BACKEND_FIR: JVM_IR // SKIP_JDK6 // TARGET_BACKEND: JVM // JVM_TARGET: 1.8 diff --git a/compiler/testData/codegen/box/builtinStubMethods/mapRemove/typeSafeBridge.kt b/compiler/testData/codegen/box/builtinStubMethods/mapRemove/typeSafeBridge.kt index 38d8dbe8891..8cade1ffb56 100644 --- a/compiler/testData/codegen/box/builtinStubMethods/mapRemove/typeSafeBridge.kt +++ b/compiler/testData/codegen/box/builtinStubMethods/mapRemove/typeSafeBridge.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // SKIP_JDK6 // TARGET_BACKEND: JVM // FULL_JDK diff --git a/compiler/testData/codegen/box/builtinStubMethods/mapRemove/typeSafeBridgeNotNullAny.kt b/compiler/testData/codegen/box/builtinStubMethods/mapRemove/typeSafeBridgeNotNullAny.kt index 2a2c9179d5a..ba11e50d134 100644 --- a/compiler/testData/codegen/box/builtinStubMethods/mapRemove/typeSafeBridgeNotNullAny.kt +++ b/compiler/testData/codegen/box/builtinStubMethods/mapRemove/typeSafeBridgeNotNullAny.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // SKIP_JDK6 // TARGET_BACKEND: JVM // FULL_JDK diff --git a/compiler/testData/codegen/box/jvm8/javaDefaults/kt40920_map.kt b/compiler/testData/codegen/box/jvm8/javaDefaults/kt40920_map.kt index bc27d8c80d0..dfad0aea567 100644 --- a/compiler/testData/codegen/box/jvm8/javaDefaults/kt40920_map.kt +++ b/compiler/testData/codegen/box/jvm8/javaDefaults/kt40920_map.kt @@ -4,7 +4,6 @@ // FILE: main.kt // WITH_RUNTIME // FULL_JDK -// IGNORE_BACKEND_FIR: JVM_IR var result = "" interface A : MutableMap diff --git a/compiler/testData/diagnostics/tests/j+k/collectionOverrides/commonCollections.fir.kt b/compiler/testData/diagnostics/tests/j+k/collectionOverrides/commonCollections.fir.kt index 2d563de8a26..592b6c233ff 100644 --- a/compiler/testData/diagnostics/tests/j+k/collectionOverrides/commonCollections.fir.kt +++ b/compiler/testData/diagnostics/tests/j+k/collectionOverrides/commonCollections.fir.kt @@ -2,7 +2,7 @@ import java.util.* fun foo() { val al = ArrayList() al.size - al.contains(1) + al.contains(1) al.contains("") al.remove("") @@ -10,7 +10,7 @@ fun foo() { val hs = HashSet() hs.size - hs.contains(1) + hs.contains(1) hs.contains("") hs.remove("") @@ -18,10 +18,10 @@ fun foo() { val hm = HashMap() hm.size - hm.containsKey(1) + hm.containsKey(1) hm.containsKey("") - hm[1] + hm[1] hm[""] hm.remove("") diff --git a/compiler/testData/diagnostics/tests/j+k/collectionOverrides/contains.fir.kt b/compiler/testData/diagnostics/tests/j+k/collectionOverrides/contains.fir.kt index 8caaa33cfd5..00249856f38 100644 --- a/compiler/testData/diagnostics/tests/j+k/collectionOverrides/contains.fir.kt +++ b/compiler/testData/diagnostics/tests/j+k/collectionOverrides/contains.fir.kt @@ -35,9 +35,9 @@ fun foo( al: java.util.ArrayList ) { a.contains("") - a.contains(1) + a.contains(1) "" in a - 1 in a + 1 in a b.contains("") b.contains(1) @@ -50,9 +50,9 @@ fun foo( 1 in ic ka.contains("") - ka.contains(1) + ka.contains(1) "" in ka - 1 in ka + 1 in ka kb.contains("") kb.contains(1) @@ -60,7 +60,7 @@ fun foo( 1 in kb al.contains("") - al.contains(1) + al.contains(1) "" in al - 1 in al + 1 in al } diff --git a/compiler/testData/diagnostics/tests/targetedBuiltIns/concurrentMapRemove.fir.kt b/compiler/testData/diagnostics/tests/targetedBuiltIns/concurrentMapRemove.fir.kt index 047e151651d..49c3fbfc73b 100644 --- a/compiler/testData/diagnostics/tests/targetedBuiltIns/concurrentMapRemove.fir.kt +++ b/compiler/testData/diagnostics/tests/targetedBuiltIns/concurrentMapRemove.fir.kt @@ -8,9 +8,9 @@ val concurrentHash: ConcurrentHashMap = null!! fun foo() { concurrent.remove("", 1) - concurrent.remove("", "") + concurrent.remove("", "") concurrentHash.remove("", 1) - concurrentHash.remove("", "") + concurrentHash.remove("", "") // Flexible types concurrent.remove(null, 1) diff --git a/compiler/testData/diagnostics/tests/targetedBuiltIns/getOrDefault.fir.kt b/compiler/testData/diagnostics/tests/targetedBuiltIns/getOrDefault.fir.kt index bf7d1201236..66aec7f85f4 100644 --- a/compiler/testData/diagnostics/tests/targetedBuiltIns/getOrDefault.fir.kt +++ b/compiler/testData/diagnostics/tests/targetedBuiltIns/getOrDefault.fir.kt @@ -4,17 +4,17 @@ abstract class A : Map fun foo(x: Map, a: A, b: java.util.HashMap) { x.getOrDefault(1, "") - x.getOrDefault("", "") + x.getOrDefault("", "") x.getOrDefault(1, 2) x.getOrDefault("", 2) a.getOrDefault(1, "") - a.getOrDefault("", "") + a.getOrDefault("", "") a.getOrDefault(1, 2) a.getOrDefault("", 2) b.getOrDefault(1, "") - b.getOrDefault("", "") + b.getOrDefault("", "") b.getOrDefault(1, 2) b.getOrDefault("", 2) } diff --git a/compiler/testData/diagnostics/tests/targetedBuiltIns/mutableMapRemove.fir.kt b/compiler/testData/diagnostics/tests/targetedBuiltIns/mutableMapRemove.fir.kt index 8936f1b8963..80bfe7c919c 100644 --- a/compiler/testData/diagnostics/tests/targetedBuiltIns/mutableMapRemove.fir.kt +++ b/compiler/testData/diagnostics/tests/targetedBuiltIns/mutableMapRemove.fir.kt @@ -22,7 +22,7 @@ fun foo(x: MutableMap, y: java.util.HashMap, z: java.u x.remove("", null) y.remove("", 1) - y.remove("", "") + y.remove("", "") y.remove("", null) z.remove("", 1) diff --git a/compiler/testData/diagnostics/testsWithStdLib/inference/kt36951.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/inference/kt36951.fir.kt index 35c35da17b4..7fdcf77c924 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/inference/kt36951.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/inference/kt36951.fir.kt @@ -3,6 +3,6 @@ class Base : HashSet() { fun foo() { - super.remove("") + super.remove("") } } diff --git a/compiler/testData/ir/irText/firProblems/AbstractMutableMap.fir.txt b/compiler/testData/ir/irText/firProblems/AbstractMutableMap.fir.txt new file mode 100644 index 00000000000..7eb7c1bd1f3 --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/AbstractMutableMap.fir.txt @@ -0,0 +1,131 @@ +FILE fqName: fileName:/AbstractMutableMap.kt + CLASS CLASS name:MyMap modality:FINAL visibility:public superTypes:[kotlin.collections.AbstractMutableMap.MyMap, V of .MyMap>] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.MyMap.MyMap, V of .MyMap> + TYPE_PARAMETER name:K index:0 variance: superTypes:[kotlin.Any] + TYPE_PARAMETER name:V index:1 variance: superTypes:[kotlin.Any] + CONSTRUCTOR visibility:public <> () returnType:.MyMap.MyMap, V of .MyMap> [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'protected constructor () [primary] declared in kotlin.collections.AbstractMutableMap' + : K of .MyMap + : V of .MyMap + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyMap modality:FINAL visibility:public superTypes:[kotlin.collections.AbstractMutableMap.MyMap, V of .MyMap>]' + FUN name:put visibility:public modality:FINAL <> ($this:.MyMap.MyMap, V of .MyMap>, key:K of .MyMap, value:V of .MyMap) returnType:V of .MyMap? + overridden: + public abstract fun put (key: K of kotlin.collections.AbstractMutableMap, value: V of kotlin.collections.AbstractMutableMap): V of kotlin.collections.AbstractMutableMap? declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:.MyMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:key index:0 type:K of .MyMap + VALUE_PARAMETER name:value index:1 type:V of .MyMap + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun put (key: K of .MyMap, value: V of .MyMap): V of .MyMap? declared in .MyMap' + CONST Null type=kotlin.Nothing? value=null + PROPERTY name:entries visibility:public modality:FINAL [val] + FUN name: visibility:public modality:FINAL <> ($this:.MyMap.MyMap, V of .MyMap>) returnType:kotlin.collections.MutableSet.MyMap, V of .MyMap>> + correspondingProperty: PROPERTY name:entries visibility:public modality:FINAL [val] + overridden: + public abstract fun (): kotlin.collections.MutableSet> declared in kotlin.collections.MutableMap + $this: VALUE_PARAMETER name: type:.MyMap.MyMap, V of .MyMap> + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun (): kotlin.collections.MutableSet.MyMap, V of .MyMap>> declared in .MyMap' + CALL 'public final fun mutableSetOf (): kotlin.collections.MutableSet [inline] declared in kotlin.collections' type=kotlin.collections.MutableSet.MyMap, V of .MyMap>> origin=null + : kotlin.collections.MutableMap.MutableEntry.MyMap, V of .MyMap> + FUN FAKE_OVERRIDE name:clear visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap) returnType:kotlin.Unit [fake_override] + overridden: + public abstract fun clear (): kotlin.Unit declared in kotlin.collections.MutableMap + public open fun clear (): kotlin.Unit declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap + FUN FAKE_OVERRIDE name:putAll visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap, from:kotlin.collections.Map.MyMap, V of .MyMap>) returnType:kotlin.Unit [fake_override] + overridden: + public abstract fun putAll (from: kotlin.collections.Map): kotlin.Unit declared in kotlin.collections.MutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap + VALUE_PARAMETER name:from index:0 type:kotlin.collections.Map.MyMap, V of .MyMap> + FUN FAKE_OVERRIDE name:remove visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap, key:K of .MyMap) returnType:V of .MyMap? [fake_override] + overridden: + public abstract fun remove (key: K of kotlin.collections.MutableMap): V of kotlin.collections.MutableMap? declared in kotlin.collections.MutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap + VALUE_PARAMETER name:key index:0 type:K of .MyMap + FUN FAKE_OVERRIDE name:remove visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap, key:K of .MyMap, value:V of .MyMap) returnType:kotlin.Boolean [fake_override] + overridden: + public open fun remove (key: K of kotlin.collections.MutableMap, value: V of kotlin.collections.MutableMap): kotlin.Boolean declared in kotlin.collections.MutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap + VALUE_PARAMETER name:key index:0 type:K of .MyMap + VALUE_PARAMETER name:value index:1 type:V of .MyMap + PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:ABSTRACT [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:ABSTRACT <> ($this:kotlin.collections.MutableMap) returnType:kotlin.collections.MutableSet.MyMap> [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:ABSTRACT [fake_override,val] + overridden: + public abstract fun (): kotlin.collections.MutableSet declared in kotlin.collections.MutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap + FUN FAKE_OVERRIDE name:values visibility:public modality:OPEN <> ($this:java.util.AbstractMap) returnType:kotlin.collections.Collection.MyMap?>? [fake_override] + overridden: + public open fun values (): kotlin.collections.Collection? declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:java.util.AbstractMap + PROPERTY FAKE_OVERRIDE name:values visibility:public modality:ABSTRACT [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:ABSTRACT <> ($this:kotlin.collections.MutableMap) returnType:kotlin.collections.MutableCollection.MyMap> [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:values visibility:public modality:ABSTRACT [fake_override,val] + overridden: + public abstract fun (): kotlin.collections.MutableCollection declared in kotlin.collections.MutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap + FUN FAKE_OVERRIDE name:containsKey visibility:public modality:OPEN <> ($this:kotlin.collections.Map, key:K of .MyMap) returnType:kotlin.Boolean [fake_override] + overridden: + public abstract fun containsKey (key: K of kotlin.collections.Map): kotlin.Boolean declared in kotlin.collections.Map + $this: VALUE_PARAMETER name: type:kotlin.collections.Map + VALUE_PARAMETER name:key index:0 type:K of .MyMap + FUN FAKE_OVERRIDE name:containsValue visibility:public modality:OPEN <> ($this:kotlin.collections.Map, value:V of .MyMap) returnType:kotlin.Boolean [fake_override] + overridden: + public abstract fun containsValue (value: V of kotlin.collections.Map): kotlin.Boolean declared in kotlin.collections.Map + $this: VALUE_PARAMETER name: type:kotlin.collections.Map + VALUE_PARAMETER name:value index:0 type:V of .MyMap + FUN FAKE_OVERRIDE name:get visibility:public modality:OPEN <> ($this:kotlin.collections.Map, key:K of .MyMap) returnType:V of .MyMap? [fake_override,operator] + overridden: + public abstract fun get (key: K of kotlin.collections.Map): V of kotlin.collections.Map? [operator] declared in kotlin.collections.Map + $this: VALUE_PARAMETER name: type:kotlin.collections.Map + VALUE_PARAMETER name:key index:0 type:K of .MyMap + FUN FAKE_OVERRIDE name:getOrDefault visibility:public modality:OPEN <> ($this:java.util.Map, p0:K of .MyMap?, p1:V of .MyMap?) returnType:V of .MyMap? [fake_override] + overridden: + public open fun getOrDefault (p0: K of java.util.Map?, p1: V of java.util.Map?): V of java.util.Map? declared in java.util.Map + $this: VALUE_PARAMETER name: type:java.util.Map + VALUE_PARAMETER name:p0 index:0 type:K of .MyMap? + VALUE_PARAMETER name:p1 index:1 type:V of .MyMap? + FUN FAKE_OVERRIDE name:isEmpty visibility:public modality:OPEN <> ($this:kotlin.collections.Map) returnType:kotlin.Boolean [fake_override] + overridden: + public abstract fun isEmpty (): kotlin.Boolean declared in kotlin.collections.Map + public open fun isEmpty (): kotlin.Boolean declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:kotlin.collections.Map + FUN FAKE_OVERRIDE name:size visibility:public modality:OPEN <> ($this:java.util.AbstractMap) returnType:kotlin.Int [fake_override] + overridden: + public open fun size (): kotlin.Int declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:java.util.AbstractMap + PROPERTY FAKE_OVERRIDE name:size visibility:public modality:ABSTRACT [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:ABSTRACT <> ($this:kotlin.collections.Map) returnType:kotlin.Int [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:size visibility:public modality:ABSTRACT [fake_override,val] + overridden: + public abstract fun (): kotlin.Int declared in kotlin.collections.Map + $this: VALUE_PARAMETER name: type:kotlin.collections.Map + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + public open fun equals (p0: kotlin.Any?): kotlin.Boolean [operator] declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + public open fun hashCode (): kotlin.Int declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + public open fun toString (): kotlin.String declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:keySet visibility:public modality:OPEN <> ($this:java.util.AbstractMap) returnType:kotlin.collections.Set.MyMap?>? [fake_override] + overridden: + public open fun keySet (): kotlin.collections.Set? declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:java.util.AbstractMap + FUN FAKE_OVERRIDE name:entrySet visibility:public modality:ABSTRACT <> ($this:java.util.AbstractMap) returnType:kotlin.collections.Set.MyMap?, V of .MyMap?>?>? [fake_override] + overridden: + public abstract fun entrySet (): kotlin.collections.Set?>? declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:java.util.AbstractMap + FUN FAKE_OVERRIDE name:clone visibility:protected/*protected and package*/ modality:OPEN <> ($this:java.util.AbstractMap) returnType:kotlin.Any? [fake_override] + overridden: + protected/*protected and package*/ open fun clone (): kotlin.Any? declared in java.util.AbstractMap + $this: VALUE_PARAMETER name: type:java.util.AbstractMap diff --git a/compiler/testData/ir/irText/firProblems/AbstractMutableMap.kt b/compiler/testData/ir/irText/firProblems/AbstractMutableMap.kt new file mode 100644 index 00000000000..5e43447d0d3 --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/AbstractMutableMap.kt @@ -0,0 +1,10 @@ +// WITH_RUNTIME +// FULL_JDK +// JVM_TARGET: 1.8 + +class MyMap : AbstractMutableMap() { + override fun put(key: K, value: V): V? = null + + override val entries: MutableSet> + get() = mutableSetOf() +} diff --git a/compiler/testData/ir/irText/firProblems/AbstractMutableMap.txt b/compiler/testData/ir/irText/firProblems/AbstractMutableMap.txt new file mode 100644 index 00000000000..adc95467a7c --- /dev/null +++ b/compiler/testData/ir/irText/firProblems/AbstractMutableMap.txt @@ -0,0 +1,170 @@ +FILE fqName: fileName:/AbstractMutableMap.kt + CLASS CLASS name:MyMap modality:FINAL visibility:public superTypes:[kotlin.collections.AbstractMutableMap.MyMap, V of .MyMap>] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.MyMap.MyMap, V of .MyMap> + TYPE_PARAMETER name:K index:0 variance: superTypes:[kotlin.Any] + TYPE_PARAMETER name:V index:1 variance: superTypes:[kotlin.Any] + CONSTRUCTOR visibility:public <> () returnType:.MyMap.MyMap, V of .MyMap> [primary] + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'protected constructor () [primary] declared in kotlin.collections.AbstractMutableMap' + : K of .MyMap + : V of .MyMap + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:MyMap modality:FINAL visibility:public superTypes:[kotlin.collections.AbstractMutableMap.MyMap, V of .MyMap>]' + FUN name:put visibility:public modality:OPEN <> ($this:.MyMap.MyMap, V of .MyMap>, key:K of .MyMap, value:V of .MyMap) returnType:V of .MyMap? + overridden: + public abstract fun put (key: K of kotlin.collections.AbstractMutableMap, value: V of kotlin.collections.AbstractMutableMap): V of kotlin.collections.AbstractMutableMap? declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:.MyMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:key index:0 type:K of .MyMap + VALUE_PARAMETER name:value index:1 type:V of .MyMap + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun put (key: K of .MyMap, value: V of .MyMap): V of .MyMap? declared in .MyMap' + CONST Null type=kotlin.Nothing? value=null + PROPERTY name:entries visibility:public modality:OPEN [val] + FUN name: visibility:public modality:OPEN <> ($this:.MyMap.MyMap, V of .MyMap>) returnType:kotlin.collections.MutableSet.MyMap, V of .MyMap>> + correspondingProperty: PROPERTY name:entries visibility:public modality:OPEN [val] + overridden: + public abstract fun (): kotlin.collections.MutableSet> [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:.MyMap.MyMap, V of .MyMap> + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun (): kotlin.collections.MutableSet.MyMap, V of .MyMap>> declared in .MyMap' + CALL 'public final fun mutableSetOf (): kotlin.collections.MutableSet [inline] declared in kotlin.collections' type=kotlin.collections.MutableSet.MyMap, V of .MyMap>> origin=null + : kotlin.collections.MutableMap.MutableEntry.MyMap, V of .MyMap> + FUN FAKE_OVERRIDE name:getOrDefault visibility:public modality:OPEN <> ($this:kotlin.collections.Map.MyMap, V of .MyMap>, key:K of .MyMap, defaultValue:V of .MyMap) returnType:V of .MyMap [fake_override] + annotations: + SinceKotlin(version = '1.1') + PlatformDependent + overridden: + public open fun getOrDefault (key: K of kotlin.collections.AbstractMutableMap, defaultValue: V of kotlin.collections.AbstractMutableMap): V of kotlin.collections.AbstractMutableMap [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.Map.MyMap, V of .MyMap> + VALUE_PARAMETER name:key index:0 type:K of .MyMap + VALUE_PARAMETER name:defaultValue index:1 type:V of .MyMap + FUN FAKE_OVERRIDE name:remove visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, key:K of .MyMap, value:V of .MyMap) returnType:kotlin.Boolean [fake_override] + annotations: + SinceKotlin(version = '1.1') + PlatformDependent + overridden: + public open fun remove (key: K of kotlin.collections.AbstractMutableMap, value: V of kotlin.collections.AbstractMutableMap): kotlin.Boolean [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:key index:0 type:K of .MyMap + VALUE_PARAMETER name:value index:1 type:V of .MyMap + FUN FAKE_OVERRIDE name:clone visibility:protected/*protected and package*/ modality:OPEN <> ($this:java.util.AbstractMap.MyMap, V of .MyMap>) returnType:@[FlexibleNullability] kotlin.Any? [fake_override] + overridden: + protected/*protected and package*/ open fun clone (): @[FlexibleNullability] kotlin.Any? [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:java.util.AbstractMap.MyMap, V of .MyMap> + FUN FAKE_OVERRIDE name:clear visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>) returnType:kotlin.Unit [fake_override] + overridden: + public open fun clear (): kotlin.Unit [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + FUN FAKE_OVERRIDE name:compute visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, p0:@[EnhancedNullability] K of .MyMap, p1:@[EnhancedNullability] java.util.function.BiFunction.MyMap, in @[EnhancedNullability] V of .MyMap?, out @[EnhancedNullability] V of .MyMap?>) returnType:@[EnhancedNullability] V of .MyMap? [fake_override] + overridden: + public open fun compute (p0: @[EnhancedNullability] K of kotlin.collections.AbstractMutableMap, p1: @[EnhancedNullability] java.util.function.BiFunction): @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap? [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:p0 index:0 type:@[EnhancedNullability] K of .MyMap + VALUE_PARAMETER name:p1 index:1 type:@[EnhancedNullability] java.util.function.BiFunction.MyMap, in @[EnhancedNullability] V of .MyMap?, out @[EnhancedNullability] V of .MyMap?> + FUN FAKE_OVERRIDE name:computeIfAbsent visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, p0:@[EnhancedNullability] K of .MyMap, p1:@[EnhancedNullability] java.util.function.Function.MyMap, out @[EnhancedNullability] V of .MyMap>) returnType:@[EnhancedNullability] V of .MyMap [fake_override] + overridden: + public open fun computeIfAbsent (p0: @[EnhancedNullability] K of kotlin.collections.AbstractMutableMap, p1: @[EnhancedNullability] java.util.function.Function): @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:p0 index:0 type:@[EnhancedNullability] K of .MyMap + VALUE_PARAMETER name:p1 index:1 type:@[EnhancedNullability] java.util.function.Function.MyMap, out @[EnhancedNullability] V of .MyMap> + FUN FAKE_OVERRIDE name:computeIfPresent visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, p0:@[EnhancedNullability] K of .MyMap, p1:@[EnhancedNullability] java.util.function.BiFunction.MyMap, in @[EnhancedNullability] V of .MyMap, out @[EnhancedNullability] V of .MyMap?>) returnType:@[EnhancedNullability] V of .MyMap? [fake_override] + overridden: + public open fun computeIfPresent (p0: @[EnhancedNullability] K of kotlin.collections.AbstractMutableMap, p1: @[EnhancedNullability] java.util.function.BiFunction): @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap? [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:p0 index:0 type:@[EnhancedNullability] K of .MyMap + VALUE_PARAMETER name:p1 index:1 type:@[EnhancedNullability] java.util.function.BiFunction.MyMap, in @[EnhancedNullability] V of .MyMap, out @[EnhancedNullability] V of .MyMap?> + FUN FAKE_OVERRIDE name:containsKey visibility:public modality:OPEN <> ($this:kotlin.collections.Map.MyMap, V of .MyMap>, key:K of .MyMap) returnType:kotlin.Boolean [fake_override] + overridden: + public open fun containsKey (key: K of kotlin.collections.AbstractMutableMap): kotlin.Boolean [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.Map.MyMap, V of .MyMap> + VALUE_PARAMETER name:key index:0 type:K of .MyMap + FUN FAKE_OVERRIDE name:containsValue visibility:public modality:OPEN <> ($this:kotlin.collections.Map.MyMap, V of .MyMap>, value:V of .MyMap) returnType:kotlin.Boolean [fake_override] + overridden: + public open fun containsValue (value: V of kotlin.collections.AbstractMutableMap): kotlin.Boolean [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.Map.MyMap, V of .MyMap> + VALUE_PARAMETER name:value index:0 type:V of .MyMap + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:forEach visibility:public modality:OPEN <> ($this:kotlin.collections.Map.MyMap, V of .MyMap>, p0:@[EnhancedNullability] java.util.function.BiConsumer.MyMap, in @[EnhancedNullability] V of .MyMap>) returnType:kotlin.Unit [fake_override] + overridden: + public open fun forEach (p0: @[EnhancedNullability] java.util.function.BiConsumer): kotlin.Unit [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.Map.MyMap, V of .MyMap> + VALUE_PARAMETER name:p0 index:0 type:@[EnhancedNullability] java.util.function.BiConsumer.MyMap, in @[EnhancedNullability] V of .MyMap> + FUN FAKE_OVERRIDE name:get visibility:public modality:OPEN <> ($this:kotlin.collections.Map.MyMap, V of .MyMap>, key:K of .MyMap) returnType:V of .MyMap? [fake_override,operator] + overridden: + public open fun get (key: K of kotlin.collections.AbstractMutableMap): V of kotlin.collections.AbstractMutableMap? [fake_override,operator] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.Map.MyMap, V of .MyMap> + VALUE_PARAMETER name:key index:0 type:K of .MyMap + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:isEmpty visibility:public modality:OPEN <> ($this:kotlin.collections.Map.MyMap, V of .MyMap>) returnType:kotlin.Boolean [fake_override] + overridden: + public open fun isEmpty (): kotlin.Boolean [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.Map.MyMap, V of .MyMap> + FUN FAKE_OVERRIDE name:merge visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, p0:@[EnhancedNullability] K of .MyMap, p1:@[EnhancedNullability] V of .MyMap, p2:@[EnhancedNullability] java.util.function.BiFunction.MyMap, in @[EnhancedNullability] V of .MyMap, out @[EnhancedNullability] V of .MyMap?>) returnType:@[EnhancedNullability] V of .MyMap? [fake_override] + overridden: + public open fun merge (p0: @[EnhancedNullability] K of kotlin.collections.AbstractMutableMap, p1: @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap, p2: @[EnhancedNullability] java.util.function.BiFunction): @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap? [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:p0 index:0 type:@[EnhancedNullability] K of .MyMap + VALUE_PARAMETER name:p1 index:1 type:@[EnhancedNullability] V of .MyMap + VALUE_PARAMETER name:p2 index:2 type:@[EnhancedNullability] java.util.function.BiFunction.MyMap, in @[EnhancedNullability] V of .MyMap, out @[EnhancedNullability] V of .MyMap?> + FUN FAKE_OVERRIDE name:putAll visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, from:kotlin.collections.Map.MyMap, V of .MyMap>) returnType:kotlin.Unit [fake_override] + overridden: + public open fun putAll (from: kotlin.collections.Map): kotlin.Unit [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:from index:0 type:kotlin.collections.Map.MyMap, V of .MyMap> + FUN FAKE_OVERRIDE name:putIfAbsent visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, p0:@[EnhancedNullability] K of .MyMap, p1:@[EnhancedNullability] V of .MyMap) returnType:@[EnhancedNullability] V of .MyMap? [fake_override] + overridden: + public open fun putIfAbsent (p0: @[EnhancedNullability] K of kotlin.collections.AbstractMutableMap, p1: @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap): @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap? [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:p0 index:0 type:@[EnhancedNullability] K of .MyMap + VALUE_PARAMETER name:p1 index:1 type:@[EnhancedNullability] V of .MyMap + FUN FAKE_OVERRIDE name:remove visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, key:K of .MyMap) returnType:V of .MyMap? [fake_override] + overridden: + public open fun remove (key: K of kotlin.collections.AbstractMutableMap): V of kotlin.collections.AbstractMutableMap? [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:key index:0 type:K of .MyMap + FUN FAKE_OVERRIDE name:replace visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, p0:@[EnhancedNullability] K of .MyMap, p1:@[EnhancedNullability] V of .MyMap) returnType:@[EnhancedNullability] V of .MyMap? [fake_override] + overridden: + public open fun replace (p0: @[EnhancedNullability] K of kotlin.collections.AbstractMutableMap, p1: @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap): @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap? [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:p0 index:0 type:@[EnhancedNullability] K of .MyMap + VALUE_PARAMETER name:p1 index:1 type:@[EnhancedNullability] V of .MyMap + FUN FAKE_OVERRIDE name:replace visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, p0:@[EnhancedNullability] K of .MyMap, p1:@[EnhancedNullability] V of .MyMap, p2:@[EnhancedNullability] V of .MyMap) returnType:kotlin.Boolean [fake_override] + overridden: + public open fun replace (p0: @[EnhancedNullability] K of kotlin.collections.AbstractMutableMap, p1: @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap, p2: @[EnhancedNullability] V of kotlin.collections.AbstractMutableMap): kotlin.Boolean [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:p0 index:0 type:@[EnhancedNullability] K of .MyMap + VALUE_PARAMETER name:p1 index:1 type:@[EnhancedNullability] V of .MyMap + VALUE_PARAMETER name:p2 index:2 type:@[EnhancedNullability] V of .MyMap + FUN FAKE_OVERRIDE name:replaceAll visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>, p0:@[EnhancedNullability] java.util.function.BiFunction.MyMap, in @[EnhancedNullability] V of .MyMap, out @[EnhancedNullability] V of .MyMap>) returnType:kotlin.Unit [fake_override] + overridden: + public open fun replaceAll (p0: @[EnhancedNullability] java.util.function.BiFunction): kotlin.Unit [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + VALUE_PARAMETER name:p0 index:0 type:@[EnhancedNullability] java.util.function.BiFunction.MyMap, in @[EnhancedNullability] V of .MyMap, out @[EnhancedNullability] V of .MyMap> + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.Any + PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>) returnType:kotlin.collections.MutableSet.MyMap> [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val] + overridden: + public open fun (): kotlin.collections.MutableSet [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> + PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:OPEN <> ($this:kotlin.collections.Map.MyMap, V of .MyMap>) returnType:kotlin.Int [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val] + overridden: + public open fun (): kotlin.Int [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.Map.MyMap, V of .MyMap> + PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val] + FUN FAKE_OVERRIDE name: visibility:public modality:OPEN <> ($this:kotlin.collections.MutableMap.MyMap, V of .MyMap>) returnType:kotlin.collections.MutableCollection.MyMap> [fake_override] + correspondingProperty: PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val] + overridden: + public open fun (): kotlin.collections.MutableCollection [fake_override] declared in kotlin.collections.AbstractMutableMap + $this: VALUE_PARAMETER name: type:kotlin.collections.MutableMap.MyMap, V of .MyMap> diff --git a/compiler/testData/ir/irText/firProblems/ClashResolutionDescriptor.fir.txt b/compiler/testData/ir/irText/firProblems/ClashResolutionDescriptor.fir.txt index 328c47db91e..25a0cb0dd7c 100644 --- a/compiler/testData/ir/irText/firProblems/ClashResolutionDescriptor.fir.txt +++ b/compiler/testData/ir/irText/firProblems/ClashResolutionDescriptor.fir.txt @@ -152,7 +152,7 @@ FILE fqName: fileName:/ClashResolutionDescriptor.kt BLOCK type=kotlin.collections.Collection<.ComponentDescriptor> origin=ELVIS VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:kotlin.collections.Collection<.ComponentDescriptor>? [val] TYPE_OP type=kotlin.collections.Collection<.ComponentDescriptor>? origin=SAFE_CAST typeOperand=kotlin.collections.Collection<.ComponentDescriptor> - CALL 'public open fun get (p0: kotlin.Any?): V of java.util.HashMap? [operator] declared in java.util.HashMap' type=kotlin.Any? origin=null + CALL 'public open fun get (p0: K of java.util.HashMap?): V of java.util.HashMap? [operator] declared in java.util.HashMap' type=kotlin.Any? origin=null $this: CALL 'private final fun (): java.util.HashMap declared in ' type=java.util.HashMap origin=GET_PROPERTY p0: CALL 'public final fun (): java.lang.Class.PlatformExtensionsClashResolver> declared in .PlatformExtensionsClashResolver' type=java.lang.Class.PlatformSpecificExtension.PlatformSpecificExtension.PlatformSpecificExtension.PlatformSpecificExtension.PlatformSpecificExtension>>>>> origin=GET_PROPERTY $this: GET_VAR 'val resolver: .PlatformExtensionsClashResolver<*> [val] declared in .resolveClashesIfAny' type=.PlatformExtensionsClashResolver<*> origin=null diff --git a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java index e38d00690ea..c223eaa5e5a 100644 --- a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java @@ -1722,6 +1722,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase { KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); } + @TestMetadata("AbstractMutableMap.kt") + public void testAbstractMutableMap() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/AbstractMutableMap.kt"); + } + @TestMetadata("AllCandidates.kt") public void testAllCandidates() throws Exception { runTest("compiler/testData/ir/irText/firProblems/AllCandidates.kt");