Revision history for Perl-Critic-Policy-ControlStructures-ProhibitBareBlockLoopControls
0.06 2026-06-18
- Restructured POD DESCRIPTION to separate bare-block (real loops, surprising
semantics) from non-loop constructs (controls leak or fail at runtime).
- Acknowledged map/grep as iteration constructs while explaining loop controls
escape rather than targeting the map/grep iteration.
- Fixed _make_explanation for map/grep blocks (previously claimed controls
"skip to the next element" — incorrect).
- Added fatal-error-at-runtime mention to sub/eval/do explanations.
- Added outer-loop capture scenario to bare-block forbid messages.
- Added action-at-a-distance examples for do {} and map/grep with enclosing
loops.
0.05 2026-06-15
- Changed bare_block default from require_label to follow (defers to per-keyword defaults).
- Fixed labeled loop detection: labels are now skipped when identifying compound types.
- Added break-label targeting logic: labeled controls targeting an outer real loop
from a bare block are now permitted.
- Moved perlcriticrc to t/.perlcriticrc, configured via [Test::Perl::Critic].
- Repaired author-critic test violations (ASCII, labels, naming, qq, regex, no critic).
- Switched fixed-string regex patterns to constant hash lookups.
0.04 2026-06-15
- Clarified the default policy in POD documentation with an effective defaults table
- Added examples for bare blocks inside real loops
- Added labeled "ok" examples for bare blocks
- Pod changes only
0.03 2026-06-13
- Adjust package name and hopefully cpan will index it
0.02 2026-06-13
- Improved violation explanations (per-block-type, forbid vs require-label).
- Added t/explanation-messages.t (26 unit tests).
- Fixed POD inaccuracies around bare blocks and do blocks.
- Restricted releases to trunk branch.
0.01 2026-06-13
- Initial release. Author Dean Hamstead
- Policy to prohibit unlabeled next/last/redo in non-loop blocks.