NewObjectValue simply carries a type, the actual object will be created later

This commit is contained in:
Andrey Breslav
2013-10-13 00:44:02 +04:00
parent 94daf4c6bc
commit d139856e4c
2 changed files with 3 additions and 4 deletions
+1 -1
View File
@@ -66,7 +66,7 @@ class LongValue(value: Long): AbstractValue<Long>(value, Type.LONG_TYPE)
class FloatValue(value: Float): AbstractValue<Float>(value, Type.FLOAT_TYPE)
class DoubleValue(value: Double): AbstractValue<Double>(value, Type.DOUBLE_TYPE)
class ObjectValue(value: Any?, asmType: Type): AbstractValue<Any?>(value, asmType)
class NewObjectValue(val _class: Class<*>, asmType: Type): AbstractValueBase<Any?>(asmType) {
class NewObjectValue(asmType: Type): AbstractValueBase<Any?>(asmType) {
override var value: Any? = null
}
+2 -3
View File
@@ -142,8 +142,7 @@ object REFLECTION_EVAL : Eval {
override fun loadString(str: String): Value = ObjectValue(str, Type.getType(javaClass<String>()))
override fun newInstance(classType: Type): Value {
val _class = findClass(classType)
return NewObjectValue(_class, classType)
return NewObjectValue(classType)
}
override fun isInstanceOf(value: Value, targetType: Type): Boolean {
@@ -298,7 +297,7 @@ object REFLECTION_EVAL : Eval {
if (methodDesc.name == "<init>") {
// Constructor call
[suppress("UNCHECKED_CAST")]
val _class = (instance as NewObjectValue)._class as Class<Any>
val _class = findClass((instance as NewObjectValue).asmType)
val ctor = _class.findConstructor(methodDesc)
assertNotNull("Constructor not found: $methodDesc", ctor)
val args = arguments.map { v -> v.obj }.copyToArray()