From 7b068716ff11c137aa5a8e1cfe54cf2f6832f569 Mon Sep 17 00:00:00 2001 From: Claire McGinty Date: Tue, 13 Feb 2024 11:25:39 -0500 Subject: [PATCH] Fix Scalafix rule for Avro package import (#5239) --- .../scala/fix/v0_14_0/FixAvroCoder10.scala | 19 +++++++++++++++++++ .../scala/fix/v0_14_0/FixAvroCoder10.scala | 16 ++++++++++++++++ .../main/scala/fix/v0_14_0/FixAvroCoder.scala | 7 ++++++- 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 scalafix/input-0_14/src/main/scala/fix/v0_14_0/FixAvroCoder10.scala create mode 100644 scalafix/output-0_14/src/main/scala/fix/v0_14_0/FixAvroCoder10.scala diff --git a/scalafix/input-0_14/src/main/scala/fix/v0_14_0/FixAvroCoder10.scala b/scalafix/input-0_14/src/main/scala/fix/v0_14_0/FixAvroCoder10.scala new file mode 100644 index 0000000000..e95bcae858 --- /dev/null +++ b/scalafix/input-0_14/src/main/scala/fix/v0_14_0/FixAvroCoder10.scala @@ -0,0 +1,19 @@ +/* +rule = FixAvroCoder + */ +package fix.v0_14_0 + +import com.spotify.scio.avro._ +import com.spotify.scio.io.TextIO +import com.spotify.scio.testing.PipelineSpec + +object FixAvroCoder10 extends PipelineSpec { + object SomeScioJob { + def main(args: Array[String]): Unit = ??? + } + + JobTest[SomeScioJob.type] + .input(TextIO("a"), Seq()) + .input(AvroIO[A]("b"), Seq()) + .input(TextIO("c"), Seq()) +} diff --git a/scalafix/output-0_14/src/main/scala/fix/v0_14_0/FixAvroCoder10.scala b/scalafix/output-0_14/src/main/scala/fix/v0_14_0/FixAvroCoder10.scala new file mode 100644 index 0000000000..a7ca13912b --- /dev/null +++ b/scalafix/output-0_14/src/main/scala/fix/v0_14_0/FixAvroCoder10.scala @@ -0,0 +1,16 @@ +package fix.v0_14_0 + +import com.spotify.scio.avro._ +import com.spotify.scio.io.TextIO +import com.spotify.scio.testing.PipelineSpec + +object FixAvroCoder10 extends PipelineSpec { + object SomeScioJob { + def main(args: Array[String]): Unit = ??? + } + + JobTest[SomeScioJob.type] + .input(TextIO("a"), Seq()) + .input(AvroIO[A]("b"), Seq()) + .input(TextIO("c"), Seq()) +} diff --git a/scalafix/rules/src/main/scala/fix/v0_14_0/FixAvroCoder.scala b/scalafix/rules/src/main/scala/fix/v0_14_0/FixAvroCoder.scala index 37f11aa30f..c05778d864 100644 --- a/scalafix/rules/src/main/scala/fix/v0_14_0/FixAvroCoder.scala +++ b/scalafix/rules/src/main/scala/fix/v0_14_0/FixAvroCoder.scala @@ -159,7 +159,12 @@ class FixAvroCoder extends SemanticRule("FixAvroCoder") { Patch.removeImportee(i) + Patch.addGlobalImport(avroImport) }.asPatch case importer"com.spotify.scio.avro.{..$imps}" => - imps.map(i => Patch.removeImportee(i) + Patch.addGlobalImport(avroImport)).asPatch + imps + .filterNot { + case importee"_" => true + case _ => false + } + .map(i => Patch.removeImportee(i) + Patch.addGlobalImport(avroImport)).asPatch case t @ q"$obj.$fn" if AvroCoderMatcher.matches(fn.symbol) => // fix direct usage of Coder.avro* Patch.replaceTree(t, q"$fn".syntax) + Patch.addGlobalImport(avroImport)