Open
Description
The checking for self references being passed to (or being used in) super constructor calls is too eager:
scala> class Foo(f: Int => String)
defined class Foo
scala> object Bar extends Foo(i => Bar.baz(i)) { def baz(i: Int): String = "" }
<console>:8: error: super constructor cannot be passed a self reference unless parameter is declared by-name
object Bar extends Foo(i => Bar.baz(i)) { def baz(i: Int): String = "" }
Ok, so let's use by-name parameters:
scala> class Foo(f: => Int)
defined class Foo
scala> object Bar extends Foo(Bar.i) { val i = 12 }
<console>:8: error: super constructor cannot be passed a self reference unless parameter is declared by-name
object Bar extends Foo(Bar.i) { val i = 12 }