Skip to content

Commit f506184

Browse files
authored
Merge pull request #5780 from dotty-staging/fix-SimpleIdentitySet
Fix a bug in SimpleIdentitySet#+
2 parents 9a439d9 + 1b5bd73 commit f506184

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

compiler/src/dotty/tools/dotc/util/SimpleIdentitySet.scala

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,14 @@ object SimpleIdentitySet {
8181

8282
private class SetN[+Elem <: AnyRef](xs: Array[AnyRef]) extends SimpleIdentitySet[Elem] {
8383
def size = xs.length
84-
def + [E >: Elem <: AnyRef](x: E): SimpleIdentitySet[E] = {
85-
val xs1 = new Array[AnyRef](size + 1)
86-
System.arraycopy(xs, 0, xs1, 0, size)
87-
xs1(size) = x
88-
new SetN[E](xs1)
89-
}
84+
def + [E >: Elem <: AnyRef](x: E): SimpleIdentitySet[E] =
85+
if (contains(x)) this
86+
else {
87+
val xs1 = new Array[AnyRef](size + 1)
88+
System.arraycopy(xs, 0, xs1, 0, size)
89+
xs1(size) = x
90+
new SetN[E](xs1)
91+
}
9092
def - [E >: Elem <: AnyRef](x: E): SimpleIdentitySet[Elem] = {
9193
var i = 0
9294
while (i < size && (xs(i) `ne` x)) i += 1

0 commit comments

Comments
 (0)