Skip to content

Unclear error message with mutually recursive methods with inferred return types #2001

@smarter

Description

@smarter
class A {
  def odd(x: Int) = if (x == 0) false else !even(x-1)
  def even(x: Int) = if (x == 0) true else !odd(x-1)
}

dotty:

3 |  def even(x: Int) = if (x == 0) true else !odd(x-1)
  |                                            ^^^
  |                                     cyclic reference involving method odd

Contrast with scalac:

mutrec.scala:3: error: recursive method odd needs result type
  def even(x: Int) = if (x == 0) true else !odd(x-1)
                                            ^

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions