Skip to content

Commit

Permalink
Fix circular fn_sig queries to return the correct number of arguments…
Browse files Browse the repository at this point in the history
… for methods
  • Loading branch information
jder committed Sep 18, 2024
1 parent 28e8f01 commit 3cb1f33
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
2 changes: 1 addition & 1 deletion compiler/rustc_middle/src/values.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(sig) = node.fn_sig()
{
sig.decl.inputs.len() + sig.decl.implicit_self.has_implicit_self() as usize
sig.decl.inputs.len()
} else {
tcx.dcx().abort_if_errors();
unreachable!()
Expand Down
8 changes: 8 additions & 0 deletions tests/ui/mismatched_types/mismatch-args-crash-issue-130400.rs
Original file line number Diff line number Diff line change
@@ -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() {}
26 changes: 26 additions & 0 deletions tests/ui/mismatched_types/mismatch-args-crash-issue-130400.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit 3cb1f33

Please sign in to comment.