summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--complex.c5
-rw-r--r--test/ruby/test_complex.rb2
2 files changed, 5 insertions, 2 deletions
diff --git a/complex.c b/complex.c
index d625ced7fa..ae40fa7355 100644
--- a/complex.c
+++ b/complex.c
@@ -1121,7 +1121,10 @@ nucomp_real_p(VALUE self)
static VALUE
nucomp_cmp(VALUE self, VALUE other)
{
- if (nucomp_real_p(self) && k_numeric_p(other)) {
+ if (!k_numeric_p(other)) {
+ return rb_num_coerce_cmp(self, other, idCmp);
+ }
+ if (nucomp_real_p(self)) {
if (RB_TYPE_P(other, T_COMPLEX) && nucomp_real_p(other)) {
get_dat2(self, other);
return rb_funcall(adat->real, idCmp, 1, bdat->real);
diff --git a/test/ruby/test_complex.rb b/test/ruby/test_complex.rb
index a3a7546575..f85bf101e0 100644
--- a/test/ruby/test_complex.rb
+++ b/test/ruby/test_complex.rb
@@ -579,7 +579,7 @@ class Complex_Test < Test::Unit::TestCase
def test_coerce2
x = ObjectX.new
- %w(+ - * / quo **).each do |op|
+ %w(+ - * / quo ** <=>).each do |op|
assert_kind_of(Numeric, Complex(1).__send__(op, x))
end
end