summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--lib/mruby/build/command.rb3
-rw-r--r--mrbgems/mruby-rational/mrbgem.rake1
-rw-r--r--mrbgems/mruby-rational/mrblib/rational.rb4
-rw-r--r--mrbgems/mruby-rational/test/rational.rb7
4 files changed, 12 insertions, 3 deletions
diff --git a/lib/mruby/build/command.rb b/lib/mruby/build/command.rb
index 0f18e0e62..0fa4746da 100644
--- a/lib/mruby/build/command.rb
+++ b/lib/mruby/build/command.rb
@@ -30,10 +30,13 @@ module MRuby
def _run(options, params={})
return sh command + ' ' + ( options % params ) if NotFoundCommands.key? @command
begin
+ fiber, $rake_root_fiber = $rake_root_fiber, nil
sh build.filename(command) + ' ' + ( options % params )
rescue RuntimeError
NotFoundCommands[@command] = true
_run options, params
+ ensure
+ $rake_root_fiber = fiber
end
end
end
diff --git a/mrbgems/mruby-rational/mrbgem.rake b/mrbgems/mruby-rational/mrbgem.rake
index 496082709..15c3429f2 100644
--- a/mrbgems/mruby-rational/mrbgem.rake
+++ b/mrbgems/mruby-rational/mrbgem.rake
@@ -4,5 +4,4 @@ MRuby::Gem::Specification.new('mruby-rational') do |spec|
spec.summary = 'Rational class'
spec.add_dependency 'mruby-object-ext', core: 'mruby-object-ext'
- spec.add_dependency 'mruby-numeric-ext', core: 'mruby-numeric-ext'
end
diff --git a/mrbgems/mruby-rational/mrblib/rational.rb b/mrbgems/mruby-rational/mrblib/rational.rb
index 54324b05f..37e9d8c0f 100644
--- a/mrbgems/mruby-rational/mrblib/rational.rb
+++ b/mrbgems/mruby-rational/mrblib/rational.rb
@@ -69,7 +69,7 @@ class Rational < Numeric
end
end
-class << Numeric
+class Numeric
def to_r
Rational(self, 1)
end
@@ -83,7 +83,7 @@ end
def Rational(numerator = 0, denominator = 1)
a = numerator
b = denominator
- a, b = b, a % b until b.zero?
+ a, b = b, a % b until b == 0
Rational._new(numerator.div(a), denominator.div(a))
end
diff --git a/mrbgems/mruby-rational/test/rational.rb b/mrbgems/mruby-rational/test/rational.rb
index 4d3d36ccc..a65926bfb 100644
--- a/mrbgems/mruby-rational/test/rational.rb
+++ b/mrbgems/mruby-rational/test/rational.rb
@@ -100,3 +100,10 @@ assert 'Float#==(Rational), Float#!=(Rational)' do
assert_equal_rational(true, -2.0, Rational(4,-2))
assert_equal_rational(false, 3.3, Rational(13,4))
end
+
+assert 'Rational#negative?' do
+ assert_predicate(Rational(-2,3), :negative?)
+ assert_predicate(Rational(2,-3), :negative?)
+ assert_not_predicate(Rational(2,3), :negative?)
+ assert_not_predicate(Rational(0), :negative?)
+end