let const_did = tcx.def_map.borrow().get_copy(&pat.id).def_id();
let const_pty = ty::lookup_item_type(tcx, const_did);
fcx.write_ty(pat.id, const_pty.ty);
- demand::eqtype(fcx, pat.span, expected, const_pty.ty);
+ demand::suptype(fcx, pat.span, expected, const_pty.ty);
}
ast::PatIdent(bm, ref path, ref sub) if pat_is_binding(&tcx.def_map, pat) => {
let typ = fcx.local_ty(pat.span, pat.id);
--- /dev/null
+// Copyright 2014 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.
+
+const X: &'static str = "12345";
+
+fn test(s: String) -> bool {
+ match s.as_slice() {
+ X => true,
+ _ => false
+ }
+}
+
+fn main() {
+ assert!(test("12345".to_string()));
+}