]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_const_eval/src/lib.rs
New upstream version 1.71.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)]
7453a54e 8#![feature(box_patterns)]
f9f354fc 9#![feature(decl_macro)]
1b1a35ee 10#![feature(exact_size_is_empty)]
923072b8 11#![feature(let_chains)]
6a06907d 12#![feature(map_try_insert)]
f9f354fc 13#![feature(min_specialization)]
17df50a5 14#![feature(slice_ptr_get)]
c295e0f8
XL
15#![feature(option_get_or_insert_default)]
16#![feature(never_type)]
17#![feature(trait_alias)]
dc9dc135 18#![feature(trusted_len)]
c295e0f8 19#![feature(trusted_step)]
9fa01778 20#![feature(try_blocks)]
923072b8 21#![feature(yeet_expr)]
9c376795 22#![feature(if_let_guard)]
dfeec247 23#![recursion_limit = "256"]
94b46f34 24
dfeec247 25#[macro_use]
3dfed10e 26extern crate tracing;
dfeec247 27#[macro_use]
ba9703b0 28extern crate rustc_middle;
e9174d1e 29
dfeec247 30pub mod const_eval;
064997fb 31mod errors;
dfeec247 32pub mod interpret;
92a42be0 33pub mod transform;
cc61c64b 34pub mod util;
9e0c209e 35
9ffffee4 36use rustc_errors::{DiagnosticMessage, SubdiagnosticMessage};
49aad941
FG
37use rustc_fluent_macro::fluent_messages;
38use rustc_middle::query::Providers;
923072b8 39use rustc_middle::ty;
9ffffee4 40
353b0b11 41fluent_messages! { "../messages.ftl" }
8bb4bdeb 42
f035d41b 43pub fn provide(providers: &mut Providers) {
dfeec247 44 const_eval::provide(providers);
1b1a35ee
XL
45 providers.eval_to_const_value_raw = const_eval::eval_to_const_value_raw_provider;
46 providers.eval_to_allocation_raw = const_eval::eval_to_allocation_raw_provider;
e74abb32 47 providers.const_caller_location = const_eval::const_caller_location;
923072b8 48 providers.eval_to_valtree = |tcx, param_env_and_value| {
6a06907d 49 let (param_env, raw) = param_env_and_value.into_parts();
923072b8
FG
50 const_eval::eval_to_valtree(tcx, param_env, raw)
51 };
52 providers.try_destructure_mir_constant = |tcx, param_env_and_value| {
53 let (param_env, value) = param_env_and_value.into_parts();
54 const_eval::try_destructure_mir_constant(tcx, param_env, value).ok()
6a06907d 55 };
04454e1e 56 providers.valtree_to_const_val = |tcx, (ty, valtree)| {
923072b8 57 const_eval::valtree_to_const_value(tcx, ty::ParamEnv::empty().and(ty), valtree)
04454e1e 58 };
923072b8 59 providers.deref_mir_constant = |tcx, param_env_and_value| {
1b1a35ee 60 let (param_env, value) = param_env_and_value.into_parts();
923072b8 61 const_eval::deref_mir_constant(tcx, param_env, value)
1b1a35ee 62 };
9ffffee4
FG
63 providers.check_validity_requirement = |tcx, (init_kind, param_env_and_ty)| {
64 util::check_validity_requirement(tcx, init_kind, param_env_and_ty)
65 };
cc61c64b 66}