summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/transform/patmat/Solving.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/patmat/Solving.scala b/src/compiler/scala/tools/nsc/transform/patmat/Solving.scala
index 1902606d86..31b1ffa912 100644
--- a/src/compiler/scala/tools/nsc/transform/patmat/Solving.scala
+++ b/src/compiler/scala/tools/nsc/transform/patmat/Solving.scala
@@ -29,8 +29,12 @@ trait Solving extends Logic {
type Clause = collection.Set[Lit]
// a clause is a disjunction of distinct literals
def clause(l: Lit*): Clause = (
- // neg/t7020.scala changes output 1% of the time, the non-determinism is quelled with this linked set
- mutable.LinkedHashSet(l: _*)
+ if (l.lengthCompare(1) <= 0) {
+ l.toSet // SI-8531 Avoid LinkedHashSet's bulk for 0 and 1 element clauses
+ } else {
+ // neg/t7020.scala changes output 1% of the time, the non-determinism is quelled with this linked set
+ mutable.LinkedHashSet(l: _*)
+ }
)
type Lit