08c77a6eb4
"no method" errors on standard library types The standard library developer can annotate methods on e.g. `BTreeSet::push` with `#[rustc_confusables("insert")]`. When the user mistypes `btreeset.push()`, `BTreeSet::insert` will be suggested if there are no other candidates to suggest.
48 lines
1.2 KiB
Rust
48 lines
1.2 KiB
Rust
// aux-build: rustc_confusables_across_crate.rs
|
|
|
|
#![feature(rustc_attrs)]
|
|
|
|
extern crate rustc_confusables_across_crate;
|
|
|
|
use rustc_confusables_across_crate::BTreeSet;
|
|
|
|
fn main() {
|
|
// Misspellings (similarly named methods) take precedence over `rustc_confusables`.
|
|
let x = BTreeSet {};
|
|
x.inser();
|
|
//~^ ERROR no method named
|
|
//~| HELP there is a method with a similar name
|
|
x.foo();
|
|
//~^ ERROR no method named
|
|
x.push();
|
|
//~^ ERROR no method named
|
|
//~| HELP you might have meant to use `insert`
|
|
x.test();
|
|
//~^ ERROR no method named
|
|
x.pulled();
|
|
//~^ ERROR no method named
|
|
//~| HELP there is a method with a similar name
|
|
}
|
|
|
|
struct Bar;
|
|
|
|
impl Bar {
|
|
#[rustc_confusables()]
|
|
//~^ ERROR expected at least one confusable name
|
|
fn baz() {}
|
|
|
|
#[rustc_confusables]
|
|
//~^ ERROR malformed `rustc_confusables` attribute input
|
|
//~| HELP must be of the form
|
|
fn qux() {}
|
|
|
|
#[rustc_confusables(invalid_meta_item)]
|
|
//~^ ERROR expected a quoted string literal
|
|
//~| HELP consider surrounding this with quotes
|
|
fn quux() {}
|
|
}
|
|
|
|
#[rustc_confusables("blah")]
|
|
//~^ ERROR attribute should be applied to an inherent method
|
|
fn not_inherent_impl_method() {}
|