(
env: &JNIEnv<'j>,
clazz: JClass<'j>,
for_return: bool,
)
| 457 | } |
| 458 | |
| 459 | pub(crate) fn from_java_class<'j>( |
| 460 | env: &JNIEnv<'j>, |
| 461 | clazz: JClass<'j>, |
| 462 | for_return: bool, |
| 463 | ) -> Result<Option<WasmTy>, Error> { |
| 464 | if clazz.is_null() { |
| 465 | return Ok(None); // FIXME: this should be an exception, right? |
| 466 | } |
| 467 | |
| 468 | let voidp: JClass = env.get_static_field(VOID, PRIMITIVE, CLASS)?.l()?.into(); |
| 469 | |
| 470 | let ty: WasmTy = match clazz { |
| 471 | _ if env.is_assignable_from(clazz, I64)? => ValType::I64.into(), |
| 472 | _ if env.is_assignable_from(clazz, I32)? => ValType::I32.into(), |
| 473 | _ if env.is_assignable_from(clazz, F64)? => ValType::F64.into(), |
| 474 | _ if env.is_assignable_from(clazz, F32)? => ValType::F32.into(), |
| 475 | _ if env.is_assignable_from(clazz, WASM_VOID)? => return Ok(None), |
| 476 | _ if env.is_assignable_from(clazz, VOID)? => return Ok(None), |
| 477 | _ if env.is_assignable_from(clazz, voidp)? => return Ok(None), |
| 478 | _ => { |
| 479 | let name = get_class_name(env, clazz)?; |
| 480 | if !for_return { |
| 481 | return Err(anyhow!("Unsupported Java class as argument: {}", name)); |
| 482 | } else { |
| 483 | return Err(anyhow!("Unsupported Java class as result: {}", name)); |
| 484 | } |
| 485 | } |
| 486 | }; |
| 487 | |
| 488 | Ok(Some(ty)) |
| 489 | } |
| 490 | |
| 491 | pub(crate) fn from_java<'j, 'b: 'j>( |
| 492 | env: &'b JNIEnv<'j>, |
no test coverage detected
searching dependent graphs…