Box primitive types in position of generic receiver

#KT-9469 fixed
This commit is contained in:
Alexey Tsvetkov
2015-10-22 20:33:24 +03:00
parent 7c54024a22
commit 0a69cca066
5 changed files with 120 additions and 2 deletions
@@ -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"
}
@@ -0,0 +1,8 @@
val <T> T.valProp: T where T : Number, T : Int
get() = this
fun box(): String {
0.valProp
return "OK"
}
@@ -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"
}