Skip to content

find-member recursion #18263

Closed
Closed
@soronpo

Description

@soronpo

Not completely sure there is a bug. I found this trying to minimize a regression that yielded this bug, but eventually got an example that fails on all 3.x.x releases.

Compiler version

3.x.x

Minimized code

sealed trait Scope
sealed trait Domain extends Scope
object Domain extends Domain

trait Baz[T]
def baz(using ck: Scope): Baz[ck.type] = ???

class Foo extends scala.reflect.Selectable:
  type TScope = Domain
  final protected given TScope = Domain

object ID:
  val internal1 = new Foo:
    val ii = new Foo:
      val x = baz
  val z = internal1.ii.x //error

Output

Recursion limit exceeded.
Maybe there is an illegal cyclic reference?
If that's not the case, you could also try to increase the stacksize using the -Xss JVM option.
A recurring operation is (inner to outer):

  find-member Foo#given_TScope
  find-member Foo#given_TScope
  find-member Foo#given_TScope
  find-member Foo#given_TScope
  find-member Foo#given_TScope
  find-member Foo#given_TScope
  find-member Foo#given_TScope
  find-member Foo#given_TScope
  find-member Foo#given_TScope
  find-member Foo#given_TScope
  ...

  find-member Foo#given_TScope
  find-member Foo#given_TScope

Expectation

No error.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions