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) => {} + _ => {} + } +}