Skip to content

Commit d7ba0ac

Browse files
committed
auto merge of #5579 : dbaupp/rust/rustc-typo-limit, r=catamorphism
Impose a limit so that the typo suggester only shows reasonable suggestions (i.e. don't suggest `args` when the error is `foobar`). A tiny bit of progress on #2281.
2 parents 84ddff3 + ab5346d commit d7ba0ac

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

src/librustc/middle/resolve.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -4666,7 +4666,7 @@ pub impl Resolver {
46664666
}
46674667
}
46684668
4669-
fn find_best_match_for_name(@mut self, name: &str) -> Option<~str> {
4669+
fn find_best_match_for_name(@mut self, name: &str, max_distance: uint) -> Option<~str> {
46704670
let this = &mut *self;
46714671
46724672
let mut maybes: ~[~str] = ~[];
@@ -4694,6 +4694,7 @@ pub impl Resolver {
46944694
if vec::len(values) > 0 &&
46954695
values[smallest] != uint::max_value &&
46964696
values[smallest] < str::len(name) + 2 &&
4697+
values[smallest] <= max_distance &&
46974698
maybes[smallest] != name.to_owned() {
46984699
46994700
Some(vec::swap_remove(&mut maybes, smallest))
@@ -4770,8 +4771,9 @@ pub impl Resolver {
47704771
wrong_name));
47714772
}
47724773
else {
4773-
match self.find_best_match_for_name(wrong_name) {
4774-
4774+
// limit search to 5 to reduce the number
4775+
// of stupid suggestions
4776+
match self.find_best_match_for_name(wrong_name, 5) {
47754777
Some(m) => {
47764778
self.session.span_err(expr.span,
47774779
fmt!("unresolved name: `%s`. \
@@ -5292,4 +5294,3 @@ pub fn resolve_crate(session: Session,
52925294
trait_map: trait_map
52935295
}
52945296
}
5295-
+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// error-pattern: unresolved name: `foobar`.
12+
13+
fn main(args: ~[str]) { debug!(foobar); }

0 commit comments

Comments
 (0)