diff --git a/lib/set.rb b/lib/set.rb index ecf89c5c16..26311af6cc 100644 --- a/lib/set.rb +++ b/lib/set.rb @@ -662,7 +662,7 @@ class Set # Set[1, 2] ^ Set[2, 3] #=> # # Set[1, 'b', 'c'] ^ ['b', 'd'] #=> # def ^(enum) - n = Set.new(enum) + n = self.class.new(enum) each { |o| n.add(o) unless n.delete?(o) } n end diff --git a/test/set/test_set.rb b/test/set/test_set.rb index 49dc58ef7b..565946096e 100644 --- a/test/set/test_set.rb +++ b/test/set/test_set.rb @@ -643,6 +643,11 @@ class TC_Set < Test::Unit::TestCase ret = set ^ [2,4,5,5] assert_not_same(set, ret) assert_equal(Set[1,3,5], ret) + + set2 = Set2[1,2,3,4] + ret2 = set2 ^ [2,4,5,5] + assert_instance_of(Set2, ret2) + assert_equal(Set2[1,3,5], ret2) end def test_eq