It would appear that it is possible to change the implementation of a method on a class with a trait such as follows:
trait Abstract { self: Result => override def userRepr = "abstract" } abstract class Result { def userRepr: String = "wtv" } case class ValDefResult(name: String) extends Result { override def userRepr = name } val a = new ValDefResult("asd") with Abstract a.userRepr Live code is available here: http://www.scalakata.com/52534e2fe4b0b1a1c4daa436
But now I would like to call the previous or super implementation of the function such as follows:
trait Abstract { self: Result => override def userRepr = "abstract" + self.userRepr } or
trait Abstract { self: Result => override def userRepr = "abstract" + super.userRepr } However, none of these alternatives compile. Any idea how this could be accomplished?