[FIR] Enhance getter overrides based on overridden properties

The following tests are failing with exceptions and will be fixed in the
following commits

j+k/testKjkPropertyAndExtensionProperty.kt
j+k/testKjkImplicitReturnType.kt

#KT-62118 Fixed
This commit is contained in:
Kirill Rakhman
2024-02-28 10:41:14 +01:00
committed by Space Team
parent 885ba11d97
commit 973e337bf5
42 changed files with 1140 additions and 1008 deletions
@@ -203,24 +203,24 @@ FILE fqName:<root> fileName:/1.kt
$this: VALUE_PARAMETER name:<this> type:java.util.AbstractMap<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.Int?>
PROPERTY FAKE_OVERRIDE name:entries visibility:public modality:OPEN [fake_override,val]
overridden:
public open entries: @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableSet<@[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] K of java.util.HashMap?, @[FlexibleNullability] V of java.util.HashMap?>?>?
public open entries: @[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] kotlin.collections.MutableMap.MutableEntry<@[EnhancedNullability] K of java.util.HashMap, @[EnhancedNullability] V of java.util.HashMap>>
public abstract entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] K of java.util.SequencedMap?, @[FlexibleNullability] V of java.util.SequencedMap?>>
FUN FAKE_OVERRIDE name:<get-entries> visibility:public modality:OPEN <> ($this:java.util.SequencedMap<kotlin.Int, kotlin.Int>) returnType:kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.Int?>> [fake_override]
FUN FAKE_OVERRIDE name:<get-entries> visibility:public modality:OPEN <> ($this:java.util.HashMap<kotlin.Int, kotlin.Int>) returnType:@[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] kotlin.collections.MutableMap.MutableEntry<@[EnhancedNullability] kotlin.Int, @[EnhancedNullability] kotlin.Int>> [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:entries visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-entries> (): @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableSet<@[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] K of java.util.HashMap?, @[FlexibleNullability] V of java.util.HashMap?>?>? declared in java.util.HashMap
public open fun <get-entries> (): @[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] kotlin.collections.MutableMap.MutableEntry<@[EnhancedNullability] K of java.util.HashMap, @[EnhancedNullability] V of java.util.HashMap>> declared in java.util.HashMap
public abstract fun <get-entries> (): kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] K of java.util.SequencedMap?, @[FlexibleNullability] V of java.util.SequencedMap?>> declared in java.util.SequencedMap
$this: VALUE_PARAMETER name:<this> type:java.util.SequencedMap<kotlin.Int, kotlin.Int>
$this: VALUE_PARAMETER name:<this> type:java.util.HashMap<kotlin.Int, kotlin.Int>
PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val]
overridden:
public open keys: @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableSet<@[FlexibleNullability] K of java.util.HashMap?>?
public open keys: @[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] K of java.util.HashMap>
public abstract keys: kotlin.collections.MutableSet<@[FlexibleNullability] K of java.util.SequencedMap?>
FUN FAKE_OVERRIDE name:<get-keys> visibility:public modality:OPEN <> ($this:java.util.SequencedMap<kotlin.Int, kotlin.Int>) returnType:kotlin.collections.MutableSet<@[FlexibleNullability] kotlin.Int?> [fake_override]
FUN FAKE_OVERRIDE name:<get-keys> visibility:public modality:OPEN <> ($this:java.util.HashMap<kotlin.Int, kotlin.Int>) returnType:@[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] kotlin.Int> [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-keys> (): @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableSet<@[FlexibleNullability] K of java.util.HashMap?>? declared in java.util.HashMap
public open fun <get-keys> (): @[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] K of java.util.HashMap> declared in java.util.HashMap
public abstract fun <get-keys> (): kotlin.collections.MutableSet<@[FlexibleNullability] K of java.util.SequencedMap?> declared in java.util.SequencedMap
$this: VALUE_PARAMETER name:<this> type:java.util.SequencedMap<kotlin.Int, kotlin.Int>
$this: VALUE_PARAMETER name:<this> type:java.util.HashMap<kotlin.Int, kotlin.Int>
PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val]
overridden:
public open size: kotlin.Int
@@ -233,14 +233,14 @@ FILE fqName:<root> fileName:/1.kt
$this: VALUE_PARAMETER name:<this> type:java.util.HashMap<kotlin.Int, kotlin.Int>
PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val]
overridden:
public open values: @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableCollection<@[FlexibleNullability] V of java.util.HashMap?>?
public open values: @[EnhancedNullability] kotlin.collections.MutableCollection<@[EnhancedNullability] V of java.util.HashMap>
public abstract values: kotlin.collections.MutableCollection<@[FlexibleNullability] V of java.util.SequencedMap?>
FUN FAKE_OVERRIDE name:<get-values> visibility:public modality:OPEN <> ($this:java.util.SequencedMap<kotlin.Int, kotlin.Int>) returnType:kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.Int?> [fake_override]
FUN FAKE_OVERRIDE name:<get-values> visibility:public modality:OPEN <> ($this:java.util.HashMap<kotlin.Int, kotlin.Int>) returnType:@[EnhancedNullability] kotlin.collections.MutableCollection<@[EnhancedNullability] kotlin.Int> [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-values> (): @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableCollection<@[FlexibleNullability] V of java.util.HashMap?>? declared in java.util.HashMap
public open fun <get-values> (): @[EnhancedNullability] kotlin.collections.MutableCollection<@[EnhancedNullability] V of java.util.HashMap> declared in java.util.HashMap
public abstract fun <get-values> (): kotlin.collections.MutableCollection<@[FlexibleNullability] V of java.util.SequencedMap?> declared in java.util.SequencedMap
$this: VALUE_PARAMETER name:<this> type:java.util.SequencedMap<kotlin.Int, kotlin.Int>
$this: VALUE_PARAMETER name:<this> type:java.util.HashMap<kotlin.Int, kotlin.Int>
CLASS CLASS name:B modality:FINAL visibility:public superTypes:[java.util.HashMap<kotlin.Int, kotlin.Int>; java.util.SequencedMap<kotlin.Int, kotlin.Int>]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.B
CONSTRUCTOR visibility:public <> () returnType:<root>.B [primary]
@@ -450,24 +450,24 @@ FILE fqName:<root> fileName:/1.kt
arg0: CONST Null type=kotlin.Nothing? value=null
PROPERTY FAKE_OVERRIDE name:entries visibility:public modality:OPEN [fake_override,val]
overridden:
public open entries: @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableSet<@[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] K of java.util.HashMap?, @[FlexibleNullability] V of java.util.HashMap?>?>?
public open entries: @[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] kotlin.collections.MutableMap.MutableEntry<@[EnhancedNullability] K of java.util.HashMap, @[EnhancedNullability] V of java.util.HashMap>>
public abstract entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] K of java.util.SequencedMap?, @[FlexibleNullability] V of java.util.SequencedMap?>>
FUN FAKE_OVERRIDE name:<get-entries> visibility:public modality:OPEN <> ($this:java.util.SequencedMap<kotlin.Int, kotlin.Int>) returnType:kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] kotlin.Int?, @[FlexibleNullability] kotlin.Int?>> [fake_override]
FUN FAKE_OVERRIDE name:<get-entries> visibility:public modality:OPEN <> ($this:java.util.HashMap<kotlin.Int, kotlin.Int>) returnType:@[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] kotlin.collections.MutableMap.MutableEntry<@[EnhancedNullability] kotlin.Int, @[EnhancedNullability] kotlin.Int>> [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:entries visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-entries> (): @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableSet<@[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] K of java.util.HashMap?, @[FlexibleNullability] V of java.util.HashMap?>?>? declared in java.util.HashMap
public open fun <get-entries> (): @[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] kotlin.collections.MutableMap.MutableEntry<@[EnhancedNullability] K of java.util.HashMap, @[EnhancedNullability] V of java.util.HashMap>> declared in java.util.HashMap
public abstract fun <get-entries> (): kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<@[FlexibleNullability] K of java.util.SequencedMap?, @[FlexibleNullability] V of java.util.SequencedMap?>> declared in java.util.SequencedMap
$this: VALUE_PARAMETER name:<this> type:java.util.SequencedMap<kotlin.Int, kotlin.Int>
$this: VALUE_PARAMETER name:<this> type:java.util.HashMap<kotlin.Int, kotlin.Int>
PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val]
overridden:
public open keys: @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableSet<@[FlexibleNullability] K of java.util.HashMap?>?
public open keys: @[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] K of java.util.HashMap>
public abstract keys: kotlin.collections.MutableSet<@[FlexibleNullability] K of java.util.SequencedMap?>
FUN FAKE_OVERRIDE name:<get-keys> visibility:public modality:OPEN <> ($this:java.util.SequencedMap<kotlin.Int, kotlin.Int>) returnType:kotlin.collections.MutableSet<@[FlexibleNullability] kotlin.Int?> [fake_override]
FUN FAKE_OVERRIDE name:<get-keys> visibility:public modality:OPEN <> ($this:java.util.HashMap<kotlin.Int, kotlin.Int>) returnType:@[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] kotlin.Int> [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:keys visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-keys> (): @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableSet<@[FlexibleNullability] K of java.util.HashMap?>? declared in java.util.HashMap
public open fun <get-keys> (): @[EnhancedNullability] kotlin.collections.MutableSet<@[EnhancedNullability] K of java.util.HashMap> declared in java.util.HashMap
public abstract fun <get-keys> (): kotlin.collections.MutableSet<@[FlexibleNullability] K of java.util.SequencedMap?> declared in java.util.SequencedMap
$this: VALUE_PARAMETER name:<this> type:java.util.SequencedMap<kotlin.Int, kotlin.Int>
$this: VALUE_PARAMETER name:<this> type:java.util.HashMap<kotlin.Int, kotlin.Int>
PROPERTY FAKE_OVERRIDE name:size visibility:public modality:OPEN [fake_override,val]
overridden:
public open size: kotlin.Int
@@ -480,14 +480,14 @@ FILE fqName:<root> fileName:/1.kt
$this: VALUE_PARAMETER name:<this> type:java.util.HashMap<kotlin.Int, kotlin.Int>
PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val]
overridden:
public open values: @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableCollection<@[FlexibleNullability] V of java.util.HashMap?>?
public open values: @[EnhancedNullability] kotlin.collections.MutableCollection<@[EnhancedNullability] V of java.util.HashMap>
public abstract values: kotlin.collections.MutableCollection<@[FlexibleNullability] V of java.util.SequencedMap?>
FUN FAKE_OVERRIDE name:<get-values> visibility:public modality:OPEN <> ($this:java.util.SequencedMap<kotlin.Int, kotlin.Int>) returnType:kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.Int?> [fake_override]
FUN FAKE_OVERRIDE name:<get-values> visibility:public modality:OPEN <> ($this:java.util.HashMap<kotlin.Int, kotlin.Int>) returnType:@[EnhancedNullability] kotlin.collections.MutableCollection<@[EnhancedNullability] kotlin.Int> [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:values visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-values> (): @[FlexibleNullability] @[FlexibleMutability] kotlin.collections.MutableCollection<@[FlexibleNullability] V of java.util.HashMap?>? declared in java.util.HashMap
public open fun <get-values> (): @[EnhancedNullability] kotlin.collections.MutableCollection<@[EnhancedNullability] V of java.util.HashMap> declared in java.util.HashMap
public abstract fun <get-values> (): kotlin.collections.MutableCollection<@[FlexibleNullability] V of java.util.SequencedMap?> declared in java.util.SequencedMap
$this: VALUE_PARAMETER name:<this> type:java.util.SequencedMap<kotlin.Int, kotlin.Int>
$this: VALUE_PARAMETER name:<this> type:java.util.HashMap<kotlin.Int, kotlin.Int>
FUN name:test visibility:public modality:FINAL <> (a:<root>.A, b:<root>.B) returnType:kotlin.Unit
VALUE_PARAMETER name:a index:0 type:<root>.A
VALUE_PARAMETER name:b index:1 type:<root>.B
@@ -210,23 +210,23 @@ abstract class A : HashMap<Int, Int>, SequencedMap<Int, Int> {
// Mangled name: A{}entries
// Public signature: /A.entries|-586096469347622282[0]
// Public signature debug description: {}entries
/* fake */ override val entries: MutableSet<MutableEntry<Int?, Int?>>
/* fake */ override val entries: @EnhancedNullability MutableSet<@EnhancedNullability MutableEntry<@EnhancedNullability Int, @EnhancedNullability Int>>
// CHECK JVM_IR:
// Mangled name: A#<get-entries>(){}kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.Int?,kotlin.Int?>>
// Public signature: /A.entries.<get-entries>|1692716713642529615[0]
// Public signature debug description: <get-entries>(){}kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.Int?,kotlin.Int?>>
/* fake */ override get(): MutableSet<MutableEntry<Int?, Int?>>
// Mangled name: A#<get-entries>(){}kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.Int{EnhancedNullability},kotlin.Int{EnhancedNullability}>{EnhancedNullability}>{EnhancedNullability}
// Public signature: /A.entries.<get-entries>|-6784228018896218890[0]
// Public signature debug description: <get-entries>(){}kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.Int{EnhancedNullability},kotlin.Int{EnhancedNullability}>{EnhancedNullability}>{EnhancedNullability}
/* fake */ override get(): @EnhancedNullability MutableSet<@EnhancedNullability MutableEntry<@EnhancedNullability Int, @EnhancedNullability Int>>
// CHECK:
// Mangled name: A{}keys
// Public signature: /A.keys|-1539062068328255324[0]
// Public signature debug description: {}keys
/* fake */ override val keys: MutableSet<Int?>
/* fake */ override val keys: @EnhancedNullability MutableSet<@EnhancedNullability Int>
// CHECK JVM_IR:
// Mangled name: A#<get-keys>(){}kotlin.collections.MutableSet<kotlin.Int?>
// Public signature: /A.keys.<get-keys>|198765053730638131[0]
// Public signature debug description: <get-keys>(){}kotlin.collections.MutableSet<kotlin.Int?>
/* fake */ override get(): MutableSet<Int?>
// Mangled name: A#<get-keys>(){}kotlin.collections.MutableSet<kotlin.Int{EnhancedNullability}>{EnhancedNullability}
// Public signature: /A.keys.<get-keys>|-3100522392016272266[0]
// Public signature debug description: <get-keys>(){}kotlin.collections.MutableSet<kotlin.Int{EnhancedNullability}>{EnhancedNullability}
/* fake */ override get(): @EnhancedNullability MutableSet<@EnhancedNullability Int>
// CHECK:
// Mangled name: A{}size
@@ -243,12 +243,12 @@ abstract class A : HashMap<Int, Int>, SequencedMap<Int, Int> {
// Mangled name: A{}values
// Public signature: /A.values|-764749005844117249[0]
// Public signature debug description: {}values
/* fake */ override val values: MutableCollection<Int?>
/* fake */ override val values: @EnhancedNullability MutableCollection<@EnhancedNullability Int>
// CHECK JVM_IR:
// Mangled name: A#<get-values>(){}kotlin.collections.MutableCollection<kotlin.Int?>
// Public signature: /A.values.<get-values>|6778780144264802127[0]
// Public signature debug description: <get-values>(){}kotlin.collections.MutableCollection<kotlin.Int?>
/* fake */ override get(): MutableCollection<Int?>
// Mangled name: A#<get-values>(){}kotlin.collections.MutableCollection<kotlin.Int{EnhancedNullability}>{EnhancedNullability}
// Public signature: /A.values.<get-values>|301862012344866451[0]
// Public signature debug description: <get-values>(){}kotlin.collections.MutableCollection<kotlin.Int{EnhancedNullability}>{EnhancedNullability}
/* fake */ override get(): @EnhancedNullability MutableCollection<@EnhancedNullability Int>
}
@@ -464,23 +464,23 @@ class B : HashMap<Int, Int>, SequencedMap<Int, Int> {
// Mangled name: B{}entries
// Public signature: /B.entries|-586096469347622282[0]
// Public signature debug description: {}entries
/* fake */ override val entries: MutableSet<MutableEntry<Int?, Int?>>
/* fake */ override val entries: @EnhancedNullability MutableSet<@EnhancedNullability MutableEntry<@EnhancedNullability Int, @EnhancedNullability Int>>
// CHECK JVM_IR:
// Mangled name: B#<get-entries>(){}kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.Int?,kotlin.Int?>>
// Public signature: /B.entries.<get-entries>|1692716713642529615[0]
// Public signature debug description: <get-entries>(){}kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.Int?,kotlin.Int?>>
/* fake */ override get(): MutableSet<MutableEntry<Int?, Int?>>
// Mangled name: B#<get-entries>(){}kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.Int{EnhancedNullability},kotlin.Int{EnhancedNullability}>{EnhancedNullability}>{EnhancedNullability}
// Public signature: /B.entries.<get-entries>|-6784228018896218890[0]
// Public signature debug description: <get-entries>(){}kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<kotlin.Int{EnhancedNullability},kotlin.Int{EnhancedNullability}>{EnhancedNullability}>{EnhancedNullability}
/* fake */ override get(): @EnhancedNullability MutableSet<@EnhancedNullability MutableEntry<@EnhancedNullability Int, @EnhancedNullability Int>>
// CHECK:
// Mangled name: B{}keys
// Public signature: /B.keys|-1539062068328255324[0]
// Public signature debug description: {}keys
/* fake */ override val keys: MutableSet<Int?>
/* fake */ override val keys: @EnhancedNullability MutableSet<@EnhancedNullability Int>
// CHECK JVM_IR:
// Mangled name: B#<get-keys>(){}kotlin.collections.MutableSet<kotlin.Int?>
// Public signature: /B.keys.<get-keys>|198765053730638131[0]
// Public signature debug description: <get-keys>(){}kotlin.collections.MutableSet<kotlin.Int?>
/* fake */ override get(): MutableSet<Int?>
// Mangled name: B#<get-keys>(){}kotlin.collections.MutableSet<kotlin.Int{EnhancedNullability}>{EnhancedNullability}
// Public signature: /B.keys.<get-keys>|-3100522392016272266[0]
// Public signature debug description: <get-keys>(){}kotlin.collections.MutableSet<kotlin.Int{EnhancedNullability}>{EnhancedNullability}
/* fake */ override get(): @EnhancedNullability MutableSet<@EnhancedNullability Int>
// CHECK:
// Mangled name: B{}size
@@ -497,12 +497,12 @@ class B : HashMap<Int, Int>, SequencedMap<Int, Int> {
// Mangled name: B{}values
// Public signature: /B.values|-764749005844117249[0]
// Public signature debug description: {}values
/* fake */ override val values: MutableCollection<Int?>
/* fake */ override val values: @EnhancedNullability MutableCollection<@EnhancedNullability Int>
// CHECK JVM_IR:
// Mangled name: B#<get-values>(){}kotlin.collections.MutableCollection<kotlin.Int?>
// Public signature: /B.values.<get-values>|6778780144264802127[0]
// Public signature debug description: <get-values>(){}kotlin.collections.MutableCollection<kotlin.Int?>
/* fake */ override get(): MutableCollection<Int?>
// Mangled name: B#<get-values>(){}kotlin.collections.MutableCollection<kotlin.Int{EnhancedNullability}>{EnhancedNullability}
// Public signature: /B.values.<get-values>|301862012344866451[0]
// Public signature debug description: <get-values>(){}kotlin.collections.MutableCollection<kotlin.Int{EnhancedNullability}>{EnhancedNullability}
/* fake */ override get(): @EnhancedNullability MutableCollection<@EnhancedNullability Int>
}
@@ -511,3 +511,4 @@ class B : HashMap<Int, Int>, SequencedMap<Int, Int> {
// Public signature: /test|-2533013708701322011[0]
// Public signature debug description: test(A;B){}
fun test(a: A, b: B): Unit