r-lib / rlang

Low-level API for programming with R
https://rlang.r-lib.org
Other
502 stars 140 forks source link

improve arg_check0 error with one permitted value #1635

Open aronatkins opened 1 year ago

aronatkins commented 1 year ago

arg_check* could produce better feedback when there is only one allowed argument value.

Today: `chosen` must be one of "banana", not "apple". Suggestion: `chosen` must be "banana", not "apple".

doit <- function() {
  chosen <- "apple"
  available <- c("banana")
  rlang::arg_match(chosen, available)
}
doit()
#> Error in `doit()`:
#> ! `chosen` must be one of "banana", not "apple".
#> Backtrace:
#>     ▆
#>  1. ├─global doit()
#>  2. │ └─rlang::arg_match(chosen, available)
#>  3. │   └─rlang::arg_match0(arg, values, error_arg, error_call = error_call)
#>  4. └─rlang:::stop_arg_match(w, values = x, error_arg = y, error_call = z)
#>  5.   └─rlang::abort(msg, call = error_call, arg = error_arg)

Created on 2023-06-22 with reprex v2.0.2