Skip to content

Commit f88ecde

Browse files
committed
Fix ^ to respect subclasses
1 parent 706f475 commit f88ecde

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

lib/set.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,7 @@ def &(enum)
659659
# Set[1, 2] ^ Set[2, 3] #=> #<Set: {3, 1}>
660660
# Set[1, 'b', 'c'] ^ ['b', 'd'] #=> #<Set: {"d", 1, "c"}>
661661
def ^(enum)
662-
n = Set.new(enum)
662+
n = self.class.new(enum)
663663
each { |o| n.add(o) unless n.delete?(o) }
664664
n
665665
end

test/test_set.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -643,6 +643,11 @@ def test_xor
643643
ret = set ^ [2,4,5,5]
644644
assert_not_same(set, ret)
645645
assert_equal(Set[1,3,5], ret)
646+
647+
set2 = Set2[1,2,3,4]
648+
ret2 = set2 ^ [2,4,5,5]
649+
assert_instance_of(Set2, ret2)
650+
assert_equal(Set2[1,3,5], ret2)
646651
end
647652

648653
def test_eq

0 commit comments

Comments
 (0)