Skip to content

Incorrect positions / interactive path on mutiple variable declaration #22207

Open
@kasiaMarek

Description

@kasiaMarek

Compiler version

3.5.0

Minimized code

val xx, yy, zz = 1

Output

[[syntax trees at end of                     typer]] // demo.scala
package <empty>@demo.scala<0..0> {
  final lazy module val demo$package: demo$package@demo.scala<0..0> =
    new demo$package@demo.scala<0..0>@demo.scala<0..0>@demo.scala<0..0>()@
      demo.scala<0..0>
  @demo.scala<0..0>
  final module class demo$package() extends Object@demo.scala<0..0>@
    demo.scala<0..0>()@demo.scala<0..0> {
    this: demo$package@demo.scala<0..0>.type@demo.scala<0..0> =>
    val xx: Int = 1@demo.scala<17..18>@demo.scala[0..4..18]
    val yy: Int = 1@demo.scala<17..18>@demo.scala[0..8..18]
    val zz: Int = 1@demo.scala<17..18>@demo.scala[0..12..18]
  }@demo.scala<0..18>
}@demo.scala<0..18>

Problem

Start and end position for all definitions are the same. This leads to incorrect Interactive.pathTo for position on xx or yy definition -- head being zz definition.

Expectation

I would either expect positions on multiple declaration to be solved as in Scala 2 (though this is also buggy there):

xx -- `4..18`
yy --`8..18`
zz -- `12..18`

or for Interactive.pathTo to account for that situation.

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