[FIR] Implement deprecation warning for synthetic without java base getter
Also implement new resolution behavior under language feature ^KT-63076 Fixed ^KT-64358
This commit is contained in:
committed by
Space Team
parent
d5b0a5b220
commit
fa33c5dc79
+12
-12
@@ -36,22 +36,22 @@ fun test_1(a: A) {
|
||||
}
|
||||
|
||||
fun test_2(b: B) {
|
||||
b.x1
|
||||
b.x2
|
||||
b.x3
|
||||
b.x4
|
||||
b.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x1<!>
|
||||
b.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x2<!>
|
||||
b.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x3<!>
|
||||
b.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x4<!>
|
||||
}
|
||||
|
||||
fun test_3(c: C) {
|
||||
c.x1
|
||||
c.x2
|
||||
c.x3
|
||||
c.x4
|
||||
c.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x1<!>
|
||||
c.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x2<!>
|
||||
c.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x3<!>
|
||||
c.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x4<!>
|
||||
}
|
||||
|
||||
fun test_4(d: D) {
|
||||
d.x1
|
||||
d.x2
|
||||
d.x3
|
||||
d.x4
|
||||
d.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x1<!>
|
||||
d.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x2<!>
|
||||
d.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x3<!>
|
||||
d.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>x4<!>
|
||||
}
|
||||
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
// FIR_IDENTICAL
|
||||
// LANGUAGE: +ForbidSyntheticPropertiesWithoutBaseJavaGetter
|
||||
|
||||
// FILE: Base.kt
|
||||
open class Base {
|
||||
fun getFoo(): String = ""
|
||||
fun setFoo(value: String) {}
|
||||
|
||||
fun getBar(): String = ""
|
||||
}
|
||||
|
||||
// FILE: Derived.java
|
||||
public class Derived extends Base {
|
||||
public void setBar(String value) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
class Impl : Derived()
|
||||
|
||||
fun test_1(x: Impl) {
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!> = "a"
|
||||
}
|
||||
|
||||
fun test_2(x: Impl) {
|
||||
x.<!UNRESOLVED_REFERENCE!>bar<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>bar<!> = "a"
|
||||
}
|
||||
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
// LANGUAGE: -ForbidSyntheticPropertiesWithoutBaseJavaGetter
|
||||
|
||||
// FILE: Base.kt
|
||||
open class Base {
|
||||
fun getFoo(): String = ""
|
||||
fun setFoo(value: String) {}
|
||||
|
||||
fun getBar(): String = ""
|
||||
}
|
||||
|
||||
// FILE: Derived.java
|
||||
public class Derived extends Base {
|
||||
public void setBar(String value) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
class Impl : Derived()
|
||||
|
||||
fun test_1(x: Impl) {
|
||||
x.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN("fun getFoo(): String; getFoo")!>foo<!>
|
||||
x.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN("fun setFoo(value: String): Unit; setFoo")!>foo<!> = "a"
|
||||
}
|
||||
|
||||
fun test_2(x: Impl) {
|
||||
x.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN("fun getBar(): String; getBar")!>bar<!>
|
||||
x.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN("fun setBar(value: String!): Unit; setBar")!>bar<!> = "a"
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
// LANGUAGE: -ForbidSyntheticPropertiesWithoutBaseJavaGetter
|
||||
|
||||
// FILE: Base.kt
|
||||
open class Base {
|
||||
fun getFoo(): String = ""
|
||||
fun setFoo(value: String) {}
|
||||
|
||||
fun getBar(): String = ""
|
||||
}
|
||||
|
||||
// FILE: Derived.java
|
||||
public class Derived extends Base {
|
||||
public void setBar(String value) {}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
class Impl : Derived()
|
||||
|
||||
fun test_1(x: Impl) {
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>foo<!> = "a"
|
||||
}
|
||||
|
||||
fun test_2(x: Impl) {
|
||||
x.<!UNRESOLVED_REFERENCE!>bar<!>
|
||||
x.<!UNRESOLVED_REFERENCE!>bar<!> = "a"
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// ISSUE: KT-59550
|
||||
// FILE: Base.kt
|
||||
abstract class Base(private val foo: String) {
|
||||
fun getFoo(): String = foo
|
||||
}
|
||||
|
||||
// FILE: Intermediate.java
|
||||
public class Intermediate extends Base {
|
||||
public Intermediate(String foo) {
|
||||
super(foo);
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
class Final(val i: Intermediate) : Intermediate(i.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>foo<!>)
|
||||
|
||||
fun test(x: Final) {
|
||||
x.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>foo<!>
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// ISSUE: KT-59550
|
||||
// FILE: Base.kt
|
||||
abstract class Base(private val foo: String) {
|
||||
fun getFoo(): String = foo
|
||||
}
|
||||
|
||||
// FILE: Intermediate.java
|
||||
public class Intermediate extends Base {
|
||||
public Intermediate(String foo) {
|
||||
super(foo);
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: main.kt
|
||||
class Final(val i: Intermediate) : Intermediate(i.foo)
|
||||
|
||||
fun test(x: Final) {
|
||||
x.foo
|
||||
}
|
||||
+1
-1
@@ -14,7 +14,7 @@ fun foo(k: KotlinClass2) {
|
||||
useInt(k.something2)
|
||||
useInt(k.getSomethingKotlin1())
|
||||
useInt(k.getSomethingKotlin2())
|
||||
k.somethingKotlin1
|
||||
k.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>somethingKotlin1<!>
|
||||
k.<!UNRESOLVED_REFERENCE!>somethingKotlin2<!>
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
-1
@@ -8,7 +8,7 @@ open class KotlinClass {
|
||||
|
||||
fun foo(javaClass: JavaClass) {
|
||||
useInt(javaClass.getSomething1())
|
||||
useInt(javaClass.something1)
|
||||
useInt(javaClass.<!SYNTHETIC_PROPERTY_WITHOUT_JAVA_ORIGIN!>something1<!>)
|
||||
|
||||
javaClass.setSomething2(javaClass.getSomething2() + 1)
|
||||
javaClass.something2 = javaClass.something2 + 1
|
||||
|
||||
Reference in New Issue
Block a user