diff --git a/scalafix/input/src/main/scala/fix/SetMapSrc.scala b/scalafix/input/src/main/scala/fix/SetMapSrc.scala index c894923e..0597c513 100644 --- a/scalafix/input/src/main/scala/fix/SetMapSrc.scala +++ b/scalafix/input/src/main/scala/fix/SetMapSrc.scala @@ -8,4 +8,5 @@ class SetMapSrc(set: Set[Int], map: Map[Int, Int]) { map + (2 -> 3, 3 -> 4) (set + (2, 3)).map(x => x) set + (2, 3) - 4 + map.mapValues(_ + 1) } \ No newline at end of file diff --git a/scalafix/output/src/main/scala/fix/SetMapSrc.scala b/scalafix/output/src/main/scala/fix/SetMapSrc.scala index d2de35de..978b0bfa 100644 --- a/scalafix/output/src/main/scala/fix/SetMapSrc.scala +++ b/scalafix/output/src/main/scala/fix/SetMapSrc.scala @@ -8,4 +8,5 @@ class SetMapSrc(set: Set[Int], map: Map[Int, Int]) { map + (2 -> 3) + (3 -> 4) (set + 2 + 3).map(x => x) set + 2 + 3 - 4 + map.mapValues(_ + 1).toMap } \ No newline at end of file diff --git a/scalafix/rules/src/main/scala/fix/Scalacollectioncompat_newcollections.scala b/scalafix/rules/src/main/scala/fix/Scalacollectioncompat_newcollections.scala index 79b03f9b..f58a0b11 100644 --- a/scalafix/rules/src/main/scala/fix/Scalacollectioncompat_newcollections.scala +++ b/scalafix/rules/src/main/scala/fix/Scalacollectioncompat_newcollections.scala @@ -67,6 +67,11 @@ case class Scalacollectioncompat_newcollections(index: SemanticdbIndex) Symbol("_root_.scala.collection.mutable.MapLike.retain.") ) + val mapMapValues = + SymbolMatcher.exact( + Symbol("_root_.scala.collection.immutable.MapLike#mapValues(Lscala/Function1;)Lscala/collection/immutable/Map;.") + ) + val retainSet = SymbolMatcher.normalized( Symbol("_root_.scala.collection.mutable.SetLike.retain.") @@ -253,11 +258,15 @@ case class Scalacollectioncompat_newcollections(index: SemanticdbIndex) ctx.removeTokens(extraParens) }.asPatch } - + def replaceMapMapValues(ctx: RuleCtx): Patch = { + ctx.tree.collect { + case ap @ Term.Apply(Term.Select(_, mapMapValues(_)), List(_)) => + ctx.addRight(ap, ".toMap") + }.asPatch + } + override def fix(ctx: RuleCtx): Patch = { - // println(ctx.index.database) - replaceToList(ctx) + replaceSymbols(ctx) + replaceTupleZipped(ctx) + @@ -270,6 +279,8 @@ case class Scalacollectioncompat_newcollections(index: SemanticdbIndex) replaceMutSetMapPlus(ctx) + replaceMutMapUpdated(ctx) + replaceIterableSameElements(ctx) + - replaceArrayBuilderMake(ctx) + replaceArrayBuilderMake(ctx) + + replaceMapMapValues(ctx) + } }