Repository: sympy/sympy

Issue:
Union of ComplexRegion and Interval returns ComplexRegion
```
>>> c1 = ComplexRegion(Interval(0, 1)*Interval(0, 2*S.Pi), polar=True)
>>> c1.union(Interval(2, 4)) == c1
True
```

I think this should return a `Union` of `ComplexRegion` and the `Interval`

Discussion:

Patch:
diff --git a/sympy/sets/fancysets.py b/sympy/sets/fancysets.py
index dc8b409185..c229519ee6 100644
--- a/sympy/sets/fancysets.py
+++ b/sympy/sets/fancysets.py
@@ -903,7 +903,7 @@ def _union(self, other):
             elif self.polar and other.polar:
                 return ComplexRegion(Union(self.sets, other.sets), polar=True)
 
-        if other.is_subset(S.Reals):
+        if self == S.Complexes:
             return self
 
         return None


Test patch:
diff --git a/sympy/sets/tests/test_fancysets.py b/sympy/sets/tests/test_fancysets.py
index fe36f2b566..d61929d4a1 100644
--- a/sympy/sets/tests/test_fancysets.py
+++ b/sympy/sets/tests/test_fancysets.py
@@ -347,7 +347,7 @@ def test_ComplexRegion_intersect():
     # unevaluated object
     C1 = ComplexRegion(Interval(0, 1)*Interval(0, 2*S.Pi), polar=True)
     C2 = ComplexRegion(Interval(-1, 1)*Interval(-1, 1))
-    assert C1.intersect(C2) == Intersection(C1, C2)
+    assert C1.intersect(C2) == Intersection(C1, C2, evaluate=False)
 
 
 def test_ComplexRegion_union():
@@ -376,8 +376,8 @@ def test_ComplexRegion_union():
     assert c5.union(c6) == ComplexRegion(p3)
     assert c7.union(c8) == ComplexRegion(p4)
 
-    assert c1.union(Interval(2, 4)) == Union(c1, Interval(2, 4))
-    assert c5.union(Interval(2, 4)) == Union(c5, Interval(2, 4))
+    assert c1.union(Interval(2, 4)) == Union(c1, Interval(2, 4), evaluate=False)
+    assert c5.union(Interval(2, 4)) == Union(c5, Interval(2, 4), evaluate=False)
 
 
 def test_ComplexRegion_measure():