Skip to content

Recursive type throws RecursionOverflow: Recursion limit exceeded #17380

Closed
@steinybot

Description

@steinybot

Compiler version

3.3.0-RC3

Minimized code

class C { type T; type U }

type X = (C { type U = T; def u: U } { type T = String })

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.
For the unprocessed stack trace, compile with -Yno-decode-stacktraces.
A recurring operation is (inner to outer):

  find-member C#T
  find-member C#T
  find-member C#U
  find-member C#T
  find-member C#U
  find-member C#T
  find-member C#U
  find-member C#T
  find-member C#U
  find-member C#T
  ...

  find-member C#T
  find-member C#U
  find-member C#T
  find-member C#U
  find-member C#T
  find-member C#U
  find-member C#T
  find-member C#U
  find-member C#T
  find-member C#U

Expectation

It should compile (I think?).

I was trying to figure out what these RecTypes were so I took the example from lookuprefined.scala and added the u member to it.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions