File tree Expand file tree Collapse file tree 2 files changed +35
-2
lines changed Expand file tree Collapse file tree 2 files changed +35
-2
lines changed Original file line number Diff line number Diff line change @@ -676,15 +676,23 @@ impl Item {
676676 }
677677 let header = match * self . kind {
678678 ItemKind :: ForeignFunctionItem ( _) => {
679- let abi = tcx. fn_sig ( self . item_id . as_def_id ( ) . unwrap ( ) ) . abi ( ) ;
679+ let def_id = self . item_id . as_def_id ( ) . unwrap ( ) ;
680+ let abi = tcx. fn_sig ( def_id) . abi ( ) ;
680681 hir:: FnHeader {
681682 unsafety : if abi == Abi :: RustIntrinsic {
682683 intrinsic_operation_unsafety ( tcx, self . item_id . as_def_id ( ) . unwrap ( ) )
683684 } else {
684685 hir:: Unsafety :: Unsafe
685686 } ,
686687 abi,
687- constness : hir:: Constness :: NotConst ,
688+ constness : if abi == Abi :: RustIntrinsic
689+ && tcx. is_const_fn ( def_id)
690+ && is_unstable_const_fn ( tcx, def_id) . is_none ( )
691+ {
692+ hir:: Constness :: Const
693+ } else {
694+ hir:: Constness :: NotConst
695+ } ,
688696 asyncness : hir:: IsAsync :: NotAsync ,
689697 }
690698 }
Original file line number Diff line number Diff line change 1+ #![ feature( intrinsics) ]
2+ #![ feature( staged_api) ]
3+
4+ #![ crate_name = "foo" ]
5+ #![ stable( since="1.0.0" , feature="rust1" ) ]
6+
7+ extern "rust-intrinsic" {
8+ // @has 'foo/fn.transmute.html'
9+ // @has - '//pre[@class="rust fn"]' 'pub const unsafe extern "rust-intrinsic" fn transmute<T, U>(_: T) -> U'
10+ #[ stable( since="1.0.0" , feature="rust1" ) ]
11+ #[ rustc_const_stable( feature = "const_transmute" , since = "1.56.0" ) ]
12+ pub fn transmute < T , U > ( _: T ) -> U ;
13+
14+ // @has 'foo/fn.unreachable.html'
15+ // @has - '//pre[@class="rust fn"]' 'pub unsafe extern "rust-intrinsic" fn unreachable() -> !'
16+ #[ stable( since="1.0.0" , feature="rust1" ) ]
17+ pub fn unreachable ( ) -> !;
18+ }
19+
20+ extern "C" {
21+ // @has 'foo/fn.needs_drop.html'
22+ // @has - '//pre[@class="rust fn"]' 'pub unsafe extern "C" fn needs_drop() -> !'
23+ #[ stable( since="1.0.0" , feature="rust1" ) ]
24+ pub fn needs_drop ( ) -> !;
25+ }
You can’t perform that action at this time.
0 commit comments