]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_const_eval/src/lib.rs
New upstream version 1.58.1+dfsg1
[rustc.git] / compiler / rustc_const_eval / src / lib.rs
CommitLineData
e9174d1e 1/*!
1a4d82fc 2
74b04a01 3Rust MIR: a lowered representation of Rust.
1a4d82fc 4
e9174d1e 5*/
1a4d82fc 6
17df50a5 7#![feature(assert_matches)]
60c5eb7d 8#![feature(bool_to_option)]
7453a54e 9#![feature(box_patterns)]
c295e0f8 10#![feature(control_flow_enum)]
83c7162d 11#![feature(crate_visibility_modifier)]
f9f354fc 12#![feature(decl_macro)]
1b1a35ee 13#![feature(exact_size_is_empty)]
c295e0f8 14#![feature(in_band_lifetimes)]
cdc7bbd5 15#![feature(iter_zip)]
3c0e092e 16#![feature(let_else)]
6a06907d 17#![feature(map_try_insert)]
f9f354fc 18#![feature(min_specialization)]
17df50a5 19#![feature(slice_ptr_get)]
c295e0f8
XL
20#![feature(option_get_or_insert_default)]
21#![feature(never_type)]
22#![feature(trait_alias)]
dc9dc135 23#![feature(trusted_len)]
c295e0f8 24#![feature(trusted_step)]
9fa01778 25#![feature(try_blocks)]
dfeec247 26#![recursion_limit = "256"]
94b46f34 27
dfeec247 28#[macro_use]
3dfed10e 29extern crate tracing;
dfeec247 30#[macro_use]
ba9703b0 31extern crate rustc_middle;
e9174d1e 32
dfeec247 33pub mod const_eval;
dfeec247 34pub mod interpret;
92a42be0 35pub mod transform;
cc61c64b 36pub mod util;
9e0c209e 37
ba9703b0 38use rustc_middle::ty::query::Providers;
8bb4bdeb 39
f035d41b 40pub fn provide(providers: &mut Providers) {
dfeec247 41 const_eval::provide(providers);
1b1a35ee
XL
42 providers.eval_to_const_value_raw = const_eval::eval_to_const_value_raw_provider;
43 providers.eval_to_allocation_raw = const_eval::eval_to_allocation_raw_provider;
e74abb32 44 providers.const_caller_location = const_eval::const_caller_location;
dfeec247
XL
45 providers.destructure_const = |tcx, param_env_and_value| {
46 let (param_env, value) = param_env_and_value.into_parts();
47 const_eval::destructure_const(tcx, param_env, value)
48 };
6a06907d
XL
49 providers.const_to_valtree = |tcx, param_env_and_value| {
50 let (param_env, raw) = param_env_and_value.into_parts();
51 const_eval::const_to_valtree(tcx, param_env, raw)
52 };
1b1a35ee
XL
53 providers.deref_const = |tcx, param_env_and_value| {
54 let (param_env, value) = param_env_and_value.into_parts();
55 const_eval::deref_const(tcx, param_env, value)
56 };
cc61c64b 57}