Skip to content

Commit

Permalink
[GR-18163] Ruby 2.7: Add Complex#<=> (#2161)
Browse files Browse the repository at this point in the history
PullRequest: truffleruby/2170
  • Loading branch information
eregon committed Nov 17, 2020
2 parents 666041d + 0b9e9e7 commit cad1ca4
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 @@ -18,6 +18,7 @@ Compatibility:
* Implement `Range#minmax`.
* Pass more `Enumerator::Lazy#uniq` and `Enumerator::Lazy#chunk` specs (#2146, @LillianZ).
* Implement `Enumerator#produce` (#2160, @zverok)
* 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 cad1ca4

Please sign in to comment.