@@ -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