[FIR] Fix exception in scopes caused by property and extension property with the same name in KJK hierarchy

#KT-65373 Fixed
This commit is contained in:
Kirill Rakhman
2024-01-30 12:21:30 +01:00
committed by Space Team
parent 9688865953
commit d937fb4350
8 changed files with 181 additions and 11 deletions
@@ -0,0 +1,70 @@
// ISSUE: KT-65373, KT-65464
// FILE: J.java
public class J extends D {}
// FILE: JOverridesRegular.java
public class JOverridesRegular extends D {
@Override
public int getA() {
return 1;
}
}
// FILE: JOverridesExtension.java
public class JOverridesExtension extends D {
@Override
public int getA(String $this) {
return 1;
}
}
// FILE: JOVerridesBoth.java
public class JOVerridesBoth extends D {
@Override
public int getA() {
return 1;
}
@Override
public int getA(String $this) {
return 1;
}
}
// FILE: 1.kt
open class D {
open val a: Int
get() = 2
open val String.a: Int
get() = 1
}
class F : J() {
fun test() {
a
"".a
}
}
class F2 : JOverridesRegular() {
fun test() {
a
"".<!UNRESOLVED_REFERENCE!>a<!>
}
}
class F3 : JOverridesExtension() {
fun test() {
a
"".a
}
}
class F4 : JOVerridesBoth() {
fun test() {
a
"".<!UNRESOLVED_REFERENCE!>a<!>
}
}
@@ -0,0 +1,70 @@
// ISSUE: KT-65373, KT-65464
// FILE: J.java
public class J extends D {}
// FILE: JOverridesRegular.java
public class JOverridesRegular extends D {
@Override
public int getA() {
return 1;
}
}
// FILE: JOverridesExtension.java
public class JOverridesExtension extends D {
@Override
public int getA(String $this) {
return 1;
}
}
// FILE: JOVerridesBoth.java
public class JOVerridesBoth extends D {
@Override
public int getA() {
return 1;
}
@Override
public int getA(String $this) {
return 1;
}
}
// FILE: 1.kt
open class D {
open val a: Int
get() = 2
open val String.a: Int
get() = 1
}
class F : J() {
fun test() {
a
"".a
}
}
class F2 : JOverridesRegular() {
fun test() {
a
"".a
}
}
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>F3<!> : JOverridesExtension() {
fun test() {
a
"".a
}
}
class <!CONFLICTING_INHERITED_JVM_DECLARATIONS!>F4<!> : JOVerridesBoth() {
fun test() {
a
"".a
}
}