diff --git a/scalafix/input/src/main/scala/fix/RetainSrc.scala b/scalafix/input/src/main/scala/fix/RetainSrc.scala index 2ba1ca6c..056dc831 100644 --- a/scalafix/input/src/main/scala/fix/RetainSrc.scala +++ b/scalafix/input/src/main/scala/fix/RetainSrc.scala @@ -3,9 +3,10 @@ rule = "scala:fix.Scalacollectioncompat_NewCollections" */ package fix -import scala.collection.mutable.Map +import scala.collection.mutable.{Map, Set} -class MethodRenames(xs: Map[Int, Int]) { +class MethodRenames(xs: Map[Int, Int], ys: Set[Int]) { xs.retain((_, _) => true) xs.retain{case (x, y) => true} + ys.retain(_ => true) } \ No newline at end of file diff --git a/scalafix/output/src/main/scala/fix/RetainSrc.scala b/scalafix/output/src/main/scala/fix/RetainSrc.scala index 950570c6..c5ed3707 100644 --- a/scalafix/output/src/main/scala/fix/RetainSrc.scala +++ b/scalafix/output/src/main/scala/fix/RetainSrc.scala @@ -1,8 +1,9 @@ package fix -import scala.collection.mutable.Map +import scala.collection.mutable.{Map, Set} -class MethodRenames(xs: Map[Int, Int]) { +class MethodRenames(xs: Map[Int, Int], ys: Set[Int]) { xs.filterInPlace{case (_, _) => true} xs.filterInPlace{case (x, y) => true} + ys.filterInPlace(_ => true) } \ 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 8f660cb8..9d56ef1a 100644 --- a/scalafix/rules/src/main/scala/fix/Scalacollectioncompat_NewCollections.scala +++ b/scalafix/rules/src/main/scala/fix/Scalacollectioncompat_NewCollections.scala @@ -30,17 +30,28 @@ case class Scalacollectioncompat_NewCollections(index: SemanticdbIndex) Symbol("_root_.scala.runtime.Tuple3Zipped.Ops.zipped.") ) - val retain = + val retainMap = SymbolMatcher.normalized( Symbol("_root_.scala.collection.mutable.MapLike.retain.") ) + val retainSet = + SymbolMatcher.normalized( + Symbol("_root_.scala.collection.mutable.SetLike.retain.") + ) + + def replaceMutableSet(ctx: RuleCtx) = + ctx.tree.collect { + case retainSet(n: Name) => + ctx.replaceTree(n, "filterInPlace") + }.asPatch + def replaceMutableMap(ctx: RuleCtx) = ctx.tree.collect { - case Term.Apply(Term.Select(_, retain(n: Name)), List(_: Term.PartialFunction)) => + case Term.Apply(Term.Select(_, retainMap(n: Name)), List(_: Term.PartialFunction)) => ctx.replaceTree(n, "filterInPlace") - case Term.Apply(Term.Select(_, retain(n: Name)), List(_: Term.Function)) => + case Term.Apply(Term.Select(_, retainMap(n: Name)), List(_: Term.Function)) => (for { name <- n.tokens.lastOption open <- ctx.tokenList.find(name)(t => t.is[Token.LeftParen]) @@ -128,11 +139,14 @@ case class Scalacollectioncompat_NewCollections(index: SemanticdbIndex) }.asPatch override def fix(ctx: RuleCtx): Patch = { + // println(ctx.index.database) + replaceToList(ctx) + replaceSymbols(ctx) + replaceTupleZipped(ctx) + replaceCopyToBuffer(ctx) + replaceStreamAppend(ctx) + - replaceMutableMap(ctx) + replaceMutableMap(ctx) + + replaceMutableSet(ctx) } }