sv_vcatpvfn_flags(): make warnings more precise
authorAaron Crane <arc@cpan.org>
Mon, 29 Jun 2015 15:35:11 +0000 (16:35 +0100)
committerAaron Crane <arc@cpan.org>
Wed, 15 Jul 2015 13:25:05 +0000 (14:25 +0100)
commit082ce9c667e6d73783164fa1abab61806b678b4f
treeee60e924f608c41862fb838eec013112895bd7c4
parent3e3bbb9b3cd1149bba698cb5d92fa3150db92d89
sv_vcatpvfn_flags(): make warnings more precise

- RT#125469 points out that no "redundant argument" warning should be emitted
  for code like C<< printf '<%*2$s>', "a", 6 >>; that's now fixed.

- We no longer emit a "missing argument" warning for invalid format strings,
  so C<< printf '%4$K %d', 17 >> now emits one "invalid" warning, and no
  other warnings. (Perl 5.12 and subsequent versions have inappropriately
  emitted a "missing argument" warning in this case.)

- We no longer treat the invalid format string in C<< printf '%1$$d', 17 >>
  as containing an explicit index, so (a) we emit an "invalid" warning for
  the double "$", and (b) we emit a "redundant argument" warning for the
  trailing argument. The "redundant argument" warning is new in this
  situation.
sv.c
t/op/sprintf.t