I noticed this breaking (for me using it with OGNL) change in 2.9.0-1:
I find that, in 2.9, methods declared in a trait become volatile when mixed in a class:
Example in 2.9.0-1
import java.lang.reflect.Modifier
trait SuperTrait {
def getKnoll = "Kanutten"
}
class KlassWithKnoll extends SuperTrait {
def getKnall = "Mars"
}
val qsc = classOf[KlassWithKnoll]
val knollGetter = qsc.getDeclaredMethod("getKnoll")
println("isVolatile: " + Modifier.isVolatile(knollGetter.getModifiers()))
This prints out
isVolatile: true
But in 2.8.1:
it prints out
isVolatile: false
This is actually a breaking change for me as OGNL refuses to execute volatile (why I don't know) in its expressions.
So - my question is; Why was this change made?