Skip to content

Commit e535f77

Browse files
authored
Merge pull request #594 from iusildra/skip-exported-and-boxesruntime
Skip exported methods and BoxeRuntimes
2 parents 3dc1c9f + 4e13d9c commit e535f77

File tree

3 files changed

+38
-4
lines changed

3 files changed

+38
-4
lines changed

modules/core/src/main/scala/ch/epfl/scala/debugadapter/internal/stacktrace/RuntimeStepFilter.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ private[internal] object RuntimeStepFilter {
2727
"scala.runtime.LazyLong",
2828
"scala.runtime.LazyFloat",
2929
"scala.runtime.LazyDouble",
30-
"scala.runtime.LazyUnit"
30+
"scala.runtime.LazyUnit",
31+
"scala.runtime.BoxesRunTime"
3132
)
3233
private val scala3ClassesToSkip = scalaClassesToSkip ++ Set("scala.runtime.LazyVals$")
3334
private val scala2ClassesToSkip = scalaClassesToSkip

modules/tests/src/test/scala/ch/epfl/scala/debugadapter/StepFilterTests.scala

+35-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,41 @@ class Scala3StepFilterTests extends StepFilterTests(ScalaVersion.`3.1+`) {
2323
check(Breakpoint(7), StepIn.method(if (isScala3) "Main.m(message: String): Unit" else "Main$.mTarget(String)"))
2424
}
2525

26+
test("skip boxing methods") {
27+
val source =
28+
"""|package example
29+
|
30+
|object Main {
31+
| def main(args: Array[String]): Unit = {
32+
| val f: Int => String = x => x.toString
33+
| f(1)
34+
| }
35+
|}""".stripMargin
36+
implicit val debuggee: TestingDebuggee = TestingDebuggee.mainClass(source, "example.Main", scalaVersion)
37+
check(Breakpoint(6), StepIn.line(5))
38+
}
39+
40+
test("skip exported methods") {
41+
val source =
42+
"""|package example
43+
|
44+
|case class A():
45+
| def aa = 42
46+
|
47+
|case class B(a: A):
48+
| export a.*
49+
|
50+
|@main def Main =
51+
| val b = B(A())
52+
| b.aa
53+
|""".stripMargin
54+
implicit val debuggee: TestingDebuggee = TestingDebuggee.mainClass(source, "example.Main", scalaVersion)
55+
check(
56+
Breakpoint(11),
57+
StepIn.line(4)
58+
)
59+
}
60+
2661
test("given lazy val") {
2762
val source =
2863
"""|package example
@@ -737,8 +772,6 @@ abstract class StepFilterTests(protected val scalaVersion: ScalaVersion) extends
737772
Breakpoint(31),
738773
StepIn.line(17),
739774
Breakpoint(32),
740-
StepIn.method("BoxesRunTime.boxToInteger(int): Integer"),
741-
StepOut.line(32),
742775
StepIn.line(18),
743776
Breakpoint(33),
744777
StepIn.line(19)

modules/unpickler/src/main/scala/ch/epfl/scala/debugadapter/internal/stacktrace/Scala3Unpickler.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -414,5 +414,5 @@ class Scala3Unpickler(
414414
case BinaryMethod(_, _, Setter) => true
415415
case BinaryMethod(_, _, MixinForwarder) => true
416416
case BinaryMethod(_, _, TraitStaticAccessor) => true
417-
case BinaryMethod(_, sym, _) => sym.isSynthetic
417+
case BinaryMethod(_, sym, _) => sym.isSynthetic || sym.isExport
418418
case _ => false

0 commit comments

Comments
 (0)