Skip to content

Commit

Permalink
Port and adjust #288 to scala-3 branch (#289)
Browse files Browse the repository at this point in the history
- cleanup majority of the compilation warnings
- cleanup unused warnings from macro-generated code (Scala 2 only)
  • Loading branch information
krzemin authored Mar 17, 2023
1 parent d679766 commit 64e1413
Show file tree
Hide file tree
Showing 13 changed files with 43 additions and 32 deletions.
6 changes: 3 additions & 3 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ val settings = Seq(
"-feature",
"-language:higherKinds",
"-Wunused:patvars",
// "-Xfatal-warnings",
"-Xfatal-warnings",
"-Xlint:adapted-args",
"-Xlint:delayedinit-select",
"-Xlint:doc-detached",
Expand All @@ -76,7 +76,8 @@ val settings = Seq(
"-Ywarn-unused:imports",
"-Ywarn-macros:after",
"-Ytasty-reader",
"-Wconf:origin=scala.collection.compat.*:s"
"-Wconf:origin=scala.collection.compat.*:s",
"-Wconf:src=io/scalaland/chimney/cats/package.scala:s" // silence package object inheritance deprecation
)
case Some((2, 12)) =>
Seq(
Expand All @@ -90,7 +91,6 @@ val settings = Seq(
"-feature",
"-language:higherKinds",
"-Xexperimental",
// "-Xfatal-warnings",
"-Xfuture",
"-Xlint:adapted-args",
"-Xlint:by-name-right-associative",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,11 @@ trait Model extends TransformerConfigSupport {
case class InstanceClause(matchName: Option[TermName], matchTpe: Type, body: DerivedTree) {
def toPatMatClauseTree: Tree = {
matchName match {
case Some(name) => cq"$name: $matchTpe => ${body.tree}"
case None => cq"_: $matchTpe => ${body.tree}"
case Some(name) =>
// in general pat var name is not tracked whether it was used in body tree
// introducing synthetic val _ helps avoid reporting unused warnings in macro-generated code
cq"$name: $matchTpe => { val _ = $name; ${body.tree} }"
case None => cq"_: $matchTpe => ${body.tree}"
}
}
def mapBody(f: DerivedTree => DerivedTree): InstanceClause = copy(body = f(body))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ trait TransformerMacros extends MappingMacros with TargetConstructorMacros with
C: WeakTypeTag,
InstanceFlags: WeakTypeTag,
ScopeFlags: WeakTypeTag
](derivationTarget: DerivationTarget)(callTransform: (Tree, Tree) => Tree): Tree = {
](derivationTarget: DerivationTarget, tcTree: c.Tree)(callTransform: (Tree, Tree) => Tree): Tree = {
val tiName = freshTermName("ti")

val config = readConfig[C, InstanceFlags, ScopeFlags]
Expand All @@ -72,8 +72,11 @@ trait TransformerMacros extends MappingMacros with TargetConstructorMacros with
val derivedTransformerTree = genTransformer[From, To](config)

q"""
final val $tiName = ${c.prefix.tree}
{
val _ = $tcTree // hack to avoid unused warnings
val $tiName = ${c.prefix.tree}
${callTransform(derivedTransformerTree, q"$tiName.source")}
}
"""
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ class TransformerBlackboxMacros(val c: blackbox.Context) extends TransformerMacr
C: WeakTypeTag,
InstanceFlags: WeakTypeTag,
ScopeFlags: WeakTypeTag
](@unused tc: c.Tree): c.Expr[To] = {
](tc: c.Tree): c.Expr[To] = {
c.Expr[To](
expandTransform[From, To, C, InstanceFlags, ScopeFlags](DerivationTarget.TotalTransformer) {
expandTransform[From, To, C, InstanceFlags, ScopeFlags](DerivationTarget.TotalTransformer, tc) {
(derivedTransformer, srcField) =>
derivedTransformer.callTransform(srcField)
}
Expand All @@ -55,9 +55,9 @@ class TransformerBlackboxMacros(val c: blackbox.Context) extends TransformerMacr
C: WeakTypeTag,
InstanceFlags: WeakTypeTag,
ScopeFlags: WeakTypeTag
](@unused tc: c.Tree): c.Expr[To] = {
](tc: c.Tree): c.Expr[To] = {
c.Expr[To](
expandTransform[From, To, C, InstanceFlags, ScopeFlags](DerivationTarget.PartialTransformer()) {
expandTransform[From, To, C, InstanceFlags, ScopeFlags](DerivationTarget.PartialTransformer(), tc) {
(derivedTransformer, srcField) =>
derivedTransformer.callPartialTransform(srcField, q"false")
}
Expand All @@ -70,9 +70,9 @@ class TransformerBlackboxMacros(val c: blackbox.Context) extends TransformerMacr
C: WeakTypeTag,
InstanceFlags: WeakTypeTag,
ScopeFlags: WeakTypeTag
](@unused tc: c.Tree): c.Expr[To] = {
](tc: c.Tree): c.Expr[To] = {
c.Expr[To](
expandTransform[From, To, C, InstanceFlags, ScopeFlags](DerivationTarget.PartialTransformer()) {
expandTransform[From, To, C, InstanceFlags, ScopeFlags](DerivationTarget.PartialTransformer(), tc) {
(derivedTransformer, srcField) =>
derivedTransformer.callPartialTransform(srcField, q"true")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import utest.*
import io.scalaland.chimney.dsl.*
import io.scalaland.chimney.examples.javabeans.*

import scala.annotation.unused

object PartialTransformerJavaBeanSpec extends TestSuite {

val tests = Tests {
Expand Down Expand Up @@ -84,7 +86,7 @@ object PartialTransformerJavaBeanSpec extends TestSuite {
.check("", "Chimney can't derive transformation from MistypedSource to MistypedTarget")

locally {
implicit val config = TransformerConfiguration.default.enableBeanGetters
@unused implicit val config = TransformerConfiguration.default.enableBeanGetters

compileError("""
case class MistypedTarget(flag: Int)
Expand All @@ -101,7 +103,7 @@ object PartialTransformerJavaBeanSpec extends TestSuite {
test("""flag .disableBeanGetters""") {

test("should disable globally enabled .enableBeanGetters") {
implicit val config = TransformerConfiguration.default.enableBeanGetters
@unused implicit val config = TransformerConfiguration.default.enableBeanGetters

compileError(
"""
Expand Down Expand Up @@ -156,7 +158,7 @@ object PartialTransformerJavaBeanSpec extends TestSuite {
)

locally {
implicit val config = TransformerConfiguration.default.enableBeanSetters
@unused implicit val config = TransformerConfiguration.default.enableBeanSetters

compileError("""
CaseClassNoFlag("100", "name")
Expand Down Expand Up @@ -187,7 +189,7 @@ object PartialTransformerJavaBeanSpec extends TestSuite {
)

locally {
implicit val config = TransformerConfiguration.default.enableBeanSetters
@unused implicit val config = TransformerConfiguration.default.enableBeanSetters

compileError("""
CaseClassWithFlagMethod("100", "name")
Expand Down Expand Up @@ -229,7 +231,7 @@ object PartialTransformerJavaBeanSpec extends TestSuite {
test("""flag .disableBeanSetters""") {

test("should disable globally enabled .enableBeanSetters") {
implicit val config = TransformerConfiguration.default.enableBeanSetters
@unused implicit val config = TransformerConfiguration.default.enableBeanSetters

compileError("""
CaseClassWithFlag("100", "name", flag = true)
Expand Down Expand Up @@ -279,7 +281,7 @@ object PartialTransformerJavaBeanSpec extends TestSuite {
test("""flag .enableMethodAccessors""") {

test("should disable globally enabled .MethodAccessors") {
implicit val config = TransformerConfiguration.default.enableMethodAccessors
@unused implicit val config = TransformerConfiguration.default.enableMethodAccessors

compileError("""
CaseClassWithFlagMethod("100", "name")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import io.scalaland.chimney.examples.*
import io.scalaland.chimney.utils.OptionUtils.*
import utest.*

import scala.annotation.unused

object PartialTransformerProductSpec extends TestSuite {

val tests = Tests {
Expand Down Expand Up @@ -661,7 +663,7 @@ object PartialTransformerProductSpec extends TestSuite {
test("should disable globally enabled .enableDefaultValues") {
import products.Defaults.*

implicit val config = TransformerConfiguration.default.enableDefaultValues
@unused implicit val config = TransformerConfiguration.default.enableDefaultValues

compileError("""Source(1, "yy", 1.0).intoPartial[Target].disableDefaultValues.transform""").check(
"",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import io.scalaland.chimney.dsl.*
import io.scalaland.chimney.utils.OptionUtils.*
import utest.*

import scala.annotation.unused
import scala.collection.immutable.Queue
import scala.collection.mutable.ArrayBuffer

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import utest.*
import io.scalaland.chimney.dsl.*
import io.scalaland.chimney.examples.javabeans.*

import scala.annotation.unused

object TotalTransformerJavaBeansSpec extends TestSuite {

val tests = Tests {
Expand Down Expand Up @@ -78,7 +80,7 @@ object TotalTransformerJavaBeansSpec extends TestSuite {
.check("", "Chimney can't derive transformation from MistypedSource to MistypedTarget")

locally {
implicit val config = TransformerConfiguration.default.enableBeanGetters
@unused implicit val config = TransformerConfiguration.default.enableBeanGetters

compileError("""
case class MistypedTarget(flag: Int)
Expand All @@ -95,7 +97,7 @@ object TotalTransformerJavaBeansSpec extends TestSuite {
test("""flag .disableBeanGetters""") {

test("should disable globally enabled .enableBeanGetters") {
implicit val config = TransformerConfiguration.default.enableBeanGetters
@unused implicit val config = TransformerConfiguration.default.enableBeanGetters

compileError(
"""
Expand Down Expand Up @@ -148,7 +150,7 @@ object TotalTransformerJavaBeansSpec extends TestSuite {
)

locally {
implicit val config = TransformerConfiguration.default.enableBeanSetters
@unused implicit val config = TransformerConfiguration.default.enableBeanSetters

compileError("""
CaseClassNoFlag("100", "name")
Expand Down Expand Up @@ -179,7 +181,7 @@ object TotalTransformerJavaBeansSpec extends TestSuite {
)

locally {
implicit val config = TransformerConfiguration.default.enableBeanSetters
@unused implicit val config = TransformerConfiguration.default.enableBeanSetters

compileError("""
CaseClassWithFlagMethod("100", "name")
Expand Down Expand Up @@ -219,7 +221,7 @@ object TotalTransformerJavaBeansSpec extends TestSuite {
test("""flag .disableBeanSetters""") {

test("should disable globally enabled .enableBeanSetters") {
implicit val config = TransformerConfiguration.default.enableBeanSetters
@unused implicit val config = TransformerConfiguration.default.enableBeanSetters

compileError("""
CaseClassWithFlag("100", "name", flag = true)
Expand Down Expand Up @@ -267,7 +269,7 @@ object TotalTransformerJavaBeansSpec extends TestSuite {
test("""flag .enableMethodAccessors""") {

test("should disable globally enabled .MethodAccessors") {
implicit val config = TransformerConfiguration.default.enableMethodAccessors
@unused implicit val config = TransformerConfiguration.default.enableMethodAccessors

compileError("""
CaseClassWithFlagMethod("100", "name")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import io.scalaland.chimney.dsl.*
import io.scalaland.chimney.examples.*
import utest.*

import scala.annotation.unused

object TotalTransformerProductSpec extends TestSuite {

val tests = Tests {
Expand Down Expand Up @@ -327,7 +329,7 @@ object TotalTransformerProductSpec extends TestSuite {
test("should disable globally enabled .enableDefaultValues") {
import products.Defaults.*

implicit val config = TransformerConfiguration.default.enableDefaultValues
@unused implicit val config = TransformerConfiguration.default.enableDefaultValues

compileError("""Source(1, "yy", 1.0).into[Target].disableDefaultValues.transform""").check(
"",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import _root_.cats.kernel.Semigroup
import _root_.cats.Applicative
import io.scalaland.chimney.partial

import scala.collection.compat.*
import language.implicitConversions

/** @since 0.7.0 */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.scalaland.chimney.cats

import _root_.cats.syntax.semigroup.*
import io.scalaland.chimney.{partial, PartialTransformer}
import io.scalaland.chimney.partial
import utest.*

object PartialTransformerResultErrorSemigroupSpec extends TestSuite {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.scalaland.chimney.cats

import _root_.cats.syntax.semigroupal.*
import io.scalaland.chimney.{partial, PartialTransformer}
import io.scalaland.chimney.partial
import utest.*

object PartialTransformerResultSemigroupalSpec extends TestSuite {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import _root_.cats.syntax.semigroup.*
import _root_.cats.syntax.semigroupal.*
import cats.Semigroupal
import io.scalaland.chimney.partial
import io.scalaland.chimney.PartialTransformer
import io.scalaland.chimney.partial.{Error, PathElement}
import io.scalaland.chimney.dsl.*
import io.scalaland.chimney.examples.trip.*
Expand Down

0 comments on commit 64e1413

Please sign in to comment.