提交 69785311 编写于 作者: M Mark Mansi

fix imports

上级 52a9eff7
use crate::borrow_check::borrow_set::BorrowSet;
use crate::borrow_check::location::LocationTable;
use crate::borrow_check::nll::ToRegionVid;
use crate::borrow_check::nll::facts::AllFacts;
use crate::borrow_check::nll::region_infer::values::LivenessValues;
use crate::borrow_check::places_conflict;
use rustc::infer::InferCtxt;
use rustc::mir::visit::TyContext;
use rustc::mir::visit::Visitor;
......@@ -15,6 +9,15 @@
use rustc::ty::{self, RegionVid, Ty};
use rustc::ty::subst::SubstsRef;
use crate::borrow_check::{
borrow_set::BorrowSet,
location::LocationTable,
nll::ToRegionVid,
facts::AllFacts,
region_infer::values::LivenessValues,
places_conflict,
};
pub(super) fn generate_constraints<'cx, 'tcx>(
infcx: &InferCtxt<'cx, 'tcx>,
param_env: ty::ParamEnv<'tcx>,
......
use crate::borrow_check::nll::type_check::Locations;
use crate::borrow_check::nll::constraints::OutlivesConstraintIndex;
use crate::borrow_check::nll::constraints::{OutlivesConstraintSet, OutlivesConstraint};
use rustc::mir::ConstraintCategory;
use rustc::ty::RegionVid;
use rustc_data_structures::graph;
use rustc_index::vec::IndexVec;
use syntax_pos::DUMMY_SP;
use crate::borrow_check::{
type_check::Locations,
constraints::OutlivesConstraintIndex,
constraints::{OutlivesConstraintSet, OutlivesConstraint},
};
/// The construct graph organizes the constraints by their end-points.
/// It can be used to view a `R1: R2` constraint as either an edge `R1
/// -> R2` or `R2 -> R1` depending on the direction type `D`.
......
use crate::borrow_check::nll::type_check::Locations;
use rustc::mir::ConstraintCategory;
use rustc::ty::RegionVid;
use rustc_data_structures::graph::scc::Sccs;
......@@ -6,6 +5,8 @@
use std::fmt;
use std::ops::Index;
use crate::borrow_check::type_check::Locations;
crate mod graph;
/// A set of NLL region constraints. These include "outlives"
......
//! Print diagnostics to explain why values are borrowed.
use std::collections::VecDeque;
use crate::borrow_check::borrow_set::BorrowData;
use crate::borrow_check::nll::region_infer::Cause;
use crate::borrow_check::nll::ConstraintDescription;
use crate::borrow_check::{MirBorrowckCtxt, WriteKind};
use rustc::mir::{
CastKind, ConstraintCategory, FakeReadCause, Local, Location, Body, Operand, Place, Rvalue,
Statement, StatementKind, TerminatorKind,
......@@ -16,6 +14,13 @@
use syntax_pos::Span;
use syntax_pos::symbol::Symbol;
use crate::borrow_check::{
borrow_set::BorrowData,
region_infer::Cause,
nll::ConstraintDescription,
MirBorrowckCtxt, WriteKind,
};
use super::{UseSpans, find_use, RegionName};
#[derive(Debug)]
......
use std::collections::VecDeque;
use std::rc::Rc;
use crate::borrow_check::nll::region_infer::{Cause, RegionInferenceContext};
use crate::borrow_check::nll::ToRegionVid;
use crate::borrow_check::{nll::ToRegionVid, region_infer::{Cause, RegionInferenceContext}};
use crate::util::liveness::{self, DefUse};
use rustc::mir::visit::{MirVisitable, PlaceContext, Visitor};
use rustc::mir::{Local, Location, Body};
......
......@@ -13,7 +13,7 @@
use smallvec::SmallVec;
use crate::borrow_check::nll::region_infer::RegionInferenceContext;
use crate::borrow_check::region_infer::RegionInferenceContext;
use super::{
RegionName, RegionNameSource, ErrorConstraintInfo, ErrorReportingCtx, RegionErrorNamingCtx,
......
use crate::borrow_check::nll::constraints::OutlivesConstraint;
use crate::borrow_check::nll::region_infer::RegionInferenceContext;
use crate::borrow_check::nll::type_check::Locations;
use crate::borrow_check::nll::universal_regions::DefiningTy;
use crate::borrow_check::nll::ConstraintDescription;
use crate::borrow_check::Upvar;
use crate::util::borrowck_errors;
//! Error reporting machinery for lifetime errors.
use rustc::hir::def_id::DefId;
use rustc::infer::error_reporting::nice_region_error::NiceRegionError;
use rustc::infer::InferCtxt;
......@@ -19,6 +14,17 @@
use syntax_pos::Span;
use syntax_pos::symbol::Symbol;
use crate::util::borrowck_errors;
use crate::borrow_check::{
constraints::OutlivesConstraint,
region_infer::RegionInferenceContext,
type_check::Locations,
universal_regions::DefiningTy,
nll::ConstraintDescription,
Upvar,
};
use super::{OutlivesSuggestionBuilder, RegionName, RegionNameSource, RegionErrorNamingCtx};
impl ConstraintDescription for ConstraintCategory {
......
......@@ -15,14 +15,13 @@
use syntax_pos::{Span, symbol::Symbol, DUMMY_SP};
use crate::borrow_check::{
nll::region_infer::RegionInferenceContext,
nll::universal_regions::DefiningTy,
diagnostics::region_errors::ErrorReportingCtx,
region_infer::RegionInferenceContext,
universal_regions::DefiningTy,
nll::ToRegionVid,
Upvar,
};
use super::region_errors::ErrorReportingCtx;
/// A name for a particular region used in emitting diagnostics. This name could be a generated
/// name like `'1`, a name used by the user like `'a`, or a name like `'static`.
#[derive(Debug, Clone)]
......
use crate::borrow_check::nll::region_infer::RegionInferenceContext;
use crate::borrow_check::nll::ToRegionVid;
use crate::borrow_check::{nll::ToRegionVid, region_infer::RegionInferenceContext};
use crate::borrow_check::Upvar;
use rustc::mir::{Local, Body};
use rustc::ty::{RegionVid, TyCtxt};
......
use crate::borrow_check::borrow_set::BorrowSet;
use crate::borrow_check::location::LocationTable;
use crate::borrow_check::{JustWrite, WriteAndRead};
use crate::borrow_check::{AccessDepth, Deep, Shallow};
use crate::borrow_check::{ReadOrWrite, Activation, Read, Reservation, Write};
use crate::borrow_check::{LocalMutationIsAllowed, MutateMode};
use crate::borrow_check::ArtificialField;
use crate::borrow_check::{ReadKind, WriteKind};
use crate::borrow_check::nll::facts::AllFacts;
use crate::borrow_check::path_utils::*;
use crate::dataflow::indexes::BorrowIndex;
use rustc::ty::{self, TyCtxt};
use rustc::mir::visit::Visitor;
use rustc::mir::{BasicBlock, Location, Body, Place, ReadOnlyBodyAndCache, Rvalue};
......@@ -17,6 +6,17 @@
use rustc::mir::{Operand, BorrowKind};
use rustc_data_structures::graph::dominators::Dominators;
use crate::dataflow::indexes::BorrowIndex;
use crate::borrow_check::{
borrow_set::BorrowSet,
location::LocationTable,
facts::AllFacts,
path_utils::*,
JustWrite, WriteAndRead, AccessDepth, Deep, Shallow, ReadOrWrite, Activation, Read,
Reservation, Write, LocalMutationIsAllowed, MutateMode, ArtificialField, ReadKind, WriteKind,
};
pub(super) fn generate_invalidates<'tcx>(
tcx: TyCtxt<'tcx>,
param_env: ty::ParamEnv<'tcx>,
......
//! This query borrow-checks the MIR to (further) ensure it is not broken.
use crate::borrow_check::nll::region_infer::RegionInferenceContext;
use rustc::hir::{self, HirId};
use rustc::hir::Node;
use rustc::hir::def_id::DefId;
......@@ -47,20 +46,30 @@
use self::prefixes::PrefixSet;
use self::MutateMode::{JustWrite, WriteAndRead};
use self::diagnostics::AccessKind;
use self::region_infer::RegionInferenceContext;
use self::path_utils::*;
crate mod borrow_set;
mod diagnostics;
mod flows;
mod location;
mod path_utils;
crate mod place_ext;
crate mod places_conflict;
mod prefixes;
mod used_muts;
pub(crate) mod nll;
mod constraint_generation;
mod facts;
mod invalidation;
mod renumber;
mod member_constraints;
crate mod constraints;
crate mod universal_regions;
crate mod type_check;
crate mod region_infer;
crate mod borrow_set;
crate mod place_ext;
crate mod places_conflict;
crate mod nll;
// FIXME(eddyb) perhaps move this somewhere more centrally.
#[derive(Debug)]
......
use crate::borrow_check::borrow_set::BorrowSet;
use crate::borrow_check::location::LocationTable;
use crate::borrow_check::nll::facts::AllFactsExt;
use crate::borrow_check::nll::type_check::{MirTypeckResults, MirTypeckRegionConstraints};
use crate::borrow_check::nll::region_infer::values::RegionValueElements;
use crate::dataflow::move_paths::{InitLocation, MoveData, InitKind};
use crate::dataflow::FlowAtLocation;
use crate::dataflow::MaybeInitializedPlaces;
use crate::transform::MirSource;
use crate::borrow_check::Upvar;
//! The entry point of the NLL borrow checker.
use rustc::hir::def_id::DefId;
use rustc::infer::InferCtxt;
use rustc::mir::{ClosureOutlivesSubject, ClosureRegionRequirements,
......@@ -27,24 +19,24 @@
use self::mir_util::PassWhere;
use polonius_engine::{Algorithm, Output};
use crate::util as mir_util;
use crate::util::pretty;
use crate::dataflow::indexes::BorrowIndex;
use crate::dataflow::move_paths::{InitLocation, MoveData, MovePathIndex, InitKind};
use crate::dataflow::FlowAtLocation;
use crate::dataflow::MaybeInitializedPlaces;
use crate::transform::MirSource;
mod constraint_generation;
mod facts;
mod invalidation;
mod renumber;
mod member_constraints;
crate mod constraints;
crate mod universal_regions;
crate mod type_check;
crate mod region_infer;
use self::facts::{AllFacts, RustcFacts};
use self::region_infer::RegionInferenceContext;
use self::universal_regions::UniversalRegions;
use crate::borrow_check::{
borrow_set::BorrowSet,
location::{LocationIndex, LocationTable},
facts::{AllFacts, AllFactsExt, RustcFacts},
region_infer::{RegionInferenceContext, values::RegionValueElements},
universal_regions::UniversalRegions,
type_check::{self, MirTypeckResults, MirTypeckRegionConstraints},
Upvar, renumber, constraint_generation, invalidation,
};
crate type PoloniusOutput = Output<RustcFacts>;
......
......@@ -2,11 +2,12 @@
//! libgraphviz traits, specialized to attaching borrowck analysis
//! data to rendered labels.
use super::*;
use crate::borrow_check::nll::constraints::OutlivesConstraint;
use std::borrow::Cow;
use std::io::{self, Write};
use super::*;
use crate::borrow_check::constraints::OutlivesConstraint;
impl<'tcx> RegionInferenceContext<'tcx> {
/// Write out the region constraint graph.
crate fn dump_graphviz_raw_constraints(&self, mut w: &mut dyn Write) -> io::Result<()> {
......
......@@ -23,29 +23,26 @@
use syntax_pos::symbol::Symbol;
use crate::borrow_check::{
nll::{
constraints::{
graph::NormalConstraintGraph,
ConstraintSccIndex,
OutlivesConstraint,
OutlivesConstraintSet,
},
member_constraints::{MemberConstraintSet, NllMemberConstraintIndex},
region_infer::values::{
PlaceholderIndices, RegionElement, ToElementIndex
},
type_check::{free_region_relations::UniversalRegionRelations, Locations},
constraints::{
graph::NormalConstraintGraph,
ConstraintSccIndex,
OutlivesConstraint,
OutlivesConstraintSet,
},
member_constraints::{MemberConstraintSet, NllMemberConstraintIndex},
region_infer::values::{
PlaceholderIndices, RegionElement, ToElementIndex, LivenessValues, RegionValueElements,
RegionValues,
},
type_check::{free_region_relations::UniversalRegionRelations, Locations},
diagnostics::{
OutlivesSuggestionBuilder, RegionErrorNamingCtx,
},
nll::{ToRegionVid, PoloniusOutput},
universal_regions::UniversalRegions,
Upvar,
};
use self::values::{LivenessValues, RegionValueElements, RegionValues};
use super::universal_regions::UniversalRegions;
use super::{PoloniusOutput, ToRegionVid};
mod dump_mir;
mod graphviz;
......
use crate::borrow_check::nll::constraints::OutlivesConstraint;
use crate::borrow_check::nll::region_infer::TypeTest;
use crate::borrow_check::nll::type_check::{Locations, MirTypeckRegionConstraints};
use crate::borrow_check::nll::universal_regions::UniversalRegions;
use crate::borrow_check::nll::ToRegionVid;
use rustc::infer::canonical::QueryRegionConstraints;
use rustc::infer::canonical::QueryOutlivesConstraint;
use rustc::infer::outlives::env::RegionBoundPairs;
......@@ -14,6 +9,14 @@
use rustc::ty::{self, TyCtxt};
use syntax_pos::DUMMY_SP;
use crate::borrow_check::{
constraints::OutlivesConstraint,
region_infer::TypeTest,
type_check::{Locations, MirTypeckRegionConstraints},
universal_regions::UniversalRegions,
nll::ToRegionVid,
};
crate struct ConstraintConversion<'a, 'tcx> {
infcx: &'a InferCtxt<'a, 'tcx>,
tcx: TyCtxt<'tcx>,
......
use crate::borrow_check::nll::type_check::constraint_conversion;
use crate::borrow_check::nll::type_check::{Locations, MirTypeckRegionConstraints};
use crate::borrow_check::nll::universal_regions::UniversalRegions;
use crate::borrow_check::nll::ToRegionVid;
use rustc::infer::canonical::QueryRegionConstraints;
use rustc::infer::outlives::free_region_map::FreeRegionRelations;
use rustc::infer::region_constraints::GenericKind;
......@@ -14,6 +11,13 @@
use std::rc::Rc;
use syntax_pos::DUMMY_SP;
use crate::borrow_check::{
type_check::constraint_conversion,
type_check::{Locations, MirTypeckRegionConstraints},
universal_regions::UniversalRegions,
nll::ToRegionVid,
};
#[derive(Debug)]
crate struct UniversalRegionRelations<'tcx> {
universal_regions: Rc<UniversalRegions<'tcx>>,
......
......@@ -7,7 +7,6 @@
//! `RETURN_PLACE` the MIR arguments) are always fully normalized (and
//! contain revealed `impl Trait` values).
use crate::borrow_check::nll::universal_regions::UniversalRegions;
use rustc::infer::LateBoundRegionConversionTime;
use rustc::mir::*;
use rustc::ty::Ty;
......@@ -15,6 +14,8 @@
use rustc_index::vec::Idx;
use syntax_pos::Span;
use crate::borrow_check::universal_regions::UniversalRegions;
use super::{Locations, TypeChecker};
impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
......
use crate::borrow_check::nll::region_infer::values::{PointIndex, RegionValueElements};
use crate::util::liveness::{categorize, DefUse};
use rustc::mir::visit::{PlaceContext, Visitor};
use rustc::mir::{Local, Location, ReadOnlyBodyAndCache};
use rustc_index::vec::{Idx, IndexVec};
use rustc_data_structures::vec_linked_list as vll;
use crate::util::liveness::{categorize, DefUse};
use crate::borrow_check::region_infer::values::{PointIndex, RegionValueElements};
/// A map that cross references each local with the locations where it
/// is defined (assigned), used, or dropped. Used during liveness
/// computation.
......
use crate::borrow_check::location::LocationTable;
use crate::borrow_check::nll::constraints::OutlivesConstraintSet;
use crate::borrow_check::nll::facts::{AllFacts, AllFactsExt};
use crate::borrow_check::nll::region_infer::values::RegionValueElements;
use crate::borrow_check::nll::universal_regions::UniversalRegions;
use crate::borrow_check::nll::ToRegionVid;
use crate::dataflow::move_paths::MoveData;
use crate::dataflow::FlowAtLocation;
use crate::dataflow::MaybeInitializedPlaces;
use rustc::mir::{Body, Local, ReadOnlyBodyAndCache};
use rustc::ty::{RegionVid, TyCtxt};
use rustc_data_structures::fx::FxHashSet;
use std::rc::Rc;
use crate::dataflow::move_paths::MoveData;
use crate::dataflow::FlowAtLocation;
use crate::dataflow::MaybeInitializedPlaces;
use crate::borrow_check::{
location::LocationTable,
constraints::OutlivesConstraintSet,
facts::{AllFacts, AllFactsExt},
region_infer::values::RegionValueElements,
universal_regions::UniversalRegions,
nll::ToRegionVid,
};
use super::TypeChecker;
mod local_use_map;
......
use crate::borrow_check::nll::region_infer::values::{self, PointIndex, RegionValueElements};
use crate::borrow_check::nll::type_check::liveness::local_use_map::LocalUseMap;
use crate::borrow_check::nll::type_check::liveness::polonius;
use crate::borrow_check::nll::type_check::NormalizeLocation;
use crate::borrow_check::nll::type_check::TypeChecker;
use crate::dataflow::indexes::MovePathIndex;
use crate::dataflow::move_paths::MoveData;
use crate::dataflow::{FlowAtLocation, FlowsAtLocation, MaybeInitializedPlaces};
use rustc::infer::canonical::QueryRegionConstraints;
use rustc::mir::{BasicBlock, ConstraintCategory, Local, Location, ReadOnlyBodyAndCache};
use rustc::traits::query::dropck_outlives::DropckOutlivesResult;
......@@ -16,6 +8,18 @@
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
use std::rc::Rc;
use crate::dataflow::indexes::MovePathIndex;
use crate::dataflow::move_paths::MoveData;
use crate::dataflow::{FlowAtLocation, FlowsAtLocation, MaybeInitializedPlaces};
use crate::borrow_check::{
region_infer::values::{self, PointIndex, RegionValueElements},
type_check::liveness::local_use_map::LocalUseMap,
type_check::liveness::polonius,
type_check::NormalizeLocation,
type_check::TypeChecker,
};
/// This is the heart of the liveness computation. For each variable X
/// that requires a liveness computation, it walks over all the uses
/// of X and does a reverse depth-first search ("trace") through the
......
......@@ -55,9 +55,32 @@
use crate::dataflow::move_paths::MoveData;
use crate::transform::promote_consts::should_suggest_const_in_array_repeat_expressions_attribute;
use crate::transform::promote_consts::should_suggest_const_in_array_repeat_expressions_attribute;
use crate::dataflow::move_paths::MoveData;
use crate::dataflow::FlowAtLocation;
use crate::dataflow::MaybeInitializedPlaces;
use crate::borrow_check::{
borrow_set::BorrowSet,
location::LocationTable,
constraints::{OutlivesConstraintSet, OutlivesConstraint},
member_constraints::MemberConstraintSet,
facts::AllFacts,
region_infer::values::{
LivenessValues, PlaceholderIndex, PlaceholderIndices, RegionValueElements,
},
region_infer::{ClosureRegionRequirementsExt, TypeTest},
type_check::free_region_relations::{
CreateResult, UniversalRegionRelations,
},
universal_regions::{DefiningTy, UniversalRegions},
nll::ToRegionVid,
renumber,
};
macro_rules! span_mirbug {
($context:expr, $elem:expr, $($message:tt)*) => ({
$crate::borrow_check::nll::type_check::mirbug(
$crate::borrow_check::type_check::mirbug(
$context.tcx(),
$context.last_span,
&format!(
......
use crate::borrow_check::nll::constraints::OutlivesConstraint;
use crate::borrow_check::nll::type_check::{BorrowCheckContext, Locations};
use rustc::infer::nll_relate::{TypeRelating, TypeRelatingDelegate, NormalizationStrategy};
use rustc::infer::{InferCtxt, NLLRegionVariableOrigin};
use rustc::mir::ConstraintCategory;
......@@ -8,6 +6,9 @@
use rustc::ty::relate::TypeRelation;
use rustc::ty::{self, Ty};
use crate::borrow_check::constraints::OutlivesConstraint;
use crate::borrow_check::type_check::{BorrowCheckContext, Locations};
/// Adds sufficient constraints to ensure that `a R b` where `R` depends on `v`:
///
/// - "Covariant" `a <: b`
......
......@@ -25,7 +25,7 @@
use rustc_errors::DiagnosticBuilder;
use std::iter;
use super::ToRegionVid;
use crate::borrow_check::nll::ToRegionVid;
#[derive(Debug)]
pub struct UniversalRegions<'tcx> {
......
use crate::borrow_check::borrow_set::{BorrowSet, BorrowData};
use crate::borrow_check::place_ext::PlaceExt;
use rustc::mir::{self, Location, Place, PlaceBase, Body};
use rustc::ty::{self, TyCtxt};
use rustc::ty::RegionVid;
......@@ -10,9 +7,14 @@
use rustc_index::vec::{Idx, IndexVec};
use crate::dataflow::{BitDenotation, BottomValue, GenKillSet};
use crate::borrow_check::nll::region_infer::RegionInferenceContext;
use crate::borrow_check::nll::ToRegionVid;
use crate::borrow_check::places_conflict;
use crate::borrow_check::{
borrow_set::{BorrowSet, BorrowData},
place_ext::PlaceExt,
region_infer::RegionInferenceContext,
nll::ToRegionVid,
places_conflict,
};
use std::rc::Rc;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册