From 33583e027b67ffb355c0f707f419d8def6783bb6 Mon Sep 17 00:00:00 2001 From: Matthew de Detrich Date: Fri, 17 Mar 2023 20:49:57 +0100 Subject: [PATCH] Add mapValues for Scala 2.12 collection compat --- .../org/apache/pekko/util/ccompat/package.scala | 12 +++++++++++- .../src/main/scala/org/apache/pekko/Plugin.scala | 9 +++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/actor/src/main/scala-2.12/org/apache/pekko/util/ccompat/package.scala b/actor/src/main/scala-2.12/org/apache/pekko/util/ccompat/package.scala index 94d03cbe11..823814d60e 100644 --- a/actor/src/main/scala-2.12/org/apache/pekko/util/ccompat/package.scala +++ b/actor/src/main/scala-2.12/org/apache/pekko/util/ccompat/package.scala @@ -14,7 +14,7 @@ package org.apache.pekko.util import scala.{ collection => c } -import scala.collection.{ immutable => i, mutable => m, GenTraversable } +import scala.collection.{ immutable => i, mutable => m, GenTraversable, IterableView } import scala.collection.generic.{ CanBuildFrom, GenericCompanion, Sorted, SortedSetFactory } import scala.language.higherKinds import scala.language.implicitConversions @@ -88,6 +88,10 @@ package object ccompat { type IterableOnce[+X] = c.TraversableOnce[X] val IterableOnce = c.TraversableOnce + implicit def toMapViewExtensionMethods[K, V, C <: scala.collection.Map[K, V]]( + self: IterableView[(K, V), C]): MapViewExtensionMethods[K, V, C] = + new MapViewExtensionMethods[K, V, C](self) + implicit class ImmutableSortedSetOps[A](val real: i.SortedSet[A]) extends AnyVal { def unsorted: i.Set[A] = real } @@ -101,3 +105,9 @@ package object ccompat { class TraversableOnceExtensionMethods[A](private val self: c.TraversableOnce[A]) extends AnyVal { def iterator: Iterator[A] = self.toIterator } + +class MapViewExtensionMethods[K, V, C <: scala.collection.Map[K, V]]( + private val self: IterableView[(K, V), C]) extends AnyVal { + def mapValues[W, That](f: V => W)(implicit bf: CanBuildFrom[IterableView[(K, V), C], (K, W), That]): That = + self.map[(K, W), That] { case (k, v) => (k, f(v)) } +} diff --git a/plugins/serialversion-remover-plugin/src/main/scala/org/apache/pekko/Plugin.scala b/plugins/serialversion-remover-plugin/src/main/scala/org/apache/pekko/Plugin.scala index 961b5734fe..3e9a684a49 100644 --- a/plugins/serialversion-remover-plugin/src/main/scala/org/apache/pekko/Plugin.scala +++ b/plugins/serialversion-remover-plugin/src/main/scala/org/apache/pekko/Plugin.scala @@ -1,3 +1,12 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * license agreements; and to You under the Apache License, version 2.0: + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * This file is part of the Apache Pekko project, derived from Akka. + */ + /* * Copyright (C) 2021-2022 Lightbend Inc. */