From 84239dfc4ad1810d5d8ff86b4e0ad008d04632d6 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Thu, 10 Nov 2016 13:09:34 +0100 Subject: [PATCH] Work around a borrow surviving too long (fixes #37686) --- src/librustc_const_eval/pattern.rs | 3 ++- src/test/run-pass/issue-37686.rs | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/test/run-pass/issue-37686.rs 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 or the MIT license +// , 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) => {} + _ => {} + } +}