Some(Node::Item(hir::Item {
node: ItemKind::Fn(.., body_id),
..
+ })) |
+ Some(Node::ImplItem(hir::ImplItem {
+ node: hir::ImplItemKind::Method(_, body_id),
+ ..
+ })) |
+ Some(Node::TraitItem(hir::TraitItem {
+ node: hir::TraitItemKind::Method(.., hir::TraitMethod::Provided(body_id)),
+ ..
})) => {
let body = hir.body(*body_id);
sugg_call = body.arguments.iter()
.map(|arg| match &arg.pat.node {
- hir::PatKind::Binding(_, _, ident, None) => ident.to_string(),
+ hir::PatKind::Binding(_, _, ident, None)
+ if ident.name != kw::SelfLower => ident.to_string(),
_ => "_".to_string(),
}).collect::<Vec<_>>().join(", ");
}
_ => {}
}
}
+ Some(Node::ForeignItem(hir::ForeignItem {
+ node: hir::ForeignItemKind::Fn(_, idents, _),
+ ..
+ })) |
+ Some(Node::TraitItem(hir::TraitItem {
+ node: hir::TraitItemKind::Method(.., hir::TraitMethod::Required(idents)),
+ ..
+ })) => sugg_call = idents.iter()
+ .map(|ident| if ident.name != kw::SelfLower {
+ ident.to_string()
+ } else {
+ "_".to_string()
+ }).collect::<Vec<_>>()
+ .join(", "),
_ => {}
}
};
error[E0423]: expected value, found struct variant `E::B`
- --> $DIR/fn-or-tuple-struct-without-args.rs:25:16
+ --> $DIR/fn-or-tuple-struct-without-args.rs:36:16
|
LL | let _: E = E::B;
| ^^^-
| did you mean `E::B { /* fields */ }`?
error[E0308]: mismatched types
- --> $DIR/fn-or-tuple-struct-without-args.rs:18:20
+ --> $DIR/fn-or-tuple-struct-without-args.rs:29:20
|
LL | fn foo(a: usize, b: usize) -> usize { a }
| ----------------------------------- fn(usize, usize) -> usize {foo} defined here
found type `fn(usize, usize) -> usize {foo}`
error[E0308]: mismatched types
- --> $DIR/fn-or-tuple-struct-without-args.rs:19:16
+ --> $DIR/fn-or-tuple-struct-without-args.rs:30:16
|
LL | struct S(usize, usize);
| ----------------------- fn(usize, usize) -> S {S} defined here
found type `fn(usize, usize) -> S {S}`
error[E0308]: mismatched types
- --> $DIR/fn-or-tuple-struct-without-args.rs:20:20
+ --> $DIR/fn-or-tuple-struct-without-args.rs:31:20
|
LL | fn bar() -> usize { 42 }
| ----------------- fn() -> usize {bar} defined here
found type `fn() -> usize {bar}`
error[E0308]: mismatched types
- --> $DIR/fn-or-tuple-struct-without-args.rs:21:16
+ --> $DIR/fn-or-tuple-struct-without-args.rs:32:16
|
LL | struct V();
| ----------- fn() -> V {V} defined here
found type `fn() -> V {V}`
error[E0308]: mismatched types
- --> $DIR/fn-or-tuple-struct-without-args.rs:22:20
+ --> $DIR/fn-or-tuple-struct-without-args.rs:33:20
|
LL | fn baz(x: usize, y: usize) -> usize { x }
| ----------------------------------- fn(usize, usize) -> usize {<_ as T>::baz} defined here
| ^^^^^^
| |
| expected usize, found fn item
- | help: use parentheses to call this function: `T::baz(...)`
+ | help: use parentheses to call this function: `T::baz(x, y)`
|
= note: expected type `usize`
found type `fn(usize, usize) -> usize {<_ as T>::baz}`
error[E0308]: mismatched types
- --> $DIR/fn-or-tuple-struct-without-args.rs:23:20
+ --> $DIR/fn-or-tuple-struct-without-args.rs:34:20
|
-LL | fn bat() -> usize { 42 }
- | ----------------- fn() -> usize {<_ as T>::bat} defined here
+LL | fn bat(x: usize) -> usize { 42 }
+ | ------------------------- fn(usize) -> usize {<_ as T>::bat} defined here
...
LL | let _: usize = T::bat;
| ^^^^^^
| |
| expected usize, found fn item
- | help: use parentheses to call this function: `T::bat()`
+ | help: use parentheses to call this function: `T::bat(x)`
|
= note: expected type `usize`
- found type `fn() -> usize {<_ as T>::bat}`
+ found type `fn(usize) -> usize {<_ as T>::bat}`
error[E0308]: mismatched types
- --> $DIR/fn-or-tuple-struct-without-args.rs:24:16
+ --> $DIR/fn-or-tuple-struct-without-args.rs:35:16
|
LL | A(usize),
| -------- fn(usize) -> E {E::A} defined here
= note: expected type `E`
found type `fn(usize) -> E {E::A}`
-error: aborting due to 8 previous errors
+error[E0308]: mismatched types
+ --> $DIR/fn-or-tuple-struct-without-args.rs:37:20
+ |
+LL | fn baz(x: usize, y: usize) -> usize { x }
+ | ----------------------------------- fn(usize, usize) -> usize {<X as T>::baz} defined here
+...
+LL | let _: usize = X::baz;
+ | ^^^^^^
+ | |
+ | expected usize, found fn item
+ | help: use parentheses to call this function: `X::baz(x, y)`
+ |
+ = note: expected type `usize`
+ found type `fn(usize, usize) -> usize {<X as T>::baz}`
+
+error[E0308]: mismatched types
+ --> $DIR/fn-or-tuple-struct-without-args.rs:38:20
+ |
+LL | fn bat(x: usize) -> usize { 42 }
+ | ------------------------- fn(usize) -> usize {<X as T>::bat} defined here
+...
+LL | let _: usize = X::bat;
+ | ^^^^^^
+ | |
+ | expected usize, found fn item
+ | help: use parentheses to call this function: `X::bat(x)`
+ |
+ = note: expected type `usize`
+ found type `fn(usize) -> usize {<X as T>::bat}`
+
+error[E0308]: mismatched types
+ --> $DIR/fn-or-tuple-struct-without-args.rs:39:20
+ |
+LL | fn bax(x: usize) -> usize { 42 }
+ | ------------------------- fn(usize) -> usize {<X as T>::bax} defined here
+...
+LL | let _: usize = X::bax;
+ | ^^^^^^
+ | |
+ | expected usize, found fn item
+ | help: use parentheses to call this function: `X::bax(x)`
+ |
+ = note: expected type `usize`
+ found type `fn(usize) -> usize {<X as T>::bax}`
+
+error[E0308]: mismatched types
+ --> $DIR/fn-or-tuple-struct-without-args.rs:40:20
+ |
+LL | fn bach(x: usize) -> usize;
+ | --------------------------- fn(usize) -> usize {<X as T>::bach} defined here
+...
+LL | let _: usize = X::bach;
+ | ^^^^^^^
+ | |
+ | expected usize, found fn item
+ | help: use parentheses to call this function: `X::bach(x)`
+ |
+ = note: expected type `usize`
+ found type `fn(usize) -> usize {<X as T>::bach}`
+
+error[E0308]: mismatched types
+ --> $DIR/fn-or-tuple-struct-without-args.rs:41:20
+ |
+LL | fn ban(&self) -> usize { 42 }
+ | ---------------------- for<'r> fn(&'r X) -> usize {<X as T>::ban} defined here
+...
+LL | let _: usize = X::ban;
+ | ^^^^^^
+ | |
+ | expected usize, found fn item
+ | help: use parentheses to call this function: `X::ban(_)`
+ |
+ = note: expected type `usize`
+ found type `for<'r> fn(&'r X) -> usize {<X as T>::ban}`
+
+error[E0308]: mismatched types
+ --> $DIR/fn-or-tuple-struct-without-args.rs:42:20
+ |
+LL | fn bal(&self) -> usize;
+ | ----------------------- for<'r> fn(&'r X) -> usize {<X as T>::bal} defined here
+...
+LL | let _: usize = X::bal;
+ | ^^^^^^
+ | |
+ | expected usize, found fn item
+ | help: use parentheses to call this function: `X::bal(_)`
+ |
+ = note: expected type `usize`
+ found type `for<'r> fn(&'r X) -> usize {<X as T>::bal}`
+
+error[E0615]: attempted to take value of method `ban` on type `X`
+ --> $DIR/fn-or-tuple-struct-without-args.rs:43:22
+ |
+LL | let _: usize = X.ban;
+ | ^^^ help: use parentheses to call the method: `ban()`
+
+error[E0615]: attempted to take value of method `bal` on type `X`
+ --> $DIR/fn-or-tuple-struct-without-args.rs:44:22
+ |
+LL | let _: usize = X.bal;
+ | ^^^ help: use parentheses to call the method: `bal()`
+
+error: aborting due to 16 previous errors
-Some errors have detailed explanations: E0308, E0423.
+Some errors have detailed explanations: E0308, E0423, E0615.
For more information about an error, try `rustc --explain E0308`.