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()