Auto merge of #25981 - nham:fix_E0201, r=alexcrichton
It seems better to use "associated function" here. Methods are associated functions that take a `self` parameter.
This commit is contained in:
commit
52e530af4c
@ -752,7 +752,11 @@ fn convert_methods<'a,'tcx,'i,I>(ccx: &CrateCtxt<'a, 'tcx>,
|
||||
let mut seen_methods = FnvHashSet();
|
||||
for (sig, id, ident, vis, span) in methods {
|
||||
if !seen_methods.insert(ident.name) {
|
||||
span_err!(tcx.sess, span, E0201, "duplicate method");
|
||||
let fn_desc = match sig.explicit_self.node {
|
||||
ast::SelfStatic => "associated function",
|
||||
_ => "method",
|
||||
};
|
||||
span_err!(tcx.sess, span, E0201, "duplicate {}", fn_desc);
|
||||
}
|
||||
|
||||
convert_method(ccx,
|
||||
|
@ -921,19 +921,29 @@ unsafe impl Bar for Foo { }
|
||||
"##,
|
||||
|
||||
E0201: r##"
|
||||
It is an error to define a method--a trait method or an inherent method--more
|
||||
than once.
|
||||
It is an error to define an associated function more than once.
|
||||
|
||||
For example,
|
||||
For example:
|
||||
|
||||
```
|
||||
struct Foo(u8);
|
||||
|
||||
impl Foo {
|
||||
fn bar(&self) -> bool { self.0 > 5 }
|
||||
|
||||
// error: duplicate associated function
|
||||
fn bar() {}
|
||||
}
|
||||
|
||||
trait Baz {
|
||||
fn baz(&self) -> bool;
|
||||
}
|
||||
|
||||
impl Baz for Foo {
|
||||
fn baz(&self) -> bool { true }
|
||||
|
||||
// error: duplicate method
|
||||
fn bar(&self) -> bool { self.0 > 5 }
|
||||
fn baz(&self) -> bool { self.0 > 5 }
|
||||
}
|
||||
```
|
||||
"##,
|
||||
|
@ -11,7 +11,7 @@
|
||||
struct Foo;
|
||||
impl Foo {
|
||||
fn orange(&self){}
|
||||
fn orange(&self){} //~ ERROR error: duplicate method
|
||||
fn orange(&self){} //~ ERROR duplicate method
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
@ -17,7 +17,7 @@ impl Foo {
|
||||
Foo { baz: 0 }.bar();
|
||||
}
|
||||
|
||||
fn bar() { //~ ERROR duplicate method
|
||||
fn bar() { //~ ERROR duplicate associated function
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user