X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_mir%2Fbuild%2Fmatches%2Fmod.rs;h=28d2a397f3ed61bc9b15811e7b5f34210612d97a;hb=9a3e22e32f634014b02f13495aef3f0e8cdbb1b7;hp=2f1e8c03f2f7eefddb32199b0b551ac764eaa165;hpb=5ce3f740964b7a19020a18c3ef289db1cd45837b;p=rust.git diff --git a/src/librustc_mir/build/matches/mod.rs b/src/librustc_mir/build/matches/mod.rs index 2f1e8c03f2f..28d2a397f3e 100644 --- a/src/librustc_mir/build/matches/mod.rs +++ b/src/librustc_mir/build/matches/mod.rs @@ -3,11 +3,11 @@ //! includes the high-level algorithm, the submodules contain the //! details. -use build::scope::{CachedBlock, DropKind}; -use build::ForGuard::{self, OutsideGuard, RefWithinGuard, ValWithinGuard}; -use build::{BlockAnd, BlockAndExtension, Builder}; -use build::{GuardFrame, GuardFrameLocal, LocalsForNode}; -use hair::*; +use crate::build::scope::{CachedBlock, DropKind}; +use crate::build::ForGuard::{self, OutsideGuard, RefWithinGuard, ValWithinGuard}; +use crate::build::{BlockAnd, BlockAndExtension, Builder}; +use crate::build::{GuardFrame, GuardFrameLocal, LocalsForNode}; +use crate::hair::{self, *}; use rustc::mir::*; use rustc::ty::{self, CanonicalUserTypeAnnotation, Ty}; use rustc::ty::layout::VariantIdx; @@ -283,9 +283,11 @@ pub(super) fn expr_into_pattern( }, .. }, - user_ty: pat_ascription_ty, - variance: _, - user_ty_span, + ascription: hair::pattern::Ascription { + user_ty: pat_ascription_ty, + variance: _, + user_ty_span, + }, } => { let place = self.storage_live_binding(block, var, irrefutable_pat.span, OutsideGuard); @@ -560,9 +562,11 @@ pub(super) fn visit_bindings( } PatternKind::AscribeUserType { ref subpattern, - ref user_ty, - user_ty_span, - variance: _, + ascription: hair::pattern::Ascription { + ref user_ty, + user_ty_span, + variance: _, + }, } => { // This corresponds to something like // @@ -727,7 +731,7 @@ impl<'a, 'gcx, 'tcx> Builder<'a, 'gcx, 'tcx> { /// /// The return value is a list of "otherwise" blocks. These are /// points in execution where we found that *NONE* of the - /// candidates apply. In principle, this means that the input + /// candidates apply. In principle, this means that the input /// list was not exhaustive, though at present we sometimes are /// not smart enough to recognize all exhaustive inputs. /// @@ -874,7 +878,7 @@ fn join_otherwise_blocks(&mut self, span: Span, mut otherwise: Vec) } } - /// This is the most subtle part of the matching algorithm. At + /// This is the most subtle part of the matching algorithm. At /// this point, the input candidates have been fully simplified, /// and so we know that all remaining match-pairs require some /// sort of test. To decide what test to do, we take the highest @@ -894,10 +898,10 @@ fn join_otherwise_blocks(&mut self, span: Span, mut otherwise: Vec) /// 4. etc. /// /// Once we know what sort of test we are going to perform, this - /// test may also help us with other candidates. So we walk over + /// Tests may also help us with other candidates. So we walk over /// the candidates (from high to low priority) and check. This /// gives us, for each outcome of the test, a transformed list of - /// candidates. For example, if we are testing the current + /// candidates. For example, if we are testing the current /// variant of `x.0`, and we have a candidate `{x.0 @ Some(v), x.1 /// @ 22}`, then we would have a resulting candidate of `{(x.0 as /// Some).0 @ v, x.1 @ 22}`. Note that the first match-pair is now @@ -1093,7 +1097,7 @@ fn test_candidates<'pat>( /// for the case where the guard fails. /// /// Note: we check earlier that if there is a guard, there cannot - /// be move bindings. This isn't really important for the + /// be move bindings. This isn't really important for the /// self-consistency of this fn, but the reason for it should be /// clear: after we've done the assignments, if there were move /// bindings, further tests would be a use-after-move (which would