diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index f2347813ce8c5..20d408a8a52be 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -4336,9 +4336,11 @@ impl Resolver { self.record_def(pattern.id, def); } FoundConst(_) => { - self.resolve_error(pattern.span, - "only refutable patterns \ - allowed here"); + let msg = format!("only irrefutable patterns \ + allowed here; `{}` is a static \ + constant", + interner_get(renamed)); + self.resolve_error(pattern.span, msg); } BareIdentifierPatternUnresolved => { debug2!("(resolving pattern) binding `{}`", diff --git a/src/test/compile-fail/refutable-static-in-binding-position.rs b/src/test/compile-fail/refutable-static-in-binding-position.rs new file mode 100644 index 0000000000000..3c4671ed66fdb --- /dev/null +++ b/src/test/compile-fail/refutable-static-in-binding-position.rs @@ -0,0 +1,20 @@ +// Copyright 2012-2013 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. + +use b = m::a; + +mod m { + pub static a : int = 4; +} + +fn main() { + let b = 4; //~ERROR only irrefutable patterns allowed here + println!("{}", b); +}