#![feature(never_type)]
#![feature(try_blocks)]
#![feature(let_else)]
-#![feature(bool_to_option)]
#![feature(io_error_more)]
-#![warn(rust_2018_idioms)]
-#![allow(clippy::cast_lossless)]
-// TODO: Uncategorized. Some of these we'll want to fix, some keep ignored.
+#![feature(yeet_expr)]
+#![feature(is_some_with)]
+#![feature(nonzero_ops)]
+#![feature(local_key_cell_methods)]
+// Configure clippy and other lints
#![allow(
clippy::collapsible_else_if,
clippy::collapsible_if,
clippy::comparison_chain,
clippy::enum_variant_names,
clippy::field_reassign_with_default,
- clippy::from_over_into,
- clippy::if_same_then_else,
clippy::manual_map,
- clippy::needless_lifetimes,
clippy::new_without_default,
- clippy::redundant_closure,
- clippy::redundant_field_names,
- clippy::single_char_add_str,
- clippy::single_char_pattern,
clippy::single_match,
- clippy::unnecessary_mut_passed,
- clippy::useless_conversion,
- clippy::useless_format
+ clippy::useless_format,
+ clippy::derive_partial_eq_without_eq,
+ clippy::derive_hash_xor_eq,
+ clippy::too_many_arguments
+)]
+#![warn(
+ rust_2018_idioms,
+ clippy::cast_possible_wrap, // unsigned -> signed
+ clippy::cast_sign_loss, // signed -> unsigned
+ clippy::cast_lossless,
+ clippy::cast_possible_truncation,
)]
extern crate rustc_apfloat;
extern crate rustc_span;
extern crate rustc_target;
-mod data_race;
+mod concurrency;
mod diagnostics;
mod eval;
mod helpers;
// Make all those symbols available in the same place as our own.
pub use rustc_const_eval::interpret::*;
// Resolve ambiguity.
-pub use rustc_const_eval::interpret::{self, AllocMap, PlaceTy};
+pub use rustc_const_eval::interpret::{self, AllocMap, PlaceTy, Provenance as _};
pub use crate::shims::dlsym::{Dlsym, EvalContextExt as _};
pub use crate::shims::env::{EnvVars, EvalContextExt as _};
pub use crate::shims::tls::{EvalContextExt as _, TlsData};
pub use crate::shims::EvalContextExt as _;
-pub use crate::data_race::{
- AtomicFenceOp, AtomicReadOp, AtomicRwOp, AtomicWriteOp,
+pub use crate::concurrency::data_race::{
+ AtomicFenceOrd, AtomicReadOrd, AtomicRwOrd, AtomicWriteOrd,
EvalContextExt as DataRaceEvalContextExt,
};
pub use crate::diagnostics::{
pub use crate::eval::{
create_ecx, eval_entry, AlignmentCheck, BacktraceStyle, IsolatedOp, MiriConfig, RejectOpWith,
};
-pub use crate::helpers::EvalContextExt as HelpersEvalContextExt;
+pub use crate::helpers::{CurrentSpan, EvalContextExt as HelpersEvalContextExt};
+pub use crate::intptrcast::ProvenanceMode;
pub use crate::machine::{
- AllocExtra, Evaluator, FrameData, MiriEvalContext, MiriEvalContextExt, MiriMemoryKind, Tag,
- NUM_CPUS, PAGE_SIZE, STACK_ADDR, STACK_SIZE,
+ AllocExtra, Evaluator, FrameData, MiriEvalContext, MiriEvalContextExt, MiriMemoryKind,
+ Provenance, ProvenanceExtra, NUM_CPUS, PAGE_SIZE, STACK_ADDR, STACK_SIZE,
};
pub use crate::mono_hash_map::MonoHashMap;
pub use crate::operator::EvalContextExt as OperatorEvalContextExt;
pub use crate::range_map::RangeMap;
pub use crate::stacked_borrows::{
- CallId, EvalContextExt as StackedBorEvalContextExt, Item, Permission, PtrId, SbTag, Stack,
- Stacks,
+ CallId, EvalContextExt as StackedBorEvalContextExt, Item, Permission, SbTag, Stack, Stacks,
};
pub use crate::sync::{CondvarId, EvalContextExt as SyncEvalContextExt, MutexId, RwLockId};
pub use crate::thread::{