[ruby-core:118546] [Ruby master Bug#20593] `Kernel#format` emits a `too many arguments for format string` warning when called with a single hash and no key is used
From:
"matz (Yukihiro Matsumoto) via ruby-core" <ruby-core@...>
Date:
2024-07-11 05:36:35 UTC
List:
ruby-core #118546
Issue #20593 has been updated by matz (Yukihiro Matsumoto).
OK, I accepted.
Matz.
----------------------------------------
Bug #20593: `Kernel#format` emits a `too many arguments for format string` warning when called with a single hash and no key is used
https://bugs.ruby-lang.org/issues/20593#change-109066
* Author: byroot (Jean Boussier)
* Status: Open
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN
----------------------------------------
`Kernel#format` emits a warning when too many arguments are passed.
It does so for postional arguments, which make sense, as it could be indicative of a bug:
```ruby
$VERBOSE = true
format("%s", 1, 2) # warning: too many arguments for format string
```
And doesn't for keyword arguments, as it's much less likely to be a bug:
```ruby
$VERBOSE = true
format("%{a}s", a: 1, unused: 2) # no warning
```
However it does emit a warning when passing keyword arguments, if none are used:
```ruby
$VERBOSE = true
format("test", unused: 2) # warning: too many arguments for format string
```
Which I believe is a bug, as it's common for `format` to take a user provided string to allow for safe interpolation, but with no intention to enforce any of the arguments to be interpolated.
So I think that last case shouldn't emit a warning.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/