summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/mathn.rb4
-rw-r--r--lib/rational.rb4
-rw-r--r--test/ruby/test_complex.rb3
-rw-r--r--test/ruby/test_rational.rb3
-rw-r--r--test/test_mathn.rb10
-rw-r--r--version.h2
7 files changed, 25 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 7bde9766b7..d773f3b05b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu Sep 24 09:41:42 2009 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * lib/mathn.rb (Bignum#**): Fixed bignum**fixnum that was broken when
+ requiring lib/mathn
+ [ruby-core:25740]
+
Tue Sep 22 05:04:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/bigdecimal/lib/bigdecimal/{ludcmp,math}.rb: depend on
diff --git a/lib/mathn.rb b/lib/mathn.rb
index 0241f578e9..780ecd6e7c 100644
--- a/lib/mathn.rb
+++ b/lib/mathn.rb
@@ -25,7 +25,7 @@ class Fixnum
remove_method :/
alias / quo
- alias power! ** unless defined?(0.power!)
+ alias power! ** unless method_defined? :power!
def ** (other)
if self < 0 && other.round != other
@@ -41,7 +41,7 @@ class Bignum
remove_method :/
alias / quo
- alias power! ** unless defined?(0.power!)
+ alias power! ** unless method_defined? :power!
def ** (other)
if self < 0 && other.round != other
diff --git a/lib/rational.rb b/lib/rational.rb
index 5acfa5433d..8bed856187 100644
--- a/lib/rational.rb
+++ b/lib/rational.rb
@@ -3,7 +3,7 @@ class Fixnum
alias quof fdiv
alias rdiv quo
- alias power! ** unless defined?(0.power!)
+ alias power! ** unless method_defined? :power!
alias rpower **
end
@@ -13,7 +13,7 @@ class Bignum
alias quof fdiv
alias rdiv quo
- alias power! ** unless defined?(0.power!)
+ alias power! ** unless method_defined? :power!
alias rpower **
end
diff --git a/test/ruby/test_complex.rb b/test/ruby/test_complex.rb
index b4be08ed91..33cafbde57 100644
--- a/test/ruby/test_complex.rb
+++ b/test/ruby/test_complex.rb
@@ -9,7 +9,8 @@ class Complex_Test < Test::Unit::TestCase
if @rational
@keiju = Rational.instance_variable_get('@RCS_ID')
end
- @unify = $".grep(/mathn/).size != 0
+ seps = [File::SEPARATOR, File::ALT_SEPARATOR].compact.map{|x| Regexp.escape(x)}.join("|")
+ @unify = $".grep(/(?:^|#{seps})mathn(?:\.(?:rb|so))?/).size != 0
end
def test_compsub
diff --git a/test/ruby/test_rational.rb b/test/ruby/test_rational.rb
index 8cacab9a09..37efc7b493 100644
--- a/test/ruby/test_rational.rb
+++ b/test/ruby/test_rational.rb
@@ -9,7 +9,8 @@ class Rational_Test < Test::Unit::TestCase
if @complex
@keiju = Complex.instance_variable_get('@RCS_ID')
end
- @unify = $".grep(/mathn/).size != 0
+ seps = [File::SEPARATOR, File::ALT_SEPARATOR].compact.map{|x| Regexp.escape(x)}.join("|")
+ @unify = $".grep(/(?:^|#{seps})mathn(?:\.(?:rb|so))?/).size != 0
end
def test_ratsub
diff --git a/test/test_mathn.rb b/test/test_mathn.rb
new file mode 100644
index 0000000000..d0bf03760d
--- /dev/null
+++ b/test/test_mathn.rb
@@ -0,0 +1,10 @@
+require 'test/unit'
+require_relative 'ruby/envutil'
+
+# mathn redefines too much. It must be isolated to child processes.
+class TestMathn < Test::Unit::TestCase
+ def test_power
+ assert_in_out_err ['-r', 'mathn', '-e', '1**2'], [], [], [], '[ruby-core:25740]'
+ assert_in_out_err ['-r', 'mathn', '-e', '(1<<126)**2'], [], [], [], '[ruby-core:25740]'
+ end
+end
diff --git a/version.h b/version.h
index a3c33ce2ec..0a048eff9c 100644
--- a/version.h
+++ b/version.h
@@ -1,5 +1,5 @@
#define RUBY_VERSION "1.9.1"
-#define RUBY_PATCHLEVEL 350
+#define RUBY_PATCHLEVEL 351
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 9
#define RUBY_VERSION_TEENY 1