I’m copying this message here from discord, as it may need additional discussion and reflection.
Can someone help me understand this compiler warning.
[warn] /Users/jnewton/Repos/regular-type-expression/cl-robdd-scala/src/test/scala/bdd/BddTestSuite.scala:93:36: Auto-application to `()` is deprecated. Supply the empty argument list `()` explicitly to invoke method size,
[warn] or remove the empty argument list from its definition (Java-defined methods are exempt).
[warn] In Scala 3, an unapplied method like this will be eta-expanded into a function.
[warn] case _: BddTerm => assert(bdd.size() == 1)
[warn] ^
Is this really a warning, telling me to do what I’m already doing? or is it rather just an info message and should not be a warning at all? Or am I reading the message wrong?
Is the message telling me to omit the ()
or to keep them there?
I’m confused.
Here is the offending code
def genSamples(): Set[Bdd] = {
...
}
test("size") {
withNewBddHash {
val samples = genSamples()
for (bdd <- samples) {
bdd match {
case _: BddTerm => assert(bdd.size() == 1)
case b: BddNode => assert(bdd.size() <= 1 + b.positive.size() + b.negative.size()) // maybe less because some nodes or terms might be shared
}
}
}
}
The size
method is indeed defined using parens ()
sealed abstract class Bdd {
...
def size():Int = {
...
}
...
}