Skip to content

Commit 5935df1

Browse files
t-kalinowskihadley
andauthored
Show generic signature in error message (RConsortium#482)
* Show generic signature in error message closes RConsortium#480 * show method formals in error message * Update R/method-register.R Co-authored-by: Hadley Wickham <[email protected]> * update snapshot --------- Co-authored-by: Hadley Wickham <[email protected]>
1 parent 70d1c85 commit 5935df1

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

R/method-register.R

+6-1
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,14 @@ check_method <- function(method, generic, name = paste0(generic@name, "(???)"))
181181

182182
if (!"..." %in% generic_args && !identical(generic_formals, method_formals)) {
183183
msg <- sprintf(
184-
"%s() lacks `...` so method formals must match generic formals exactly",
184+
"%s() generic lacks `...` so method formals must match generic formals exactly.",
185185
generic@name
186186
)
187+
bullets <- c(
188+
sprintf("- generic formals: %s", show_args(generic_formals, name = generic@name)),
189+
sprintf("- method formals: %s", show_args(method_formals, name = generic@name))
190+
)
191+
msg <- paste0(c(msg, bullets), collapse = "\n")
187192
stop(msg, call. = FALSE)
188193
}
189194

tests/testthat/_snaps/method-register.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@
8181
check_method(function(x, y) { }, foo)
8282
Condition
8383
Error:
84-
! foo() lacks `...` so method formals must match generic formals exactly
84+
! foo() generic lacks `...` so method formals must match generic formals exactly.
85+
- generic formals: foo(x)
86+
- method formals: foo(x, y)
8587

8688
# check_method warn if default arguments don't match
8789

0 commit comments

Comments
 (0)