scala/scala — comment on commit 2e92de4cd66532404081eec6b9e82c6f85b51434
File:  line 0
By paulp:

I think I'm motivated more by the difference in syntactic overhead. This way I get to override toString in the base class once and pass the name in as a parameter. I don't think there's any way to accomplish that without creating a field, either explicitly or accidentally by virtue of referencing the constructor parameter. There will be if/when I get around to implementing this plan:

abstract case class TypeRef(pre: Type, sym: Symbol, args: List[Type])

That would desugar to defs for pre, sym, args, instead of vals as it does now, which would allow subclasses for which one or more of those are constant to avoid the field.