Mangle inline class members
<IMPL_SUFFIX> for method is a method signature hash, if method value parameter types contain inline class types, otherwise 'impl'. Constructor methods are named as 'constructor-<IMPL_SUFFIX>'. Synthesized 'box' and 'unbox' methods are named as '<METHOD_NAME>-<IMPL_SUFFIX>'. Erased implementations of overriding and non-overriding methods are named as '<METHOD_NAME>-<IMPL_SUFFIX>'. Fully specialized implementation of 'equals' will have a special suffix.
This commit is contained in:
Vendored
+80
@@ -0,0 +1,80 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
interface IFoo {
|
||||
fun overridingFun()
|
||||
fun String.overridingExtFun()
|
||||
|
||||
val overridingVal: Int
|
||||
var overridingVar: Int
|
||||
val String.overridingExtVal: Int
|
||||
var String.overridingExtVar: Int
|
||||
}
|
||||
|
||||
@Target(AnnotationTarget.CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class A
|
||||
|
||||
@Target(AnnotationTarget.PROPERTY_GETTER)
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class AGet
|
||||
|
||||
@Target(AnnotationTarget.PROPERTY_SETTER)
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class ASet
|
||||
|
||||
@Target(AnnotationTarget.VALUE_PARAMETER)
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class ASetParam
|
||||
|
||||
@Target(AnnotationTarget.VALUE_PARAMETER)
|
||||
@Retention(AnnotationRetention.BINARY)
|
||||
annotation class AReceiver
|
||||
|
||||
inline class Z(@get:AGet val x: Int) : IFoo {
|
||||
|
||||
constructor(y: Long) : this(y.toInt())
|
||||
|
||||
@A override fun overridingFun() {}
|
||||
@A override fun @receiver:AReceiver String.overridingExtFun() {}
|
||||
|
||||
@A @get:AGet
|
||||
override val overridingVal: Int
|
||||
get() = x
|
||||
|
||||
@A @get:AGet @set:ASet @setparam:ASetParam
|
||||
override var overridingVar: Int
|
||||
get() = x
|
||||
set(v) {}
|
||||
|
||||
@A @get:AGet
|
||||
override val @receiver:AReceiver String.overridingExtVal: Int
|
||||
get() = x
|
||||
|
||||
@A @get:AGet @set:ASet @setparam:ASetParam
|
||||
override var @receiver:AReceiver String.overridingExtVar: Int
|
||||
get() = x
|
||||
set(v) {}
|
||||
|
||||
@A override fun toString(): String = x.toString()
|
||||
|
||||
@A fun nonOverridingFun() {}
|
||||
|
||||
@A fun @receiver:AReceiver String.nonOverridingExtFun() {}
|
||||
|
||||
@A @get:AGet
|
||||
val nonOverridingVal: Int get() = x
|
||||
|
||||
@A @get:AGet @set:ASet @setparam:ASetParam
|
||||
var nonOverridingVar: Int
|
||||
get() = x
|
||||
set(v) {}
|
||||
|
||||
@A @get:AGet
|
||||
val @receiver:AReceiver String.nonOverridingExtVal: Int
|
||||
get() = x
|
||||
|
||||
@A @get:AGet @set:ASet @setparam:ASetParam
|
||||
var @receiver:AReceiver String.nonOverridingExtVar: Int
|
||||
get() = x
|
||||
set(v) {}
|
||||
}
|
||||
Reference in New Issue
Block a user