From 205fe325d95985cf4bdae878df7f67a4b65bb8d8 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Sun, 13 Oct 2013 12:33:42 +0400 Subject: [PATCH] Support constructor calls --- src/org/jetbrains/eval4j/jdi/jdiEval.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/org/jetbrains/eval4j/jdi/jdiEval.kt b/src/org/jetbrains/eval4j/jdi/jdiEval.kt index 32888995f0a..5743a462d0d 100644 --- a/src/org/jetbrains/eval4j/jdi/jdiEval.kt +++ b/src/org/jetbrains/eval4j/jdi/jdiEval.kt @@ -138,6 +138,20 @@ class JDIEval( } override fun invokeMethod(instance: Value, methodDesc: MethodDescription, arguments: List, invokespecial: Boolean): Value { + if (invokespecial) { + if (methodDesc.name == "") { + // Constructor call + val ctor = findMethod(methodDesc) + val _class = (instance as NewObjectValue).asmType.asReferenceType() as jdi.ClassType + val result = _class.newInstance(thread, ctor, arguments.map { v -> v.asJdiValue(vm) }, 0) + instance.value = result + return result.asValue() + } + else { + // TODO + throw UnsupportedOperationException("invokespecial is not suported yet") + } + } val method = findMethod(methodDesc) val obj = instance.jdiObj.checkNull()