Skip to content

Commit

Permalink
Ruby 2.7: Add Complex#<=>
Browse files Browse the repository at this point in the history
  • Loading branch information
ssnickolay committed Nov 16, 2020
1 parent 75b0456 commit 6cb139d
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Compatibility:
* `Errno` constants with the same `errno` number are now the same class.
* Implement `Enumerable#tally` and `Enumerable#filter_map` (#2144 and #2152, @LillianZ).
* Implement `Range#minmax`.
* Implement `Complex#<=>` (#2004, @ssnickolay).

Performance:

Expand Down
3 changes: 0 additions & 3 deletions spec/tags/core/complex/comparision_tags.txt

This file was deleted.

12 changes: 11 additions & 1 deletion src/main/ruby/truffleruby/core/complex.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

class Complex < Numeric

undef_method :%, :<, :<=, :<=>, :>, :>=, :between?, :clamp, # comparable
undef_method :%, :<, :<=, :>, :>=, :between?, :clamp, # comparable
:div, :divmod, :floor, :ceil, :modulo, :remainder,
:round, :step, :truncate, :i, :negative?, :positive?

Expand Down Expand Up @@ -373,6 +373,16 @@ def marshal_load(ary)
self
end

def <=>(other)
if imag == 0 && other.kind_of?(Numeric)
if other.kind_of?(Complex) && other.imag == 0
real <=> other.real
elsif other.real?
real <=> other
end
end
end

I = Complex(0, 1)

end
1 change: 0 additions & 1 deletion test/mri/excludes/Complex_Test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,3 @@
exclude :test_rationalize, "needs investigation"
exclude :test_Complex_with_invalid_exception, "needs investigation"
exclude :test_conv, "needs investigation"
exclude :test_cmp, "needs investigation"

0 comments on commit 6cb139d

Please sign in to comment.