diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2016-12-15 09:58:49 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-12-15 09:58:49 -0800 |
| commit | ce61a71a7726aef6b33aa0c9cffff0661d52212c (patch) | |
| tree | 09e8c41ad67f93a38770a774c55d677f05f51725 | |
| parent | 9911f0e3e1836f2f1738023054a6f25401eb9734 (diff) | |
| parent | 5a42929111e36f46c25b3bb7b44fb9791bf1338e (diff) | |
| download | rust-ce61a71a7726aef6b33aa0c9cffff0661d52212c.tar.gz rust-ce61a71a7726aef6b33aa0c9cffff0661d52212c.zip | |
Merge pull request #38393 from brson/beta-next
[beta] Work around a borrow surviving too long (fixes #37686)
| -rw-r--r-- | src/librustc_const_eval/pattern.rs | 3 | ||||
| -rw-r--r-- | src/test/run-pass/issue-37686.rs | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/librustc_const_eval/pattern.rs b/src/librustc_const_eval/pattern.rs index 10b2a7625ca..241920f2949 100644 --- a/src/librustc_const_eval/pattern.rs +++ b/src/librustc_const_eval/pattern.rs @@ -223,7 +223,8 @@ impl<'a, 'gcx, 'tcx> PatternContext<'a, 'gcx, 'tcx> { } PatKind::Tuple(ref subpatterns, ddpos) => { - match self.tcx.tables().node_id_to_type(pat.id).sty { + let ty = self.tcx.tables().node_id_to_type(pat.id); + match ty.sty { ty::TyTuple(ref tys) => { let subpatterns = subpatterns.iter() diff --git a/src/test/run-pass/issue-37686.rs b/src/test/run-pass/issue-37686.rs new file mode 100644 index 00000000000..47881d4d530 --- /dev/null +++ b/src/test/run-pass/issue-37686.rs @@ -0,0 +1,16 @@ +// Copyright 2016 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 main() { + match (0, 0) { + (std::usize::MIN, std::usize::MAX) => {} + _ => {} + } +} |
