@@ -254,7 +254,7 @@ pub(super) fn print_item(cx: &mut Context<'_>, item: &clean::Item, buf: &mut Buf
254254
255255    match  & * item. kind  { 
256256        clean:: ModuleItem ( ref  m)  => item_module ( buf,  cx,  item,  & m. items ) , 
257-         clean:: FunctionItem ( ref  f)  | clean:: ForeignFunctionItem ( ref  f)  => { 
257+         clean:: FunctionItem ( ref  f)  | clean:: ForeignFunctionItem ( ref  f,  _ )  => { 
258258            item_function ( buf,  cx,  item,  f) 
259259        } 
260260        clean:: TraitItem ( ref  t)  => item_trait ( buf,  cx,  item,  t) , 
@@ -265,7 +265,8 @@ pub(super) fn print_item(cx: &mut Context<'_>, item: &clean::Item, buf: &mut Buf
265265        clean:: MacroItem ( ref  m)  => item_macro ( buf,  cx,  item,  m) , 
266266        clean:: ProcMacroItem ( ref  m)  => item_proc_macro ( buf,  cx,  item,  m) , 
267267        clean:: PrimitiveItem ( _)  => item_primitive ( buf,  cx,  item) , 
268-         clean:: StaticItem ( ref  i)  | clean:: ForeignStaticItem ( ref  i)  => item_static ( buf,  cx,  item,  i) , 
268+         clean:: StaticItem ( ref  i)  => item_static ( buf,  cx,  item,  i,  None ) , 
269+         clean:: ForeignStaticItem ( ref  i,  safety)  => item_static ( buf,  cx,  item,  i,  Some ( * safety) ) , 
269270        clean:: ConstantItem ( generics,  ty,  c)  => item_constant ( buf,  cx,  item,  generics,  ty,  c) , 
270271        clean:: ForeignTypeItem  => item_foreign_type ( buf,  cx,  item) , 
271272        clean:: KeywordItem  => item_keyword ( buf,  cx,  item) , 
@@ -491,11 +492,14 @@ fn item_module(w: &mut Buffer, cx: &mut Context<'_>, item: &clean::Item, items:
491492                } 
492493
493494                let  unsafety_flag = match  * myitem. kind  { 
494-                     clean:: FunctionItem ( _)  | clean:: ForeignFunctionItem ( _ ) 
495+                     clean:: FunctionItem ( _)  | clean:: ForeignFunctionItem ( .. ) 
495496                        if  myitem. fn_header ( tcx) . unwrap ( ) . safety  == hir:: Safety :: Unsafe  =>
496497                    { 
497498                        "<sup title=\" unsafe function\" >⚠</sup>" 
498499                    } 
500+                     clean:: ForeignStaticItem ( _,  hir:: Safety :: Unsafe )  => { 
501+                         "<sup title=\" unsafe static\" >⚠</sup>" 
502+                     } 
499503                    _ => "" , 
500504                } ; 
501505
@@ -1957,13 +1961,22 @@ fn item_fields(
19571961    } 
19581962} 
19591963
1960- fn  item_static ( w :  & mut  impl  fmt:: Write ,  cx :  & mut  Context < ' _ > ,  it :  & clean:: Item ,  s :  & clean:: Static )  { 
1964+ fn  item_static ( 
1965+     w :  & mut  impl  fmt:: Write , 
1966+     cx :  & mut  Context < ' _ > , 
1967+     it :  & clean:: Item , 
1968+     s :  & clean:: Static , 
1969+     safety :  Option < hir:: Safety > , 
1970+ )  { 
19611971    wrap_item ( w,  |buffer| { 
19621972        render_attributes_in_code ( buffer,  it,  cx) ; 
19631973        write ! ( 
19641974            buffer, 
1965-             "{vis}static {mutability}{name}: {typ}" , 
1975+             "{vis}{safe} static {mutability}{name}: {typ}" , 
19661976            vis = visibility_print_with_space( it,  cx) , 
1977+             safe = safety
1978+                 . map( |safe| if  safe == hir:: Safety :: Unsafe  {  "unsafe "  }  else {  ""  } ) 
1979+                 . unwrap_or( "" ) , 
19671980            mutability = s. mutability. print_with_space( ) , 
19681981            name = it. name. unwrap( ) , 
19691982            typ = s. type_. print( cx) 
0 commit comments