Skip to content

Too eager "super constructor cannot be passed a self reference" #7666

Open
@scabug

Description

@scabug

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 }

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions