diff --git a/scalafix/input-0_14/src/main/scala/fix/v0_14_0/FixQuery.scala b/scalafix/input-0_14/src/main/scala/fix/v0_14_0/FixQuery.scala new file mode 100644 index 0000000000..8788ec6dbc --- /dev/null +++ b/scalafix/input-0_14/src/main/scala/fix/v0_14_0/FixQuery.scala @@ -0,0 +1,15 @@ +/* +rule = FixQuery + */ +package fix.v0_14_0 + +import com.spotify.scio.bigquery.types.BigQueryType.{HasQuery, Query} + +object FixQuery { + + val a: HasQuery = ??? + val b: Query[_] = ??? + + a.query + b.query +} diff --git a/scalafix/output-0_14/src/main/scala/fix/v0_14_0/FixQuery.scala b/scalafix/output-0_14/src/main/scala/fix/v0_14_0/FixQuery.scala new file mode 100644 index 0000000000..50390be40f --- /dev/null +++ b/scalafix/output-0_14/src/main/scala/fix/v0_14_0/FixQuery.scala @@ -0,0 +1,12 @@ +package fix.v0_14_0 + +import com.spotify.scio.bigquery.types.BigQueryType.{HasQuery, Query} + +object FixQuery { + + val a: HasQuery = ??? + val b: Query[_] = ??? + + a.queryRaw + b.queryRaw +} diff --git a/scalafix/rules/src/main/resources/META-INF/services/scalafix.v1.Rule b/scalafix/rules/src/main/resources/META-INF/services/scalafix.v1.Rule index eeb0d0951a..d28e4bcee4 100644 --- a/scalafix/rules/src/main/resources/META-INF/services/scalafix.v1.Rule +++ b/scalafix/rules/src/main/resources/META-INF/services/scalafix.v1.Rule @@ -21,4 +21,5 @@ fix.v0_14_0.FixDynamicAvro fix.v0_14_0.FixGenericAvro fix.v0_14_0.FixLogicalTypeSupplier fix.v0_14_0.FixSMBCharSequenceKey +fix.v0_14_0.FixQuery diff --git a/scalafix/rules/src/main/scala/fix/v0_14_0/FixQuery.scala b/scalafix/rules/src/main/scala/fix/v0_14_0/FixQuery.scala new file mode 100644 index 0000000000..b6e83ac0d9 --- /dev/null +++ b/scalafix/rules/src/main/scala/fix/v0_14_0/FixQuery.scala @@ -0,0 +1,22 @@ +package fix.v0_14_0 + +import scalafix.v1._ +import scala.meta._ + +object FixQuery { + val HasQueryMatcher: SymbolMatcher = + SymbolMatcher.normalized("com/spotify/scio/bigquery/types/BigQueryType/HasQuery#query") +} + +class FixQuery extends SemanticRule("FixQuery") { + + import FixQuery._ + + override def fix(implicit doc: SemanticDocument): Patch = { + doc.tree.collect { + case t @ q"$qual.$fn" if HasQueryMatcher.matches(fn) => + Patch.replaceTree(t, q"$qual.queryRaw".syntax) + }.asPatch + } + +}