r-lib / rlang

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

Improve `arg_match()` message based on context #1733

Open olivroy opened 1 month ago

olivroy commented 1 month ago

fixes #1682 fixes #1635

This feels a bit hack-ish, but I did this to avoid adding multiple everywhere in the C core. (I tried and failed)

Basically, you only need the option when writing the error message.

Also printing all incorrect parts of x instead of just the first one.

Tweak wording based on number of values and whether multiple values are accepted.

There is no easy fix for showing all incorrect values of x due to the way arg_match(multiple = TRUE) is implemented (loop instead of checking everything at once)

Happy to receive feedback for this.

I think it is important to have a different error message if multiple = TRUE. Up to now, I am using tryCatch() in my script to make sure a good and informative message is outputed.