diff options
| author | bors <bors@rust-lang.org> | 2018-07-18 17:13:11 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-07-18 17:13:11 +0000 |
| commit | 58cc626de3301192d5d8c6dcbde43b5b44211ae2 (patch) | |
| tree | 59829d59479b725a1eb33767b9d0a6d16b598662 /src | |
| parent | 5f2b325f64ed6caa7179f3e04913db437656ec7e (diff) | |
| parent | 9ea66dc4c5570fc87185e0d68bb2846a9a452624 (diff) | |
| download | rust-1.27.2.tar.gz rust-1.27.2.zip | |
Auto merge of #52481 - Mark-Simulacrum:stable-next, r=alexcrichton 1.27.2
1.27.2 stable release This is essentially a backport of https://github.com/rust-lang/rust/pull/52232. I've set the release date for Friday, July 20th. r? @alexcrichton
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap/channel.rs | 2 | ||||
| -rw-r--r-- | src/librustc/middle/mem_categorization.rs | 2 | ||||
| -rw-r--r-- | src/librustc_typeck/check/regionck.rs | 9 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-52213.rs | 24 |
4 files changed, 32 insertions, 5 deletions
diff --git a/src/bootstrap/channel.rs b/src/bootstrap/channel.rs index 25a709ccbb0..2718db4cea5 100644 --- a/src/bootstrap/channel.rs +++ b/src/bootstrap/channel.rs @@ -24,7 +24,7 @@ use Build; use config::Config; // The version number -pub const CFG_RELEASE_NUM: &str = "1.27.1"; +pub const CFG_RELEASE_NUM: &str = "1.27.2"; pub struct GitInfo { inner: Option<Info>, diff --git a/src/librustc/middle/mem_categorization.rs b/src/librustc/middle/mem_categorization.rs index fa668678ece..0c05740423f 100644 --- a/src/librustc/middle/mem_categorization.rs +++ b/src/librustc/middle/mem_categorization.rs @@ -1325,7 +1325,7 @@ impl<'a, 'gcx, 'tcx> MemCategorizationContext<'a, 'gcx, 'tcx> { ref ty => span_bug!(pat.span, "tuple pattern unexpected type {:?}", ty), }; for (i, subpat) in subpats.iter().enumerate_and_adjust(expected_len, ddpos) { - let subpat_ty = self.pat_ty_unadjusted(&subpat)?; // see (*2) + let subpat_ty = self.pat_ty_adjusted(&subpat)?; // see (*2) let interior = InteriorField(FieldIndex(i, Name::intern(&i.to_string()))); let subcmt = Rc::new(self.cat_imm_interior(pat, cmt.clone(), subpat_ty, interior)); self.cat_pattern_(subcmt, &subpat, op)?; diff --git a/src/librustc_typeck/check/regionck.rs b/src/librustc_typeck/check/regionck.rs index 5889803d4d5..0383faf8755 100644 --- a/src/librustc_typeck/check/regionck.rs +++ b/src/librustc_typeck/check/regionck.rs @@ -105,7 +105,10 @@ use rustc::hir::{self, PatKind}; // a variation on try that just returns unit macro_rules! ignore_err { - ($e:expr) => (match $e { Ok(e) => e, Err(_) => return () }) + ($e:expr) => (match $e { Ok(e) => e, Err(_) => { + debug!("ignoring mem-categorization error!"); + return () + }}) } /////////////////////////////////////////////////////////////////////////// @@ -1036,7 +1039,7 @@ impl<'a, 'gcx, 'tcx> RegionCtxt<'a, 'gcx, 'tcx> { debug!("link_pattern(discr_cmt={:?}, root_pat={:?})", discr_cmt, root_pat); - let _ = self.with_mc(|mc| { + ignore_err!(self.with_mc(|mc| { mc.cat_pattern(discr_cmt, root_pat, |sub_cmt, sub_pat| { match sub_pat.node { // `ref x` pattern @@ -1051,7 +1054,7 @@ impl<'a, 'gcx, 'tcx> RegionCtxt<'a, 'gcx, 'tcx> { _ => {} } }) - }); + })); } /// Link lifetime of borrowed pointer resulting from autoref to lifetimes in the value being diff --git a/src/test/compile-fail/issue-52213.rs b/src/test/compile-fail/issue-52213.rs new file mode 100644 index 00000000000..810379c63d3 --- /dev/null +++ b/src/test/compile-fail/issue-52213.rs @@ -0,0 +1,24 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +fn transmute_lifetime<'a, 'b, T>(t: &'a (T,)) -> &'b T { + match (&t,) { //~ ERROR cannot infer an appropriate lifetime + ((u,),) => u, + } +} + +fn main() { + let x = { + let y = Box::new((42,)); + transmute_lifetime(&y) + }; + + println!("{}", x); +} |
