Skip to content

Commit 868c331

Browse files
committed
fix: union() with context entries
Remove duplicated context entries from the concatenated list. (cherry picked from commit fa45a3d)
1 parent 204bf89 commit 868c331

File tree

1 file changed

+16
-19
lines changed

1 file changed

+16
-19
lines changed

src/main/scala/org/camunda/feel/impl/builtin/ListBuiltinFunctions.scala

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -377,34 +377,31 @@ class ListBuiltinFunctions(private val valueMapper: ValueMapper) {
377377
private def unionFunction = builtinFunction(
378378
params = List("lists"),
379379
invoke = { case List(ValList(lists)) =>
380-
ValList(
381-
lists
382-
.flatMap(_ match {
383-
case ValList(list) => list
384-
case v => List(v)
385-
})
386-
.toList
387-
.distinct
388-
)
380+
val listOfLists = lists.flatMap {
381+
case ValList(list) => list
382+
case v => List(v)
383+
}
384+
ValList(distinct(listOfLists))
389385
},
390386
hasVarArgs = true
391387
)
392388

393389
private def distinctValuesFunction =
394390
builtinFunction(
395391
params = List("list"),
396-
invoke = { case List(ValList(list)) =>
397-
val distinctList = list.foldLeft(List[Val]())((result, item) =>
398-
if (result.exists(y => valueComparator.equals(item, y))) {
399-
// duplicate value
400-
result
401-
} else {
402-
result :+ item
403-
}
404-
)
405-
ValList(distinctList)
392+
invoke = { case List(ValList(list)) => ValList(distinct(list)) }
393+
)
394+
395+
private def distinct(list: List[Val]): List[Val] = {
396+
list.foldLeft(List[Val]())((result, item) =>
397+
if (result.exists(y => valueComparator.equals(item, y))) {
398+
// duplicate value
399+
result
400+
} else {
401+
result :+ item
406402
}
407403
)
404+
}
408405

409406
private def flattenFunction =
410407
builtinFunction(

0 commit comments

Comments
 (0)