]> git.lizzy.rs Git - rust.git/commitdiff
rustc: Don't die on 0-length pattern idents
authorAlex Crichton <alex@alexcrichton.com>
Sat, 26 Apr 2014 17:24:47 +0000 (10:24 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Sat, 26 Apr 2014 17:24:47 +0000 (10:24 -0700)
These often crop up when using default methods that don't actually bind their
argument names.

Closes #13775

src/librustc/middle/lint.rs
src/test/run-pass/issue-13775.rs [new file with mode: 0644]

index 51aafb90ac6569f73b66b359fb5cfc3761b338e7..f8c1aaf674cd417be912172d268e715c1be508d4 100644 (file)
@@ -1239,7 +1239,7 @@ fn check_pat_uppercase_variable(cx: &Context, p: &ast::Pat) {
                     // last identifier alone is right choice for this lint.
                     let ident = path.segments.last().unwrap().identifier;
                     let s = token::get_ident(ident);
-                    if s.get().char_at(0).is_uppercase() {
+                    if s.get().len() > 0 && s.get().char_at(0).is_uppercase() {
                         cx.span_lint(
                             UppercaseVariables,
                             path.span,
diff --git a/src/test/run-pass/issue-13775.rs b/src/test/run-pass/issue-13775.rs
new file mode 100644 (file)
index 0000000..8731662
--- /dev/null
@@ -0,0 +1,15 @@
+// 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.
+
+trait Foo {
+    fn bar(&self, int) {}
+}
+
+fn main() {}