Skip to main content

rustc_builtin_macros/deriving/
const_param_ty.rs

1use rustc_ast::Safety;
2use rustc_expand::base::ExtCtxt;
3use rustc_span::Span;
4
5use crate::deriving::generic::*;
6use crate::deriving::path_std;
7
8pub(crate) fn expand_deriving_const_param_ty(
9    cx: &ExtCtxt<'_>,
10    span: Span,
11    item: &ast::Item,
12    push: &mut dyn FnMut(Box<ast::Item>),
13    is_const: bool,
14) {
15    let trait_def = TraitDef {
16        span,
17        path: generic::ty::Path::new({
        ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
                [sym::marker, sym::ConstParamTy_]))
    })path_std!(marker::ConstParamTy_),
18        skip_path_as_bound: false,
19        needs_copy_as_bound_if_packed: false,
20        additional_bounds: {
    let count = 0usize + 1usize;
    let mut vec = ::smallvec::SmallVec::new();
    if count <= vec.inline_size() {
        vec.push(ty::Ty::Path(generic::ty::Path::new({
                        ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
                                [sym::cmp, sym::Eq]))
                    })));
        vec
    } else {
        ::smallvec::SmallVec::from_vec(::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
                    [ty::Ty::Path(generic::ty::Path::new({
                                        ::alloc::boxed::box_assume_init_into_vec_unsafe(::alloc::intrinsics::write_box_via_move(::alloc::boxed::Box::new_uninit(),
                                                [sym::cmp, sym::Eq]))
                                    }))])))
    }
}smallvec![ty::Ty::Path(path_std!(cmp::Eq))],
21        supports_unions: false,
22        methods: SmallVec::new(),
23        associated_types: SmallVec::new(),
24        is_const,
25        safety: Safety::Default,
26        document: true,
27    };
28
29    trait_def.expand(cx, item, push);
30}