Replace throw/catch control flow with block return values
Ruby's throw/catch is a non-local control flow mechanism (a form of goto). Replace all three uses with idiomatic Ruby patterns: - Dependency: remove catch(:action) from `action`, use the block's return value directly. Callers signal actions via `next` with named constants (PRUNE, SKIP, KEEP_BUT_PRUNE_RECURSIVE_DEPS). - Requirement: remove catch(:prune) from `prune?`, check the block's return value against the PRUNE constant. - Livecheck: extract nested loop into `find_version_update_revision` helper and use `return` for early exit. Remove the now-unnecessary `prune`, `skip`, and `keep_but_prune_recursive_deps` class methods and update all callers and type signatures.
D
Douglas Eichelberger committed
63d80a98a7c221d793d73b29a3f7706df596e294
Parent: 18c76d9