Skip to content

Wrong position for inlined pure arguments #6026

Closed
@nicolasstucki

Description

@nicolasstucki
class Foo {
  inline def fun(x: String): String = x
  def foo = fun("abc")
}
sbt:dotty> dotc Foo.scala -Xprint:front -Yprint-pos -Ydebug-pos
[warn] Multiple main classes detected.  Run 'show discoveredMainClasses' to see the list
[info] Running (fork) dotty.tools.dotc.Main -classpath /Users/nicolasstucki/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.8.jar:/Users/nicolasstucki/GitHub/dotty/library/../out/bootstrap/dotty-library-bootstrapped/scala-0.14/dotty-library_0.14-0.14.0-bin-SNAPSHOT.jar Foo.scala -Xprint:front -Yprint-pos -Ydebug-pos
result of Foo.scala after frontend:
package <empty>@Foo.scala<0..0> {
  class Foo() extends [email protected]<6..6>@
    Foo.scala<6..6>
  ()@Foo.scala<6..6> { 
    inline def fun(
      x: [email protected]<32..38>@
        Foo.scala[29..38]
    ): [email protected]<41..47> = 
      [email protected]<50..51> :
        [email protected]<41..47>
      @Foo.scala<41..51>
    @Foo.scala[14..25..51]
    def foo: String = 
      /* inlined from 
        [email protected]<64..64>.fun@
          Foo.scala<64..67>
        ("abc"@Foo.scala<68..73>)@
          Foo.scala<64..74>
       */ 
        {
          "abc"@Foo.scala<50..51> :
            [email protected]<41..47>
          @Foo.scala<64..74>
        }
      @Foo.scala<64..74>
    @Foo.scala[54..58..74]
  }@Foo.scala[0..6..76]
}@Foo.scala<0..76>

We can see that the position before inlining was "abc"@Foo.scala<68..73> but after inlining it becomes "abc"@Foo.scala<50..51> which is the position of the x in the body of fun.

#6024 will add a way to test these positions.

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