[perl #130546] Restore delete-scalar-slice warning
authorFather Chrysostomos <sprout@cpan.org>
Fri, 13 Jan 2017 06:17:04 +0000 (22:17 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 14 Jan 2017 02:16:45 +0000 (18:16 -0800)
commitfe7df09eecdd7566894f43ed5bb23bdc3074e47e
tree5d1df1e5f92b9f7fc351a1ee654e5a5450df5b47
parentcbe2fc5001aa59cdc73e04cc35e097a2ecfbeec0
[perl #130546] Restore delete-scalar-slice warning

Commit v5.19.3-506-g429a25554a reduced false positives with the annoy-
ing ‘Scalar value such-and-such better written as such-and-such’ warn-
ing by flagging the op in the lexer (instead of warning immediately),
and then checking the op tree later, in order to avoid false positives
with perfectly valid constructs, such as qw"...".

The new code that checked the op tree looked for hslice and aslice
ops, but in the particular case of delete @a{...} and delete @a[...],
the slice op gets nulled and the delete op takes care of the slicing
operation (if you can call it that) itself.  The result was that the
warning disappeared altogether for delete.

This commit makes op.c check also for nulled hslice and aslice ops,
and applies the same heuristics to them as to unnulled slicing ops.
op.c
t/lib/warnings/op