Diagnostic tests: create fieldRename subDir and use it for related tests

Related to: KT-55846, KT-50082, KT-55436, KT-55017
This commit is contained in:
Mikhail Glukhikh
2023-01-10 13:34:37 +01:00
committed by Space Team
parent 35c0a3d391
commit f6bd4d5e15
18 changed files with 160 additions and 120 deletions
@@ -0,0 +1,48 @@
// WITH_STDLIB
// FILE: Base.java
public class Base {
public String regular = "a";
public String withGetter = "b";
public String lateInit = "c";
public String lazyProp = "d";
public String withSetter = "e";
public String openProp = "f";
}
// FILE: test.kt
open class Derived : Base() {
val regular = "aa"
val withGetter get() = "bb"
lateinit var lateInit: String
val lazyProp by lazy { "dd" }
var withSetter: String = "ee"
set(value) {
println(value)
field = value
}
open val openProp = "ff"
}
fun test(d: Derived) {
d.regular
d.withGetter
d.lateInit
d.lazyProp
d.withSetter = ""
d.openProp
d::withGetter
Derived::withGetter
}
@@ -0,0 +1,48 @@
// WITH_STDLIB
// FILE: Base.java
public class Base {
public String regular = "a";
public String withGetter = "b";
public String lateInit = "c";
public String lazyProp = "d";
public String withSetter = "e";
public String openProp = "f";
}
// FILE: test.kt
open class Derived : Base() {
val regular = "aa"
val withGetter get() = "bb"
lateinit var lateInit: String
val lazyProp by lazy { "dd" }
var withSetter: String = "ee"
set(value) {
println(value)
field = value
}
open val openProp = "ff"
}
fun test(d: Derived) {
d.regular
d.<!BASE_CLASS_FIELD_SHADOWS_DERIVED_CLASS_PROPERTY("Base; Derived")!>withGetter<!>
d.<!BACKING_FIELD_ACCESSED_DUE_TO_PROPERTY_FIELD_CONFLICT("Base; Derived")!>lateInit<!>
d.<!BASE_CLASS_FIELD_SHADOWS_DERIVED_CLASS_PROPERTY("Base; Derived")!>lazyProp<!>
d.<!BACKING_FIELD_ACCESSED_DUE_TO_PROPERTY_FIELD_CONFLICT("Base; Derived")!>withSetter<!> = ""
d.<!BASE_CLASS_FIELD_MAY_SHADOW_DERIVED_CLASS_PROPERTY("Base; Derived")!>openProp<!>
d::<!BASE_CLASS_FIELD_SHADOWS_DERIVED_CLASS_PROPERTY!>withGetter<!>
Derived::<!BASE_CLASS_FIELD_SHADOWS_DERIVED_CLASS_PROPERTY!>withGetter<!>
}
@@ -0,0 +1,35 @@
package
public fun test(/*0*/ d: Derived): kotlin.Unit
public open class Base {
public constructor Base()
public final var lateInit: kotlin.String!
public final var lazyProp: kotlin.String!
public final var openProp: kotlin.String!
public final var regular: kotlin.String!
public final var withGetter: kotlin.String!
public final var withSetter: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class Derived : Base {
public constructor Derived()
public final lateinit var lateInit: kotlin.String
public final override /*1*/ /*fake_override*/ var lateInit: kotlin.String!
public final val lazyProp: kotlin.String
public final override /*1*/ /*fake_override*/ var lazyProp: kotlin.String!
public open val openProp: kotlin.String = "ff"
public final override /*1*/ /*fake_override*/ var openProp: kotlin.String!
public final val regular: kotlin.String = "aa"
public final override /*1*/ /*fake_override*/ var regular: kotlin.String!
public final val withGetter: kotlin.String
public final override /*1*/ /*fake_override*/ var withGetter: kotlin.String!
public final var withSetter: kotlin.String
public final override /*1*/ /*fake_override*/ var withSetter: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,42 @@
// FIR_IDENTICAL
// !LANGUAGE: -PreferJavaFieldOverload
// WITH_STDLIB
// FILE: Base.java
public class Base {
public String a = "a";
public String b = "b";
public String c = "c";
public String d = "d";
public String e = "e";
}
// FILE: test.kt
class Derived : Base() {
val a = "aa"
val b get() = "bb"
lateinit var c: String
val d by lazy { "dd" }
var e: String = "ee"
set(value) {
println(value)
field = value
}
}
fun test(d: Derived) {
d.<!OVERLOAD_RESOLUTION_AMBIGUITY!>a<!>
d.<!OVERLOAD_RESOLUTION_AMBIGUITY!>b<!>
d.<!OVERLOAD_RESOLUTION_AMBIGUITY!>c<!>
d.<!OVERLOAD_RESOLUTION_AMBIGUITY!>d<!>
d.<!OVERLOAD_RESOLUTION_AMBIGUITY!>e<!> = ""
}
@@ -0,0 +1,32 @@
package
public fun test(/*0*/ d: Derived): kotlin.Unit
public open class Base {
public constructor Base()
public final var a: kotlin.String!
public final var b: kotlin.String!
public final var c: kotlin.String!
public final var d: kotlin.String!
public final var e: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Derived : Base {
public constructor Derived()
public final val a: kotlin.String = "aa"
public final override /*1*/ /*fake_override*/ var a: kotlin.String!
public final val b: kotlin.String
public final override /*1*/ /*fake_override*/ var b: kotlin.String!
public final lateinit var c: kotlin.String
public final override /*1*/ /*fake_override*/ var c: kotlin.String!
public final val d: kotlin.String
public final override /*1*/ /*fake_override*/ var d: kotlin.String!
public final var e: kotlin.String
public final override /*1*/ /*fake_override*/ var e: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,27 @@
// FILE: A.java
package base;
class A {
public String f = "OK";
}
// FILE: B.kt
package base
open class B : <!EXPOSED_SUPER_CLASS!>A<!>() {
private val f = "FAIL"
}
// FILE: C.java
import base.B;
public class C extends B {}
// FILE: test.kt
fun box(): String {
return C().f
}
@@ -0,0 +1,27 @@
// FILE: A.java
package base;
class A {
public String f = "OK";
}
// FILE: B.kt
package base
open class B : <!EXPOSED_SUPER_CLASS!>A()<!> {
private val f = "FAIL"
}
// FILE: C.java
import base.B;
public class C extends B {}
// FILE: test.kt
fun box(): String {
return C().f
}
@@ -0,0 +1,32 @@
package
public fun box(): kotlin.String
public open class C : base.B {
public constructor C()
invisible_fake final override /*1*/ /*fake_override*/ val f: kotlin.String
public final override /*1*/ /*fake_override*/ var f: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
package base {
public/*package*/ open class A {
public/*package*/ constructor A()
public final var f: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class B : base.A {
public constructor B()
private final val f: kotlin.String = "FAIL"
public final override /*1*/ /*fake_override*/ var f: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,27 @@
// FILE: A.java
package base;
public class A {
String f = "OK";
}
// FILE: B.kt
package base
open class B : A() {
private val f = "FAIL"
}
// FILE: C.java
import base.B;
public class C extends B {}
// FILE: test.kt
fun box(): String {
return C().<!INVISIBLE_REFERENCE!>f<!>
}
@@ -0,0 +1,27 @@
// FILE: A.java
package base;
public class A {
String f = "OK";
}
// FILE: B.kt
package base
open class B : A() {
private val f = "FAIL"
}
// FILE: C.java
import base.B;
public class C extends B {}
// FILE: test.kt
fun box(): String {
return C().<!INVISIBLE_MEMBER!>f<!>
}
@@ -0,0 +1,32 @@
package
public fun box(): kotlin.String
public open class C : base.B {
public constructor C()
invisible_fake final override /*1*/ /*fake_override*/ val f: kotlin.String
invisible_fake final override /*1*/ /*fake_override*/ var f: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
package base {
public open class A {
public constructor A()
public/*package*/ final var f: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class B : base.A {
public constructor B()
private final val f: kotlin.String = "FAIL"
public/*package*/ final override /*1*/ /*fake_override*/ var f: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -0,0 +1,94 @@
// FILE: BaseJava.java
package base;
public class BaseJava {
protected String a = "TARGET";
String b = "";
}
class DerivedJava extends BaseKotlin {
protected String a = "";
}
// FILE: Base.kt
package base
abstract class BaseKotlin
open class Intermediate : BaseJava() {
private val a = ""
}
class Derived : Intermediate() {
fun foo() = this::a // Same package
}
private class DerivedFromDerivedJava : DerivedJava() {
fun foo() = this::a // Property class is a subclass of the field class
}
// FILE: Derived.kt
package derived
import base.BaseJava
open class Intermediate : BaseJava() {
private val a = ""
private val b = ""
}
open class IntermediateWithoutField : BaseJava() {
private val a get() = ""
}
open class IntermediatePublic : BaseJava() {
val a = ""
}
class Derived : Intermediate() {
// This should be the first erroneous place (only in K2)
fun foo() = this::<!JAVA_SHADOWED_PROTECTED_FIELD_REFERENCE!>a<!>
fun bar() = a // Non-reference
fun baz() = this::<!UNRESOLVED_REFERENCE!>b<!> // Non-protected
}
typealias Alias = Intermediate
class DerivedAlias : Alias() {
// This should be the second erroneous place (only in K2)
fun foo() = this::<!JAVA_SHADOWED_PROTECTED_FIELD_REFERENCE!>a<!>
}
fun local() {
open class LocalIntermediate : BaseJava() {
private val a = ""
}
class LocalDerived : LocalIntermediate() {
// This should be the third and the last erroneous place (only in K2)
fun foo() = this::<!JAVA_SHADOWED_PROTECTED_FIELD_REFERENCE!>a<!>
}
}
class DerivedWithoutBackingField : IntermediateWithoutField() {
fun foo() = this::a // No shadowing backing field
}
class DerivedPublic : IntermediatePublic() {
fun foo() = this::a // Visible property
}
class DirectlyDerived : BaseJava() {
fun foo() = this::a // No property at all
}
fun test(d: Derived) {
d::<!UNRESOLVED_REFERENCE!>a<!> // Field is also invisible
}
@@ -0,0 +1,94 @@
// FILE: BaseJava.java
package base;
public class BaseJava {
protected String a = "TARGET";
String b = "";
}
class DerivedJava extends BaseKotlin {
protected String a = "";
}
// FILE: Base.kt
package base
abstract class BaseKotlin
open class Intermediate : BaseJava() {
private val a = ""
}
class Derived : Intermediate() {
fun foo() = this::a // Same package
}
private class DerivedFromDerivedJava : DerivedJava() {
fun foo() = this::a // Property class is a subclass of the field class
}
// FILE: Derived.kt
package derived
import base.BaseJava
open class Intermediate : BaseJava() {
private val a = ""
private val b = ""
}
open class IntermediateWithoutField : BaseJava() {
private val a get() = ""
}
open class IntermediatePublic : BaseJava() {
val a = ""
}
class Derived : Intermediate() {
// This should be the first erroneous place (only in K2)
fun foo() = this::a
fun bar() = a // Non-reference
fun baz() = this::<!INVISIBLE_MEMBER!>b<!> // Non-protected
}
typealias Alias = Intermediate
class DerivedAlias : Alias() {
// This should be the second erroneous place (only in K2)
fun foo() = this::a
}
fun local() {
open class LocalIntermediate : BaseJava() {
private val a = ""
}
class LocalDerived : LocalIntermediate() {
// This should be the third and the last erroneous place (only in K2)
fun foo() = this::a
}
}
class DerivedWithoutBackingField : IntermediateWithoutField() {
fun foo() = this::a // No shadowing backing field
}
class DerivedPublic : IntermediatePublic() {
fun foo() = this::a // Visible property
}
class DirectlyDerived : BaseJava() {
fun foo() = this::a // No property at all
}
fun test(d: Derived) {
d::<!INVISIBLE_MEMBER!>a<!> // Field is also invisible
}
@@ -0,0 +1,153 @@
package
package base {
public open class BaseJava {
public constructor BaseJava()
protected/*protected and package*/ final var a: kotlin.String!
public/*package*/ final var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public abstract class BaseKotlin {
public constructor BaseKotlin()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class Derived : base.Intermediate {
public constructor Derived()
invisible_fake final override /*1*/ /*fake_override*/ val a: kotlin.String
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
public/*package*/ final override /*1*/ /*fake_override*/ var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.reflect.KMutableProperty0<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
private final class DerivedFromDerivedJava : base.DerivedJava {
public constructor DerivedFromDerivedJava()
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.reflect.KMutableProperty0<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class DerivedJava : base.BaseKotlin {
public/*package*/ constructor DerivedJava()
protected/*protected and package*/ final var a: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class Intermediate : base.BaseJava {
public constructor Intermediate()
private final val a: kotlin.String = ""
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
public/*package*/ final override /*1*/ /*fake_override*/ var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
package derived {
public fun local(): kotlin.Unit
public fun test(/*0*/ d: derived.Derived): kotlin.Unit
public final class Derived : derived.Intermediate {
public constructor Derived()
invisible_fake final override /*1*/ /*fake_override*/ val a: kotlin.String
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
invisible_fake final override /*1*/ /*fake_override*/ val b: kotlin.String
invisible_fake final override /*1*/ /*fake_override*/ var b: kotlin.String!
public final fun bar(): kotlin.String!
public final fun baz(): kotlin.reflect.KMutableProperty0<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.reflect.KMutableProperty0<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class DerivedAlias : derived.Alias /* = derived.Intermediate */ {
public constructor DerivedAlias()
invisible_fake final override /*1*/ /*fake_override*/ val a: kotlin.String
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
invisible_fake final override /*1*/ /*fake_override*/ val b: kotlin.String
invisible_fake final override /*1*/ /*fake_override*/ var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.reflect.KMutableProperty0<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class DerivedPublic : derived.IntermediatePublic {
public constructor DerivedPublic()
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
public final override /*1*/ /*fake_override*/ val a: kotlin.String
invisible_fake final override /*1*/ /*fake_override*/ var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.reflect.KMutableProperty0<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class DerivedWithoutBackingField : derived.IntermediateWithoutField {
public constructor DerivedWithoutBackingField()
invisible_fake final override /*1*/ /*fake_override*/ val a: kotlin.String
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
invisible_fake final override /*1*/ /*fake_override*/ var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.reflect.KMutableProperty0<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public final class DirectlyDerived : base.BaseJava {
public constructor DirectlyDerived()
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
invisible_fake final override /*1*/ /*fake_override*/ var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.reflect.KMutableProperty0<kotlin.String!>
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class Intermediate : base.BaseJava {
public constructor Intermediate()
private final val a: kotlin.String = ""
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
private final val b: kotlin.String = ""
invisible_fake final override /*1*/ /*fake_override*/ var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class IntermediatePublic : base.BaseJava {
public constructor IntermediatePublic()
public final val a: kotlin.String = ""
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
invisible_fake final override /*1*/ /*fake_override*/ var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class IntermediateWithoutField : base.BaseJava {
public constructor IntermediateWithoutField()
private final val a: kotlin.String
protected/*protected and package*/ final override /*1*/ /*fake_override*/ var a: kotlin.String!
invisible_fake final override /*1*/ /*fake_override*/ var b: kotlin.String!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public typealias Alias = derived.Intermediate
}