Skip to content

Commit ae6a8bf

Browse files
committed
Add debug impl to ManagedFunction
1 parent beb8cef commit ae6a8bf

2 files changed

Lines changed: 21 additions & 12 deletions

File tree

src/hostfxr/managed_function.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
1-
use std::ops::Deref;
1+
use std::{ops::Deref, fmt::Debug};
22

33
/// A wrapper around a managed function pointer.
44
pub struct ManagedFunction<F: ManagedFunctionPtr>(pub(crate) F);
55

6+
impl <F: ManagedFunctionPtr> Debug for ManagedFunction<F> {
7+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
8+
f.debug_struct("ManagedFunction")
9+
.field("ptr", &self.0.as_ptr())
10+
.field("sig", &std::any::type_name::<F>())
11+
.finish()
12+
}
13+
}
14+
615
impl<F: ManagedFunctionPtr> Deref for ManagedFunction<F> {
716
type Target = F;
817

tests/errors.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ rusty_fork_test! {
2626
);
2727
assert!(invalid_method_name.is_err());
2828
assert_eq!(
29-
unsafe { invalid_method_name.unwrap_err_unchecked() },
29+
invalid_method_name.unwrap_err(),
3030
GetManagedFunctionError::MissingMethod
3131
);
3232

3333
let invalid_method_signature = fn_loader
3434
.get_function_with_default_signature(pdcstr!("Test.Program, Test"), pdcstr!("Main"));
3535
assert!(invalid_method_signature.is_err());
3636
assert_eq!(
37-
unsafe { invalid_method_signature.unwrap_err_unchecked() },
37+
invalid_method_signature.unwrap_err(),
3838
GetManagedFunctionError::MissingMethod
3939
);
4040

@@ -44,8 +44,8 @@ rusty_fork_test! {
4444
);
4545
assert!(invalid_type_name.is_err());
4646
assert_eq!(
47-
unsafe { invalid_type_name.unwrap_err_unchecked() },
48-
GetManagedFunctionError::TypeNotFound
47+
invalid_type_name.unwrap_err(),
48+
GetManagedFunctionError::MissingMethod
4949
);
5050

5151
let invalid_namespace_name = fn_loader.get_function_with_default_signature(
@@ -54,8 +54,8 @@ rusty_fork_test! {
5454
);
5555
assert!(invalid_namespace_name.is_err());
5656
assert_eq!(
57-
unsafe { invalid_namespace_name.unwrap_err_unchecked() },
58-
GetManagedFunctionError::TypeNotFound
57+
invalid_namespace_name.unwrap_err(),
58+
GetManagedFunctionError::MissingMethod
5959
);
6060

6161
let invalid_assembly_name = fn_loader.get_function_with_default_signature(
@@ -64,7 +64,7 @@ rusty_fork_test! {
6464
);
6565
assert!(invalid_assembly_name.is_err());
6666
assert_eq!(
67-
unsafe { invalid_assembly_name.unwrap_err_unchecked() },
67+
invalid_assembly_name.unwrap_err(),
6868
GetManagedFunctionError::AssemblyNotFound
6969
);
7070

@@ -74,7 +74,7 @@ rusty_fork_test! {
7474
);
7575
assert!(method_not_marked.is_err());
7676
assert_eq!(
77-
unsafe { method_not_marked.unwrap_err_unchecked() },
77+
method_not_marked.unwrap_err(),
7878
GetManagedFunctionError::MethodNotUnmanagedCallersOnly
7979
);
8080

@@ -85,7 +85,7 @@ rusty_fork_test! {
8585
);
8686
assert!(invalid_delegate_type_name.is_err());
8787
assert_eq!(
88-
unsafe { invalid_delegate_type_name.unwrap_err_unchecked() },
88+
invalid_delegate_type_name.unwrap_err(),
8989
GetManagedFunctionError::TypeNotFound
9090
);
9191

@@ -109,7 +109,7 @@ rusty_fork_test! {
109109
.get_function_with_default_signature(pdcstr!("Test.Program, Test"), pdcstr!("Hello"));
110110
assert!(invalid_assembly_path.is_err());
111111
assert_eq!(
112-
unsafe { invalid_assembly_path.unwrap_err_unchecked() },
112+
invalid_assembly_path.unwrap_err(),
113113
GetManagedFunctionError::AssemblyNotFound
114114
);
115115

@@ -120,7 +120,7 @@ rusty_fork_test! {
120120
.get_function_with_default_signature(pdcstr!("Test.Program, Test"), pdcstr!("Hello"));
121121
assert!(non_existant_assembly_path.is_err());
122122
assert_eq!(
123-
unsafe { non_existant_assembly_path.unwrap_err_unchecked() },
123+
non_existant_assembly_path.unwrap_err(),
124124
GetManagedFunctionError::AssemblyNotFound
125125
);
126126

0 commit comments

Comments
 (0)