Skip to content

Wrong source when mixing inline and transparent inline #16609

Open
@odersky

Description

@odersky

Compiler version

3.2.2 RC2

Minimized example

Two files.

// boundary.scala
object boundary:
  transparent inline def apply[R](inline body: R): R =  // works if `transparent` is dropped
    body

2nd file:

// Test.scala
inline def f [T](fallback: => T) = fallback
def foo(x: Int): Int = boundary.apply {
  f(10)
}

Output

Under -Ycheck:all:

*** error while checking Test.scala after phase inlining ***
java.lang.AssertionError: assertion failed: wrong source set for 10 # -1 of class dotty.tools.dotc.ast.Trees$Literal, set to boundary.scala but context had Test.scala
 <permanent> while running Ycheck on Test.scala
exception occurred while compiling Test.scala, boundary.scala
java.lang.AssertionError: assertion failed: wrong source set for 10 # -1 of class dotty.tools.dotc.ast.Trees$Literal, set to boundary.scala but context had Test.scala
 <permanent> while compiling Test.scala, boundary.scala
Exception in thread "main" java.lang.AssertionError: assertion failed: wrong source set for 10 # -1 of class dotty.tools.dotc.ast.Trees$Literal, set to boundary.scala but context had Test.scala
 <permanent>
	at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
	at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:36)
	at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:45)
	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1655)
	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1655)
	at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1554)
	at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1656)

Expectation

Should pass Ycheck

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions