@@ -64,13 +64,15 @@ pub struct Type {
6464include ! ( "hir_type.inc.rs" ) ;
6565
6666/// Get class name from a class pointer.
67- pub fn get_class_name ( class : Option < VALUE > ) -> String {
67+ pub fn get_class_name ( class : VALUE ) -> String {
6868 use crate :: cruby:: { RB_TYPE_P , RUBY_T_MODULE , RUBY_T_CLASS } ;
6969 use crate :: cruby:: { cstr_to_rust_string, rb_class2name} ;
70- class. filter ( |& class| {
71- // type checks for rb_class2name()
72- unsafe { RB_TYPE_P ( class, RUBY_T_MODULE ) || RB_TYPE_P ( class, RUBY_T_CLASS ) }
73- } ) . and_then ( |class| unsafe {
70+ // type checks for rb_class2name()
71+ if unsafe { RB_TYPE_P ( class, RUBY_T_MODULE ) || RB_TYPE_P ( class, RUBY_T_CLASS ) } {
72+ Some ( class)
73+ } else {
74+ None
75+ } . and_then ( |class| unsafe {
7476 cstr_to_rust_string ( rb_class2name ( class) )
7577 } ) . unwrap_or_else ( || "Unknown" . to_string ( ) )
7678}
@@ -80,8 +82,8 @@ fn write_spec(f: &mut std::fmt::Formatter, printer: &TypePrinter) -> std::fmt::R
8082 match ty. spec {
8183 Specialization :: Any | Specialization :: Empty => { Ok ( ( ) ) } ,
8284 Specialization :: Object ( val) => write ! ( f, "[{}]" , val. print( printer. ptr_map) ) ,
83- Specialization :: Type ( val) => write ! ( f, "[class:{}]" , get_class_name( Some ( val) ) ) ,
84- Specialization :: TypeExact ( val) => write ! ( f, "[class_exact:{}]" , get_class_name( Some ( val) ) ) ,
85+ Specialization :: Type ( val) => write ! ( f, "[class:{}]" , get_class_name( val) ) ,
86+ Specialization :: TypeExact ( val) => write ! ( f, "[class_exact:{}]" , get_class_name( val) ) ,
8587 Specialization :: Int ( val) if ty. is_subtype ( types:: CBool ) => write ! ( f, "[{}]" , val != 0 ) ,
8688 Specialization :: Int ( val) if ty. is_subtype ( types:: CInt8 ) => write ! ( f, "[{}]" , ( val as i64 ) >> 56 ) ,
8789 Specialization :: Int ( val) if ty. is_subtype ( types:: CInt16 ) => write ! ( f, "[{}]" , ( val as i64 ) >> 48 ) ,
0 commit comments