Skip to content

Class wrapper causes infinite evaluation/evaluation to fail #853

@kasiaMarek

Description

@kasiaMarek

For the following code evaluation gets stuck in a loop for Scala 2 and throws StackOverflowException for Scala 3.

class Animal(age: Int)

class Rabbit(age: Int) extends Animal(age):
  val id = Rabbit.tag
  Rabbit.tag += 1
  def getId = id

object Rabbit:
  val basic = Rabbit(0)
  var tag: Int = 0

val peter = Rabbit(2)

Upstream issue: scalameta/metals#4796

The problem is caused by class MdocApp wrapper. Changing it to object MdocApp fixes the issue but causes other issues (with thread deadlocks), full track of this problem in kept in scala-cli repository: VirtusLab/scala-cli#2247.

A proper fix should divide the code so classes/objects etc. are put in an object and rest is put inside of a class. Preferably the solution should be done in such a way it can be shared between mdoc and scala-cli (e.g. the compiler repl).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions