Class: Peruby::Op::Return

Inherits:
Base
  • Object
show all
Defined in:
lib/peruby/op/call.rb

Overview

Non-local subroutine return.

Instance Method Summary collapse

Methods inherited from Base

#argument_cells, #local_slot, #lvalue, #run_subroutine, #to_callable, #warning_directive?

Constructor Details

#initialize(expression) ⇒ Return

Returns a new instance of Return.



135
136
137
# File 'lib/peruby/op/call.rb', line 135

def initialize(expression)
  @expression = expression
end

Instance Method Details

#return_callableObject



147
148
149
150
# File 'lib/peruby/op/call.rb', line 147

def return_callable
  expression = @expression&.to_callable
  ->(env, context) { expression&.call(env, context) }
end

#return_value(env, context) ⇒ Object



143
144
145
# File 'lib/peruby/op/call.rb', line 143

def return_value(env, context)
  @expression&.run(env, context)
end

#run(env, _context) ⇒ Object



139
140
141
# File 'lib/peruby/op/call.rb', line 139

def run(env, _context)
  throw :peruby_return, @expression&.run(env, env.want)
end