Support types without backing ClassLoader in 'safeArgumentTypes()' (EA-120387)
This commit is contained in:
@@ -423,9 +423,27 @@ class JDIEval(
|
|||||||
private fun Method.safeArgumentTypes(): List<jdi_Type> {
|
private fun Method.safeArgumentTypes(): List<jdi_Type> {
|
||||||
try {
|
try {
|
||||||
return argumentTypes()
|
return argumentTypes()
|
||||||
}
|
} catch (e: ClassNotLoadedException) {
|
||||||
catch (e: ClassNotLoadedException) {
|
return argumentTypeNames()!!.map { name ->
|
||||||
return argumentTypeNames()!!.map { name -> loadClassByName(name, declaringType().classLoader()) }
|
val classLoader = declaringType()?.classLoader()
|
||||||
|
if (classLoader != null) {
|
||||||
|
return@map loadClassByName(name, classLoader)
|
||||||
|
}
|
||||||
|
|
||||||
|
when (name) {
|
||||||
|
"void" -> virtualMachine().mirrorOfVoid().type()
|
||||||
|
"boolean" -> primitiveTypes.getValue(Type.BOOLEAN_TYPE.className)
|
||||||
|
"byte" -> primitiveTypes.getValue(Type.BYTE_TYPE.className)
|
||||||
|
"char" -> primitiveTypes.getValue(Type.CHAR_TYPE.className)
|
||||||
|
"short" -> primitiveTypes.getValue(Type.SHORT_TYPE.className)
|
||||||
|
"int" -> primitiveTypes.getValue(Type.INT_TYPE.className)
|
||||||
|
"long" -> primitiveTypes.getValue(Type.LONG_TYPE.className)
|
||||||
|
"float" -> primitiveTypes.getValue(Type.FLOAT_TYPE.className)
|
||||||
|
"double" -> primitiveTypes.getValue(Type.DOUBLE_TYPE.className)
|
||||||
|
else -> virtualMachine().classesByName(name).firstOrNull()
|
||||||
|
?: throw IllegalStateException("Unknown class $name")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user