Skip to content

Commit

Permalink
Showing 2 changed files with 31 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/opal/parser.rb
Original file line number Diff line number Diff line change
@@ -382,6 +382,10 @@ def returns(sexp)
sexp
when :rescue
sexp[1] = returns sexp[1]

if sexp[2] and sexp[2][0] == :resbody and sexp[2][2]
sexp[2][2] = returns sexp[2][2]
end
sexp
when :ensure
sexp[1] = returns sexp[1]
27 changes: 27 additions & 0 deletions spec/opal/language/rescue_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
require 'spec_helper'

class RescueReturningSpec
def single
begin
raise "ERROR"
rescue
:foo
end
end

def multiple
begin
raise "ERROR"
rescue
to_s
:bar
end
end
end

describe "The rescue keyword" do
it "returns last value of expression evaluated" do
RescueReturningSpec.new.single.should == :foo
RescueReturningSpec.new.multiple.should == :bar
end
end

0 comments on commit afa8cb9

Please sign in to comment.