Prohibit properties with backing fields inside inline classes

This commit is contained in:
Mikhail Zarechenskiy
2018-05-07 00:15:06 +03:00
parent 29d15b9990
commit 043c3d9a97
8 changed files with 95 additions and 9 deletions
@@ -0,0 +1,34 @@
// !LANGUAGE: +InlineClasses
// !DIAGNOSTICS: -UNUSED_PARAMETER
interface A {
val goodSize: Int
}
interface B {
val badSize: Int
}
inline class Foo(val x: Int) : A, B {
val a0
get() = 0
<!PROPERTY_WITH_BACKING_FIELD_INSIDE_INLINE_CLASS!>val a1<!> = 0
var a2: Int
get() = 1
set(value) {}
<!PROPERTY_WITH_BACKING_FIELD_INSIDE_INLINE_CLASS!>var a3: Int<!> = 0
get() = 1
set(value) {
field = value
}
override val goodSize: Int
get() = 0
<!PROPERTY_WITH_BACKING_FIELD_INSIDE_INLINE_CLASS!>override val badSize: Int<!> = 0
<!PROPERTY_WITH_BACKING_FIELD_INSIDE_INLINE_CLASS!>lateinit var lateinitProperty: String<!>
}
@@ -0,0 +1,30 @@
package
public interface A {
public abstract val goodSize: 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 interface B {
public abstract val badSize: 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 inline class Foo : A, B {
public constructor Foo(/*0*/ x: kotlin.Int)
public final val a0: kotlin.Int
public final val a1: kotlin.Int = 0
public final var a2: kotlin.Int
public final var a3: kotlin.Int
public open override /*1*/ val badSize: kotlin.Int = 0
public open override /*1*/ val goodSize: kotlin.Int
public final lateinit var lateinitProperty: kotlin.String
public final val x: kotlin.Int
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}