Box primitive types in position of generic receiver
#KT-9469 fixed
This commit is contained in:
+39
@@ -0,0 +1,39 @@
|
||||
val <T> T.valProp: T
|
||||
get() = this
|
||||
|
||||
class A {
|
||||
val int: Int = 0
|
||||
val long: Long = 0.toLong()
|
||||
val short: Short = 0.toShort()
|
||||
val byte: Byte = 0.toByte()
|
||||
val double: Double = 0.0
|
||||
val float: Float = 0.0f
|
||||
val char: Char = '0'
|
||||
val bool: Boolean = false
|
||||
|
||||
fun invoke() {
|
||||
int.valProp
|
||||
long.valProp
|
||||
short.valProp
|
||||
byte.valProp
|
||||
double.valProp
|
||||
float.valProp
|
||||
char.valProp
|
||||
bool.valProp
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
0.valProp
|
||||
false.valProp
|
||||
'0'.valProp
|
||||
0.0.valProp
|
||||
0.0f.valProp
|
||||
0.toByte().valProp
|
||||
0.toShort().valProp
|
||||
0.toLong().valProp
|
||||
|
||||
A()()
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
val <T> T.valProp: T where T : Number, T : Int
|
||||
get() = this
|
||||
|
||||
fun box(): String {
|
||||
0.valProp
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
var <T> T.varProp: T
|
||||
get() = this
|
||||
set(value: T) {}
|
||||
|
||||
class A {
|
||||
var int: Int = 0
|
||||
var long: Long = 0.toLong()
|
||||
var short: Short = 0.toShort()
|
||||
var byte: Byte = 0.toByte()
|
||||
var double: Double = 0.0
|
||||
var float: Float = 0.0f
|
||||
var char: Char = '0'
|
||||
var bool: Boolean = false
|
||||
|
||||
fun invoke() {
|
||||
int.varProp = int
|
||||
long.varProp = long
|
||||
short.varProp = short
|
||||
byte.varProp = byte
|
||||
double.varProp = double
|
||||
float.varProp = float
|
||||
char.varProp = char
|
||||
bool.varProp = bool
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
0.varProp = 0
|
||||
false.varProp = false
|
||||
'0'.varProp = '0'
|
||||
0.0.varProp = 0.0
|
||||
0.0f.varProp = 0.0f
|
||||
0.toByte().varProp = 0.toByte()
|
||||
0.toShort().varProp = 0.toShort()
|
||||
0.toLong().varProp = 0.toLong()
|
||||
|
||||
A()()
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user