NewObjectValue simply carries a type, the actual object will be created later
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user