[LL FIR] pull up custom logic for synthetic properties and accessors

We should process them independently as they can be not related to each
other

^KT-65563 Fixed
This commit is contained in:
Dmitrii Gridin
2024-02-06 17:33:53 +01:00
committed by Space Team
parent 403e9a3df8
commit c52b9032ce
8 changed files with 437 additions and 3 deletions
@@ -0,0 +1,27 @@
// SKIP_WHEN_OUT_OF_CONTENT_ROOT
// MODULE: lib
// MODULE_KIND: LibraryBinary
// FILE: BaseKotlin.kt
open class BaseKotlin : BaseJava() {
override fun getSomething(): String = "42"
}
// FILE: BaseJava.java
public class BaseJava {
public String getSomething() {
return "";
}
public void setSomething(String s) {
}
}
// MODULE: main(lib)
// MEMBER_NAME_FILTER: something
// FILE: main.kt
class Deri<caret>ved : BaseKotlin() {
override fun setSomething(s: String) {
}
}
@@ -0,0 +1,169 @@
STATUS:
TARGET: public open [<synthetic> STATUS] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String|
public [<synthetic> ResolvedTo(STATUS)] set([ResolvedTo(STATUS)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun getSomething(): kotlin.String { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(STATUS)] fun setSomething([ResolvedTo(STATUS)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK }
}
EXPECT_ACTUAL_MATCHING:
TARGET: public open [<synthetic> EXPECT_ACTUAL_MATCHING] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String|
public [<synthetic> ResolvedTo(EXPECT_ACTUAL_MATCHING)] set([ResolvedTo(EXPECT_ACTUAL_MATCHING)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK }
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun getSomething(): kotlin.String { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun setSomething([ResolvedTo(EXPECT_ACTUAL_MATCHING)] s: R|kotlin/String|): R|kotlin/Unit| { LAZY_BLOCK }
}
CONTRACTS:
TARGET: public open [<synthetic> CONTRACTS] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String|
public [<synthetic> ResolvedTo(CONTRACTS)] set([ResolvedTo(CONTRACTS)] s: R|kotlin/String|): R|kotlin/Unit| {
}
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun getSomething(): kotlin.String { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(CONTRACTS)] fun setSomething([ResolvedTo(CONTRACTS)] s: R|kotlin/String|): R|kotlin/Unit| {
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
TARGET: public open [<synthetic> IMPLICIT_TYPES_BODY_RESOLVE] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String|
public [<synthetic> ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] set([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit| {
}
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun getSomething(): kotlin.String { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun setSomething([ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit| {
}
}
ANNOTATION_ARGUMENTS:
TARGET: public open [<synthetic> ANNOTATION_ARGUMENTS] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String|
public [<synthetic> ResolvedTo(ANNOTATION_ARGUMENTS)] set([ResolvedTo(ANNOTATION_ARGUMENTS)] s: R|kotlin/String|): R|kotlin/Unit| {
}
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun getSomething(): kotlin.String { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(ANNOTATION_ARGUMENTS)] fun setSomething([ResolvedTo(ANNOTATION_ARGUMENTS)] s: R|kotlin/String|): R|kotlin/Unit| {
}
}
BODY_RESOLVE:
TARGET: public open [<synthetic> BODY_RESOLVE] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String|
public [<synthetic> ResolvedTo(BODY_RESOLVE)] set([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit| {
}
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun getSomething(): kotlin.String { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(BODY_RESOLVE)] fun setSomething([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit| {
}
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] main.kt
public final [ResolvedTo(BODY_RESOLVE)] class Derived : R|BaseKotlin| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Derived] constructor(): R|Derived| {
super<R|BaseKotlin|>()
}
public open override [ResolvedTo(BODY_RESOLVE)] fun setSomething([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit| {
}
}
@@ -0,0 +1,27 @@
// SKIP_WHEN_OUT_OF_CONTENT_ROOT
// MODULE: lib
// MODULE_KIND: LibraryBinary
// FILE: BaseKotlin.kt
open class BaseKotlin : BaseJava() {
override fun setSomething(s: String) {
}
}
// FILE: BaseJava.java
public class BaseJava {
public String getSomething() {
return "";
}
public void setSomething(String s) {
}
}
// MODULE: main(lib)
// MEMBER_NAME_FILTER: something
// FILE: main.kt
class Deri<caret>ved : BaseKotlin() {
override fun getSomething(): String = "42"
}
@@ -0,0 +1,178 @@
STATUS:
TARGET: public open override [<synthetic> STATUS] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(STATUS)] get(): R|kotlin/String| { LAZY_BLOCK }
public [<synthetic> ResolvedTo(BODY_RESOLVE)] set([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit|
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun setSomething([ResolvedTo(RAW_FIR)] s: kotlin.String): kotlin.Unit { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(STATUS)] fun getSomething(): R|kotlin/String| { LAZY_BLOCK }
}
EXPECT_ACTUAL_MATCHING:
TARGET: public open override [<synthetic> EXPECT_ACTUAL_MATCHING] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(EXPECT_ACTUAL_MATCHING)] get(): R|kotlin/String| { LAZY_BLOCK }
public [<synthetic> ResolvedTo(BODY_RESOLVE)] set([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit|
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun setSomething([ResolvedTo(RAW_FIR)] s: kotlin.String): kotlin.Unit { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun getSomething(): R|kotlin/String| { LAZY_BLOCK }
}
CONTRACTS:
TARGET: public open override [<synthetic> CONTRACTS] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(CONTRACTS)] get(): R|kotlin/String| {
^getSomething String(42)
}
public [<synthetic> ResolvedTo(BODY_RESOLVE)] set([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit|
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun setSomething([ResolvedTo(RAW_FIR)] s: kotlin.String): kotlin.Unit { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(CONTRACTS)] fun getSomething(): R|kotlin/String| {
^getSomething String(42)
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
TARGET: public open override [<synthetic> IMPLICIT_TYPES_BODY_RESOLVE] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] get(): R|kotlin/String| {
^getSomething String(42)
}
public [<synthetic> ResolvedTo(BODY_RESOLVE)] set([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit|
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun setSomething([ResolvedTo(RAW_FIR)] s: kotlin.String): kotlin.Unit { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun getSomething(): R|kotlin/String| {
^getSomething String(42)
}
}
ANNOTATION_ARGUMENTS:
TARGET: public open override [<synthetic> ANNOTATION_ARGUMENTS] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(ANNOTATION_ARGUMENTS)] get(): R|kotlin/String| {
^getSomething String(42)
}
public [<synthetic> ResolvedTo(BODY_RESOLVE)] set([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit|
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun setSomething([ResolvedTo(RAW_FIR)] s: kotlin.String): kotlin.Unit { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(ANNOTATION_ARGUMENTS)] fun getSomething(): R|kotlin/String| {
^getSomething String(42)
}
}
BODY_RESOLVE:
TARGET: public open override [<synthetic> BODY_RESOLVE] var something: R|kotlin/String|
public [<synthetic> ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String| {
^getSomething String(42)
}
public [<synthetic> ResolvedTo(BODY_RESOLVE)] set([ResolvedTo(BODY_RESOLVE)] s: R|kotlin/String|): R|kotlin/Unit|
FILE: [ResolvedTo(RAW_FIR)] BaseKotlin.class
public open [ResolvedTo(RAW_FIR)] class BaseKotlin : BaseJava {
public [ResolvedTo(RAW_FIR)] [ContainingClassKey=BaseKotlin] constructor(): R|BaseKotlin| {
LAZY_super<<implicit>>
}
public open [ResolvedTo(RAW_FIR)] fun setSomething([ResolvedTo(RAW_FIR)] s: kotlin.String): kotlin.Unit { LAZY_BLOCK }
}
FILE: [ResolvedTo(IMPORTS)] main.kt
public final [ResolvedTo(STATUS)] class Derived : R|BaseKotlin| {
public [ResolvedTo(STATUS)] [ContainingClassKey=Derived] constructor(): R|Derived| {
LAZY_super<R|BaseKotlin|>
}
public open override [ResolvedTo(BODY_RESOLVE)] fun getSomething(): R|kotlin/String| {
^getSomething String(42)
}
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] main.kt
public final [ResolvedTo(BODY_RESOLVE)] class Derived : R|BaseKotlin| {
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Derived] constructor(): R|Derived| {
super<R|BaseKotlin|>()
}
public open override [ResolvedTo(BODY_RESOLVE)] fun getSomething(): R|kotlin/String| {
^getSomething String(42)
}
}