Ignore zero-sized types in wasm future-compat warning

This commit fixes a false positive of the warning triggered for #138762
and the fix is to codify that zero-sized types are "safe" in both the
old and new ABIs.
This commit is contained in:
Alex Crichton 2025-04-07 12:35:02 -07:00
parent e0883a2a6c
commit 88d8fd2742
2 changed files with 11 additions and 0 deletions

View File

@ -111,6 +111,11 @@ fn wasm_abi_safe<'tcx>(tcx: TyCtxt<'tcx>, arg: &ArgAbi<'tcx, Ty<'tcx>>) -> bool
}
}
// Zero-sized types are dropped in both ABIs, so they're safe
if arg.layout.size.bytes() == 0 {
return true;
}
false
}

View File

@ -39,3 +39,9 @@ pub fn call_other_fun(x: MyType) {
unsafe { other_fun(x) } //~ERROR: wasm ABI transition
//~^WARN: previously accepted
}
// Zero-sized types are safe in both ABIs
#[repr(C)]
pub struct MyZstType;
#[allow(improper_ctypes_definitions)]
pub extern "C" fn zst_safe(_x: (), _y: MyZstType) {}