[FIR2IR] Remove non-existent accessors from property references on Java fields

Rename `MissingFieldInJavaClass` to `FieldsFromJavaClass` to correspond its content

^KT-65722 Fixed

Merge-request: KT-MR-14837
This commit is contained in:
Ivan Kochurkin
2024-03-08 10:10:05 +00:00
committed by Space Team
parent 2d4f4b9bb5
commit ea44d4defd
25 changed files with 194 additions and 107 deletions
@@ -1,6 +1,6 @@
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:J modality:OPEN visibility:public/*package*/ superTypes:[kotlin.Any]
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:J modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.J
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public/*package*/ <> () returnType:<root>.J [primary]
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public <> () returnType:<root>.J [primary]
FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f type:kotlin.Int visibility:public
FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f2 type:kotlin.Int visibility:public
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
@@ -1,6 +1,6 @@
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:J modality:OPEN visibility:public/*package*/ superTypes:[kotlin.Any]
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:J modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER IR_EXTERNAL_JAVA_DECLARATION_STUB name:<this> type:<root>.J
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public/*package*/ <> () returnType:<root>.J [primary]
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public <> () returnType:<root>.J [primary]
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
@@ -1,7 +1,7 @@
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:J1 modality:OPEN visibility:public/*package*/ superTypes:[kotlin.Any]
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:J1 modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.J1<T of <root>.J1>
TYPE_PARAMETER name:T index:0 variance: superTypes:[@[FlexibleNullability] kotlin.Any?] reified:false
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public/*package*/ <> () returnType:<root>.J1<T of <root>.J1> [primary]
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public <> () returnType:<root>.J1<T of <root>.J1> [primary]
FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f type:@[FlexibleNullability] T of <root>.J1? visibility:public
FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f2 type:@[FlexibleNullability] T of <root>.J1? visibility:public
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
@@ -1,7 +1,7 @@
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:J1 modality:OPEN visibility:public/*package*/ superTypes:[kotlin.Any]
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:J1 modality:OPEN visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER IR_EXTERNAL_JAVA_DECLARATION_STUB name:<this> type:<root>.J1<T of <root>.J1>
TYPE_PARAMETER IR_EXTERNAL_DECLARATION_STUB name:T index:0 variance: superTypes:[@[FlexibleNullability] kotlin.Any?] reified:false
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public/*package*/ <> () returnType:<root>.J1<T of <root>.J1> [primary]
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public <> () returnType:<root>.J1<T of <root>.J1> [primary]
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
@@ -1,6 +1,6 @@
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:X modality:OPEN visibility:public/*package*/ superTypes:[<root>.J]
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:X modality:OPEN visibility:public superTypes:[<root>.J]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.X
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public/*package*/ <> () returnType:<root>.X [primary]
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public <> () returnType:<root>.X [primary]
FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f2 type:kotlin.Int visibility:public
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
@@ -1,6 +1,6 @@
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:X modality:OPEN visibility:public/*package*/ superTypes:[<root>.J]
CLASS IR_EXTERNAL_JAVA_DECLARATION_STUB CLASS name:X modality:OPEN visibility:public superTypes:[<root>.J]
$this: VALUE_PARAMETER IR_EXTERNAL_JAVA_DECLARATION_STUB name:<this> type:<root>.X
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public/*package*/ <> () returnType:<root>.X [primary]
CONSTRUCTOR IR_EXTERNAL_JAVA_DECLARATION_STUB visibility:public <> () returnType:<root>.X [primary]
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 <root>.J
@@ -0,0 +1,24 @@
FILE fqName:<root> fileName:/Main.kt
FUN name:f visibility:public modality:FINAL <> (j:<root>.J, x:<root>.X, j1:<root>.J1<kotlin.String>) returnType:kotlin.Unit
VALUE_PARAMETER name:j index:0 type:<root>.J
VALUE_PARAMETER name:x index:1 type:<root>.X
VALUE_PARAMETER name:j1 index:2 type:<root>.J1<kotlin.String>
BLOCK_BODY
VAR name:jf type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public open f: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f type:kotlin.Int visibility:public' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
$this: GET_VAR 'j: <root>.J declared in <root>.f' type=<root>.J origin=null
VAR name:js type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public open s: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:s type:kotlin.Int visibility:public [static]' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
VAR name:xf type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public open f: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f type:kotlin.Int visibility:public' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
$this: GET_VAR 'x: <root>.X declared in <root>.f' type=<root>.X origin=null
VAR name:xs type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public open s: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:s type:kotlin.Int visibility:public [static]' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
VAR name:xf2 type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public open f2: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f2 type:kotlin.Int visibility:public' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
$this: GET_VAR 'x: <root>.X declared in <root>.f' type=<root>.X origin=null
VAR name:xs2 type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public open s2: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:s2 type:kotlin.Int visibility:public [static]' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
VAR name:j1f type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> [val]
PROPERTY_REFERENCE 'public open f: @[FlexibleNullability] T of <root>.J1?' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f type:@[FlexibleNullability] T of <root>.J1? visibility:public' getter=null setter=null type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
$this: GET_VAR 'j1: <root>.J1<kotlin.String> declared in <root>.f' type=<root>.J1<kotlin.String> origin=null
@@ -0,0 +1,10 @@
fun f(j: J, x: X, j1: J1<String>) {
val jf: KMutableProperty0<Int> = j::f
val js: KMutableProperty0<Int> = J::s
val xf: KMutableProperty0<Int> = x::f
val xs: KMutableProperty0<Int> = X::s
val xf2: KMutableProperty0<Int> = x::f2
val xs2: KMutableProperty0<Int> = X::s2
val j1f: KMutableProperty0<@FlexibleNullability String?> = j1::f
}
@@ -0,0 +1,24 @@
FILE fqName:<root> fileName:/Main.kt
FUN name:f visibility:public modality:FINAL <> (j:<root>.J, x:<root>.X, j1:<root>.J1<kotlin.String>) returnType:kotlin.Unit
VALUE_PARAMETER name:j index:0 type:<root>.J
VALUE_PARAMETER name:x index:1 type:<root>.X
VALUE_PARAMETER name:j1 index:2 type:<root>.J1<kotlin.String>
BLOCK_BODY
VAR name:jf type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public final f: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f type:kotlin.Int visibility:public' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
$this: GET_VAR 'j: <root>.J declared in <root>.f' type=<root>.J origin=null
VAR name:js type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public final s: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:s type:kotlin.Int visibility:public [static]' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
VAR name:xf type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public final f: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f type:kotlin.Int visibility:public' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
$this: GET_VAR 'x: <root>.X declared in <root>.f' type=<root>.X origin=null
VAR name:xs type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public final s: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:s type:kotlin.Int visibility:public [static]' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
VAR name:xf2 type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public final f2: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f2 type:kotlin.Int visibility:public' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
$this: GET_VAR 'x: <root>.X declared in <root>.f' type=<root>.X origin=null
VAR name:xs2 type:kotlin.reflect.KMutableProperty0<kotlin.Int> [val]
PROPERTY_REFERENCE 'public final s2: kotlin.Int' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:s2 type:kotlin.Int visibility:public [static]' getter=null setter=null type=kotlin.reflect.KMutableProperty0<kotlin.Int> origin=null
VAR name:j1f type:kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> [val]
PROPERTY_REFERENCE 'public final f: @[FlexibleNullability] T of <root>.J1?' field='FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:f type:@[FlexibleNullability] T of <root>.J1? visibility:public' getter=null setter=null type=kotlin.reflect.KMutableProperty0<@[FlexibleNullability] kotlin.String?> origin=null
$this: GET_VAR 'j1: <root>.J1<kotlin.String> declared in <root>.f' type=<root>.J1<kotlin.String> origin=null
@@ -1,14 +1,14 @@
// FIR_IDENTICAL
// TARGET_BACKEND: JVM
// ISSUE: KT-61362
// ISSUE: KT-61362, KT-65722
// DUMP_EXTERNAL_CLASS: J
// DUMP_EXTERNAL_CLASS: X
// DUMP_EXTERNAL_CLASS: J1
// DUMP_EXTERNAL_CLASS: X1
// DUMP_IR
// FILE: J.java
class J {
public class J {
public int f = 0;
public static int s = 0;
@@ -18,14 +18,14 @@ class J {
// FILE: X.java
class X extends J {
public class X extends J {
public int f2 = 1;
public static int s2 = 1;
}
// FILE: J1.java
class J1<T> {
public class J1<T> {
public T f = null;
public static T s = null;
@@ -38,4 +38,16 @@ class J1<T> {
class X1<T> extends J1<String> {
public String f2 = "s1";
public static String s2 = "s2";
}
// FILE: Main.kt
fun f(j: J, x: X, j1: J1<String>) {
val jf = j::f
val js = J::s
val xf = x::f
val xs = X::s
val xf2 = x::f2
val xs2 = X::s2
val j1f = j1::f
}
@@ -0,0 +1,10 @@
fun f(j: J, x: X, j1: J1<String>) {
val jf: KMutableProperty0<Int> = j::f
val js: KMutableProperty0<Int> = J::s
val xf: KMutableProperty0<Int> = x::f
val xs: KMutableProperty0<Int> = X::s
val xf2: KMutableProperty0<Int> = x::f2
val xs2: KMutableProperty0<Int> = X::s2
val j1f: KMutableProperty0<@FlexibleNullability String?> = j1::f
}
@@ -0,0 +1,6 @@
// CHECK:
// Mangled name: #f(J;X;J1<kotlin.String>){}
// Public signature: /f|-2688577840123949128[0]
// Public signature debug description: f(J;X;J1<kotlin.String>){}
fun f(j: J, x: X, j1: J1<String>): Unit
@@ -1 +0,0 @@
@@ -1 +0,0 @@