]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_const_eval/src/lib.rs
New upstream version 1.59.0+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)]
3c0e092e 14#![feature(let_else)]
6a06907d 15#![feature(map_try_insert)]
f9f354fc 16#![feature(min_specialization)]
17df50a5 17#![feature(slice_ptr_get)]
c295e0f8
XL
18#![feature(option_get_or_insert_default)]
19#![feature(never_type)]
20#![feature(trait_alias)]
dc9dc135 21#![feature(trusted_len)]
c295e0f8 22#![feature(trusted_step)]
9fa01778 23#![feature(try_blocks)]
dfeec247 24#![recursion_limit = "256"]
94b46f34 25
dfeec247 26#[macro_use]
3dfed10e 27extern crate tracing;
dfeec247 28#[macro_use]
ba9703b0 29extern crate rustc_middle;
e9174d1e 30
dfeec247 31pub mod const_eval;
dfeec247 32pub mod interpret;
92a42be0 33pub mod transform;
cc61c64b 34pub mod util;
9e0c209e 35
ba9703b0 36use rustc_middle::ty::query::Providers;
8bb4bdeb 37
f035d41b 38pub fn provide(providers: &mut Providers) {
dfeec247 39 const_eval::provide(providers);
1b1a35ee
XL
40 providers.eval_to_const_value_raw = const_eval::eval_to_const_value_raw_provider;
41 providers.eval_to_allocation_raw = const_eval::eval_to_allocation_raw_provider;
e74abb32 42 providers.const_caller_location = const_eval::const_caller_location;
dfeec247
XL
43 providers.destructure_const = |tcx, param_env_and_value| {
44 let (param_env, value) = param_env_and_value.into_parts();
45 const_eval::destructure_const(tcx, param_env, value)
46 };
6a06907d
XL
47 providers.const_to_valtree = |tcx, param_env_and_value| {
48 let (param_env, raw) = param_env_and_value.into_parts();
49 const_eval::const_to_valtree(tcx, param_env, raw)
50 };
1b1a35ee
XL
51 providers.deref_const = |tcx, param_env_and_value| {
52 let (param_env, value) = param_env_and_value.into_parts();
53 const_eval::deref_const(tcx, param_env, value)
54 };
cc61c64b 55}