K2: don't generate Java overridden synthetics for Kotlin get/sets
#KT-59038 Fixed
This commit is contained in:
committed by
Space Team
parent
9e39b7ef87
commit
d8a20f1975
+20
@@ -0,0 +1,20 @@
|
||||
FILE: test.kt
|
||||
public final class Base : R|kotlin/Any| {
|
||||
public constructor(x: R|kotlin/Any|): R|Base| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final val x: R|kotlin/Any| = R|<local>/x|
|
||||
public get(): R|kotlin/Any|
|
||||
|
||||
public final fun <T> getFoo(): R|T| {
|
||||
^getFoo (this@R|/Base|.R|/Base.x| as R|T|)
|
||||
}
|
||||
|
||||
}
|
||||
public final fun bar(some: R|Some|): R|kotlin/Unit| {
|
||||
lval foo: <ERROR TYPE REF: Unresolved name: foo> = R|<local>/some|.<Unresolved name: foo>#
|
||||
lval baz: <ERROR TYPE REF: Unresolved name: foo> = R|<local>/some|.<Unresolved name: foo>#<R|kotlin/String|>
|
||||
lval getFoo: <ERROR TYPE REF: Cannot infer argument for type parameter T> = R|<local>/some|.R|/Base.getFoo<CS errors: /Base.getFoo>#|<<ERROR TYPE REF: Cannot infer argument for type parameter T>>()
|
||||
lval getBaz: R|kotlin/String| = R|<local>/some|.R|/Base.getFoo|<R|kotlin/String|>()
|
||||
}
|
||||
compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/genericGetterForJavaOverriddenProperty.kt
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
// FILE: Some.java
|
||||
|
||||
public class Some extends Base {
|
||||
public Some(Object o) {
|
||||
super(o);
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
class Base(val x: Any) {
|
||||
fun <T> getFoo(): T = x <!UNCHECKED_CAST!>as T<!>
|
||||
}
|
||||
|
||||
fun bar(some: Some) {
|
||||
val foo = some.<!UNRESOLVED_REFERENCE!>foo<!>
|
||||
val baz = some.<!UNRESOLVED_REFERENCE!>foo<!><String>
|
||||
|
||||
val getFoo = some.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>getFoo<!>()
|
||||
val getBaz = some.getFoo<String>()
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
FILE: test.kt
|
||||
public final class Base : R|kotlin/Any| {
|
||||
public constructor(foo: R|kotlin/Any|): R|Base| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
internal final val foo: R|kotlin/Any| = R|<local>/foo|
|
||||
internal get(): R|kotlin/Any|
|
||||
|
||||
public final fun <T> getFoo(): R|T| {
|
||||
^getFoo (this@R|/Base|.R|/Base.foo| as R|T|)
|
||||
}
|
||||
|
||||
}
|
||||
public final fun bar(some: R|Some|): R|kotlin/Unit| {
|
||||
lval foo: R|kotlin/Any| = R|<local>/some|.R|/Base.foo|
|
||||
lval baz: R|kotlin/Any| = R|<local>/some|.R|/Base.foo|<R|kotlin/String|>
|
||||
lval getFoo: <ERROR TYPE REF: Cannot infer argument for type parameter T> = R|<local>/some|.R|/Base.getFoo<CS errors: /Base.getFoo>#|<<ERROR TYPE REF: Cannot infer argument for type parameter T>>()
|
||||
lval getBaz: R|kotlin/String| = R|<local>/some|.R|/Base.getFoo|<R|kotlin/String|>()
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
// FILE: Some.java
|
||||
|
||||
public class Some extends Base {
|
||||
public Some(Object o) {
|
||||
super(o);
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
class Base(internal val foo: Any) {
|
||||
fun <T> getFoo(): T = foo <!UNCHECKED_CAST!>as T<!>
|
||||
}
|
||||
|
||||
fun bar(some: Some) {
|
||||
val foo = some.foo
|
||||
val baz = some.<!EXPLICIT_TYPE_ARGUMENTS_IN_PROPERTY_ACCESS!>foo<!><String>
|
||||
|
||||
val getFoo = some.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>getFoo<!>()
|
||||
val getBaz = some.getFoo<String>()
|
||||
}
|
||||
compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/genericGetterForSyntheticProperty.fir.txt
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
FILE: test.kt
|
||||
public final fun bar(some: R|Some|): R|kotlin/Unit| {
|
||||
lval foo: <ERROR TYPE REF: Unresolved name: foo> = R|<local>/some|.<Unresolved name: foo>#
|
||||
lval baz: <ERROR TYPE REF: Unresolved name: foo> = R|<local>/some|.<Unresolved name: foo>#<R|kotlin/String|>
|
||||
lval getFoo: <ERROR TYPE REF: Cannot infer argument for type parameter T> = R|<local>/some|.R|/Some.getFoo<CS errors: /Some.getFoo>#|<<ERROR TYPE REF: Cannot infer argument for type parameter T>>()
|
||||
lval getBaz: R|kotlin/String!| = R|<local>/some|.R|/Some.getFoo|<R|kotlin/String|>()
|
||||
}
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: Some.java
|
||||
|
||||
public class Some {
|
||||
public <T> T getFoo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
fun bar(some: Some) {
|
||||
val foo = some.<!UNRESOLVED_REFERENCE!>foo<!>
|
||||
val baz = some.<!UNRESOLVED_REFERENCE!>foo<!><String>
|
||||
|
||||
val getFoo = some.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>getFoo<!>()
|
||||
val getBaz = some.getFoo<String>()
|
||||
}
|
||||
Reference in New Issue
Block a user