Skip to main content

rustc_structures/
collapse_macro_debug_info.rs

1#[cfg(feature = "nightly")]
2use rustc_macros::{Decodable_NoContext, Encodable_NoContext, StableHash};
3
4// How to perform collapse macros debug info
5/// if-ext - if macro from different crate (related to callsite code)
6/// | cmd \ attr    | no  | (unspecified) | external | yes |
7/// | no            | no  | no            | no       | no  |
8/// | (unspecified) | no  | no            | if-ext   | yes |
9/// | external      | no  | if-ext        | if-ext   | yes |
10/// | yes           | yes | yes           | yes      | yes |
11#[derive(#[automatically_derived]
impl ::core::marker::Copy for CollapseMacroDebuginfo { }Copy, #[automatically_derived]
impl ::core::clone::Clone for CollapseMacroDebuginfo {
    #[inline]
    fn clone(&self) -> CollapseMacroDebuginfo { *self }
}Clone, #[automatically_derived]
impl ::core::fmt::Debug for CollapseMacroDebuginfo {
    #[inline]
    fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
        ::core::fmt::Formatter::write_str(f,
            match self {
                CollapseMacroDebuginfo::No => "No",
                CollapseMacroDebuginfo::Unspecified => "Unspecified",
                CollapseMacroDebuginfo::External => "External",
                CollapseMacroDebuginfo::Yes => "Yes",
            })
    }
}Debug, #[automatically_derived]
impl ::core::hash::Hash for CollapseMacroDebuginfo {
    #[inline]
    fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) {
        let __self_discr = ::core::intrinsics::discriminant_value(self);
        ::core::hash::Hash::hash(&__self_discr, state)
    }
}Hash, #[automatically_derived]
impl ::core::cmp::PartialEq for CollapseMacroDebuginfo {
    #[inline]
    fn eq(&self, other: &CollapseMacroDebuginfo) -> bool {
        let __self_discr = ::core::intrinsics::discriminant_value(self);
        let __arg1_discr = ::core::intrinsics::discriminant_value(other);
        __self_discr == __arg1_discr
    }
}PartialEq)]
12#[cfg_attr(feature = "nightly", derive(const _: () =
    {
        impl ::rustc_data_structures::stable_hash::StableHash for
            CollapseMacroDebuginfo {
            #[inline]
            fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(&self,
                __hcx: &mut __Hcx,
                __hasher:
                    &mut ::rustc_data_structures::stable_hash::StableHasher) {
                ::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
                match *self {
                    CollapseMacroDebuginfo::No => {}
                    CollapseMacroDebuginfo::Unspecified => {}
                    CollapseMacroDebuginfo::External => {}
                    CollapseMacroDebuginfo::Yes => {}
                }
            }
        }
    };StableHash, const _: () =
    {
        impl<__E: ::rustc_serialize::Encoder>
            ::rustc_serialize::Encodable<__E> for CollapseMacroDebuginfo {
            fn encode(&self, __encoder: &mut __E) {
                let disc =
                    match *self {
                        CollapseMacroDebuginfo::No => { 0usize }
                        CollapseMacroDebuginfo::Unspecified => { 1usize }
                        CollapseMacroDebuginfo::External => { 2usize }
                        CollapseMacroDebuginfo::Yes => { 3usize }
                    };
                ::rustc_serialize::Encoder::emit_u8(__encoder, disc as u8);
            }
        }
    };Encodable_NoContext, const _: () =
    {
        impl<__D: ::rustc_serialize::Decoder>
            ::rustc_serialize::Decodable<__D> for CollapseMacroDebuginfo {
            fn decode(__decoder: &mut __D) -> Self {
                match ::rustc_serialize::Decoder::read_u8(__decoder) as usize
                    {
                    0usize => { CollapseMacroDebuginfo::No }
                    1usize => { CollapseMacroDebuginfo::Unspecified }
                    2usize => { CollapseMacroDebuginfo::External }
                    3usize => { CollapseMacroDebuginfo::Yes }
                    n => {
                        ::core::panicking::panic_fmt(format_args!("invalid enum variant tag while decoding `CollapseMacroDebuginfo`, expected 0..4, actual {0}",
                                n));
                    }
                }
            }
        }
    };Decodable_NoContext))]
13pub enum CollapseMacroDebuginfo {
14    /// Don't collapse debuginfo for the macro
15    No = 0,
16    /// Unspecified value
17    Unspecified = 1,
18    /// Collapse debuginfo if the macro comes from a different crate
19    External = 2,
20    /// Collapse debuginfo for the macro
21    Yes = 3,
22}