about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_mir/dataflow/graphviz.rs4
-rw-r--r--src/librustc_mir/dataflow/impls/borrows.rs27
-rw-r--r--src/test/compile-fail/nll/region-ends-after-if-condition.rs2
-rw-r--r--src/test/ui/issue-45157.rs1
-rw-r--r--src/test/ui/issue-45157.stderr13
5 files changed, 14 insertions, 33 deletions
diff --git a/src/librustc_mir/dataflow/graphviz.rs b/src/librustc_mir/dataflow/graphviz.rs
index 0305e4c93b6..07585c08f6a 100644
--- a/src/librustc_mir/dataflow/graphviz.rs
+++ b/src/librustc_mir/dataflow/graphviz.rs
@@ -111,7 +111,7 @@ impl<'a, 'tcx, MWF, P> dot::Labeller<'a> for Graph<'a, 'tcx, MWF, P>
         // |         |                                  |                  | bb11[0]: active  |
         // +---------+----------------------------------+------------------+------------------+
         // | [00-00] | _7 = const Foo::twiddle(move _8) | [0c-00]          | [f3-0f]          |
-        // +---------+----------------------------------+------------------+------------------+ 
+        // +---------+----------------------------------+------------------+------------------+
         let mut v = Vec::new();
         self.node_label_internal(n, &mut v, *n, self.mbcx.mir()).unwrap();
         dot::LabelText::html(String::from_utf8(v).unwrap())
@@ -140,7 +140,7 @@ where MWF: MirWithFlowState<'tcx>,
                                          block: BasicBlock,
                                          mir: &Mir) -> io::Result<()> {
         // Header rows
-        const HDRS: [&'static str; 4] = ["ENTRY", "MIR", "GEN", "KILL"];
+        const HDRS: [&'static str; 4] = ["ENTRY", "MIR", "BLOCK GENS", "BLOCK KILLS"];
         const HDR_FMT: &'static str = "bgcolor=\"grey\"";
         write!(w, "<table><tr><td rowspan=\"{}\">", HDRS.len())?;
         write!(w, "{:?}", block.index())?;
diff --git a/src/librustc_mir/dataflow/impls/borrows.rs b/src/librustc_mir/dataflow/impls/borrows.rs
index 8f1c7945339..b7c95da09be 100644
--- a/src/librustc_mir/dataflow/impls/borrows.rs
+++ b/src/librustc_mir/dataflow/impls/borrows.rs
@@ -272,17 +272,6 @@ impl<'a, 'gcx, 'tcx> Borrows<'a, 'gcx, 'tcx> {
             }
         }
 
-        /// Represents what kind of usage we've seen.
-        enum PlaceUsageType {
-            /// No usage seen
-            None,
-            /// Has been seen as the argument to a StorageDead statement. This is required to
-            /// gracefully handle cases where user code has an unneeded 
-            StorageKilled,
-            /// Has been used in borrow-activating context
-            BorrowActivateUsage
-        }
-
         /// A MIR visitor that determines if a specific place is used in a two-phase activating
         /// manner in a given chunk of MIR.
         struct ContainsUseOfPlace<'b, 'tcx: 'b> {
@@ -404,7 +393,8 @@ impl<'a, 'gcx, 'tcx> Borrows<'a, 'gcx, 'tcx> {
                     let stmt = &block_data.statements[location.statement_index];
                     if let mir::StatementKind::EndRegion(region_scope) = stmt.kind {
                         if &ReScope(region_scope) == region {
-                            // We encountered an EndRegion statement that terminates the provided region
+                            // We encountered an EndRegion statement that terminates the provided
+                            // region
                             return true;
                         }
                     }
@@ -430,7 +420,7 @@ impl<'a, 'gcx, 'tcx> Borrows<'a, 'gcx, 'tcx> {
             /// See
             ///   - https://github.com/rust-lang/rust/issues/48431
             /// for detailed design notes.
-            /// See the TODO in the body of the function for notes on extending support to more
+            /// See the FIXME in the body of the function for notes on extending support to more
             /// general two-phased borrows.
             fn compute_activation_location(&self,
                                            start_location: Location,
@@ -473,7 +463,7 @@ impl<'a, 'gcx, 'tcx> Borrows<'a, 'gcx, 'tcx> {
                     }
 
                     if self.location_contains_use(curr_loc, assigned_place) {
-                        // TODO: Handle this case a little more gracefully. Perhaps collect
+                        // FIXME: Handle this case a little more gracefully. Perhaps collect
                         // all uses in a vector, and find the point in the CFG that dominates
                         // all of them?
                         // Right now this is sufficient though since there should only be exactly
@@ -596,7 +586,9 @@ impl<'a, 'gcx, 'tcx> BitDenotation for Borrows<'a, 'gcx, 'tcx> {
         // `_sets`.
     }
 
-    fn before_statement_effect(&self, sets: &mut BlockSets<ReserveOrActivateIndex>, location: Location) {
+    fn before_statement_effect(&self,
+                               sets: &mut BlockSets<ReserveOrActivateIndex>,
+                               location: Location) {
         debug!("Borrows::before_statement_effect sets: {:?} location: {:?}", sets, location);
         self.kill_loans_out_of_scope_at_location(sets, location);
     }
@@ -662,7 +654,6 @@ impl<'a, 'gcx, 'tcx> BitDenotation for Borrows<'a, 'gcx, 'tcx> {
 
                     // Issue #46746: Two-phase borrows handles
                     // stmts of form `Tmp = &mut Borrow` ...
-                    // XXX bob_twinkles experiment with removing this
                     match lhs {
                         Place::Local(..) | Place::Static(..) => {} // okay
                         Place::Projection(..) => {
@@ -704,7 +695,9 @@ impl<'a, 'gcx, 'tcx> BitDenotation for Borrows<'a, 'gcx, 'tcx> {
         }
     }
 
-    fn before_terminator_effect(&self, sets: &mut BlockSets<ReserveOrActivateIndex>, location: Location) {
+    fn before_terminator_effect(&self,
+                                sets: &mut BlockSets<ReserveOrActivateIndex>,
+                                location: Location) {
         debug!("Borrows::before_terminator_effect sets: {:?} location: {:?}", sets, location);
         self.kill_loans_out_of_scope_at_location(sets, location);
     }
diff --git a/src/test/compile-fail/nll/region-ends-after-if-condition.rs b/src/test/compile-fail/nll/region-ends-after-if-condition.rs
index 1128d65af95..da9187f43ae 100644
--- a/src/test/compile-fail/nll/region-ends-after-if-condition.rs
+++ b/src/test/compile-fail/nll/region-ends-after-if-condition.rs
@@ -12,7 +12,7 @@
 // in the type of `p` includes the points after `&v[0]` up to (but not
 // including) the call to `use_x`. The `else` branch is not included.
 
-// compile-flags:-Zborrowck=compare -Znll
+// compile-flags:-Zborrowck=compare -Znll -Ztwo-phase-borrows
 
 #![allow(warnings)]
 #![feature(rustc_attrs)]
diff --git a/src/test/ui/issue-45157.rs b/src/test/ui/issue-45157.rs
index cff338f76c5..a906d193d99 100644
--- a/src/test/ui/issue-45157.rs
+++ b/src/test/ui/issue-45157.rs
@@ -37,7 +37,6 @@ fn main() {
         let nref = &u.z.c;
         //~^ ERROR cannot borrow `u.z.c` as immutable because it is also borrowed as mutable [E0502]
         println!("{} {}", mref, nref)
-        //~^ ERROR cannot borrow `u.s.a` as mutable because it is also borrowed as immutable [E0502]
     }
 }
 
diff --git a/src/test/ui/issue-45157.stderr b/src/test/ui/issue-45157.stderr
index bec91f7f70d..07102f68633 100644
--- a/src/test/ui/issue-45157.stderr
+++ b/src/test/ui/issue-45157.stderr
@@ -10,17 +10,6 @@ LL |         //~^ ERROR cannot borrow `u.z.c` as immutable because it is also bo
 LL |         println!("{} {}", mref, nref)
    |                           ---- borrow later used here
 
-error[E0502]: cannot borrow `u.s.a` as mutable because it is also borrowed as immutable
-  --> $DIR/issue-45157.rs:39:27
-   |
-LL |         let nref = &u.z.c;
-   |                    ------ immutable borrow occurs here
-LL |         //~^ ERROR cannot borrow `u.z.c` as immutable because it is also borrowed as mutable [E0502]
-LL |         println!("{} {}", mref, nref)
-   |                           ^^^^  ---- borrow later used here
-   |                           |
-   |                           mutable borrow occurs here
-
-error: aborting due to 2 previous errors
+error: aborting due to previous error
 
 If you want more information on this error, try using "rustc --explain E0502"