mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
Fix circular fn_sig queries to return the correct number of arguments for methods
This commit is contained in:
parent
28e8f01c2a
commit
3cb1f334b8
@ -56,7 +56,7 @@ impl<'tcx> Value<TyCtxt<'tcx>> for ty::Binder<'_, ty::FnSig<'_>> {
|
|||||||
&& let Some(node) = tcx.hir().get_if_local(def_id)
|
&& let Some(node) = tcx.hir().get_if_local(def_id)
|
||||||
&& let Some(sig) = node.fn_sig()
|
&& let Some(sig) = node.fn_sig()
|
||||||
{
|
{
|
||||||
sig.decl.inputs.len() + sig.decl.implicit_self.has_implicit_self() as usize
|
sig.decl.inputs.len()
|
||||||
} else {
|
} else {
|
||||||
tcx.dcx().abort_if_errors();
|
tcx.dcx().abort_if_errors();
|
||||||
unreachable!()
|
unreachable!()
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
trait Bar {
|
||||||
|
fn foo(&mut self) -> _ {
|
||||||
|
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
|
||||||
|
Self::foo() //~ ERROR this function takes 1 argument but 0 arguments were supplied
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
@ -0,0 +1,26 @@
|
|||||||
|
error[E0061]: this function takes 1 argument but 0 arguments were supplied
|
||||||
|
--> $DIR/mismatch-args-crash-issue-130400.rs:4:9
|
||||||
|
|
|
||||||
|
LL | Self::foo()
|
||||||
|
| ^^^^^^^^^-- argument #1 is missing
|
||||||
|
|
|
||||||
|
note: method defined here
|
||||||
|
--> $DIR/mismatch-args-crash-issue-130400.rs:2:8
|
||||||
|
|
|
||||||
|
LL | fn foo(&mut self) -> _ {
|
||||||
|
| ^^^ ---------
|
||||||
|
help: provide the argument
|
||||||
|
|
|
||||||
|
LL | Self::foo(/* value */)
|
||||||
|
| ~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
|
||||||
|
--> $DIR/mismatch-args-crash-issue-130400.rs:2:26
|
||||||
|
|
|
||||||
|
LL | fn foo(&mut self) -> _ {
|
||||||
|
| ^ not allowed in type signatures
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
Some errors have detailed explanations: E0061, E0121.
|
||||||
|
For more information about an error, try `rustc --explain E0061`.
|
Loading…
Reference in New Issue
Block a user