"field": synthetic variable creation in accessors, codegen changed accordingly, a set of tests, relevant code fix (j2k)
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
class My(val field: Int) {
|
||||
// Backing field, initializer
|
||||
val second: Int = 0
|
||||
get() = field
|
||||
|
||||
// No backing field, no initializer
|
||||
val third: Int
|
||||
get() = this.field
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package
|
||||
|
||||
public final class My {
|
||||
public constructor My(/*0*/ field: kotlin.Int)
|
||||
public final val field: kotlin.Int
|
||||
public final val second: kotlin.Int = 0
|
||||
public final val third: kotlin.Int
|
||||
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,18 @@
|
||||
open class Base {
|
||||
open val x: Int = 1
|
||||
get() = field - 1
|
||||
}
|
||||
|
||||
class Other: Base() {
|
||||
override val x = 2
|
||||
}
|
||||
|
||||
class Another: Base() {
|
||||
override val x = 3
|
||||
get() = field + 1
|
||||
}
|
||||
|
||||
class NoBackingField: Base() {
|
||||
override val x: Int
|
||||
get() = 5
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package
|
||||
|
||||
public final class Another : Base {
|
||||
public constructor Another()
|
||||
public open override /*1*/ val x: kotlin.Int = 3
|
||||
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 Base {
|
||||
public constructor Base()
|
||||
public open val x: kotlin.Int = 1
|
||||
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 NoBackingField : Base {
|
||||
public constructor NoBackingField()
|
||||
public open override /*1*/ val x: kotlin.Int
|
||||
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 Other : Base {
|
||||
public constructor Other()
|
||||
public open override /*1*/ val x: kotlin.Int = 2
|
||||
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,4 @@
|
||||
interface My {
|
||||
<!BACKING_FIELD_IN_TRAIT!>val x: Int<!> = <!PROPERTY_INITIALIZER_IN_TRAIT!>0<!>
|
||||
get() = field
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package
|
||||
|
||||
public interface My {
|
||||
public open val x: kotlin.Int = 0
|
||||
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,11 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
fun foo() {
|
||||
open class Local {
|
||||
val my: Int = 2
|
||||
get() = field
|
||||
}
|
||||
val your = object: Local() {
|
||||
val your: Int = 3
|
||||
get() = field
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
package
|
||||
|
||||
public fun foo(): kotlin.Unit
|
||||
@@ -0,0 +1,2 @@
|
||||
val my: Int = 21
|
||||
get() = field * 2
|
||||
@@ -0,0 +1,3 @@
|
||||
package
|
||||
|
||||
public val my: kotlin.Int = 21
|
||||
@@ -0,0 +1,5 @@
|
||||
var my: Int = 0
|
||||
get() = -field
|
||||
set(arg) {
|
||||
field = arg
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
package
|
||||
|
||||
public var my: kotlin.Int
|
||||
@@ -0,0 +1,8 @@
|
||||
class My {
|
||||
// No initialization needed because no backing field
|
||||
val two: Int
|
||||
get() {
|
||||
val <!NAME_SHADOWING!>field<!> = 2
|
||||
return field
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package
|
||||
|
||||
public final class My {
|
||||
public constructor My()
|
||||
public final val two: kotlin.Int
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user