Merge pull request #11051 from Bo98/better-debrew-raise
debrew: make Debrew::Raise only catch uncaught exceptions
This commit is contained in:
commit
330158ba10
@ -3,6 +3,10 @@
|
|||||||
|
|
||||||
require "mutex_m"
|
require "mutex_m"
|
||||||
require "debrew/irb"
|
require "debrew/irb"
|
||||||
|
require "warnings"
|
||||||
|
Warnings.ignore(/warning: callcc is obsolete; use Fiber instead/) do
|
||||||
|
require "continuation"
|
||||||
|
end
|
||||||
|
|
||||||
# Helper module for debugging formulae.
|
# Helper module for debugging formulae.
|
||||||
#
|
#
|
||||||
@ -10,15 +14,26 @@ require "debrew/irb"
|
|||||||
module Debrew
|
module Debrew
|
||||||
extend Mutex_m
|
extend Mutex_m
|
||||||
|
|
||||||
Ignorable = Module.new.freeze
|
# Marks exceptions which can be ignored and provides
|
||||||
|
# the ability to jump back to where it was raised.
|
||||||
|
module Ignorable
|
||||||
|
attr_accessor :continuation
|
||||||
|
|
||||||
|
def ignore
|
||||||
|
continuation.call
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Module for allowing to ignore exceptions.
|
# Module for allowing to ignore exceptions.
|
||||||
module Raise
|
module Raise
|
||||||
def raise(*)
|
def raise(*)
|
||||||
|
callcc do |continuation|
|
||||||
super
|
super
|
||||||
rescue Exception => e # rubocop:disable Lint/RescueException
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
||||||
e.extend(Ignorable)
|
e.extend(Ignorable)
|
||||||
super(e) unless Debrew.debug(e) == :ignore
|
e.continuation = continuation
|
||||||
|
super(e)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
alias fail raise
|
alias fail raise
|
||||||
@ -105,7 +120,7 @@ module Debrew
|
|||||||
rescue SystemExit
|
rescue SystemExit
|
||||||
original_raise
|
original_raise
|
||||||
rescue Exception => e # rubocop:disable Lint/RescueException
|
rescue Exception => e # rubocop:disable Lint/RescueException
|
||||||
debug(e)
|
e.ignore if debug(e) == :ignore # execution jumps back to where the exception was thrown
|
||||||
ensure
|
ensure
|
||||||
@active = false
|
@active = false
|
||||||
end
|
end
|
||||||
|
|||||||
@ -9,7 +9,6 @@ require "caveats"
|
|||||||
require "cleaner"
|
require "cleaner"
|
||||||
require "formula_cellar_checks"
|
require "formula_cellar_checks"
|
||||||
require "install_renamed"
|
require "install_renamed"
|
||||||
require "debrew"
|
|
||||||
require "sandbox"
|
require "sandbox"
|
||||||
require "development_tools"
|
require "development_tools"
|
||||||
require "cache_store"
|
require "cache_store"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user