From aa7d19f06db9273060180856d6dd6f38a91c6903 Mon Sep 17 00:00:00 2001 From: Som Snytt Date: Sat, 6 May 2023 16:53:06 -0700 Subject: [PATCH] Method calls get a line number --- .../tools/backend/jvm/BCodeBodyBuilder.scala | 1 + tests/run/apply-line.scala | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 tests/run/apply-line.scala diff --git a/compiler/src/dotty/tools/backend/jvm/BCodeBodyBuilder.scala b/compiler/src/dotty/tools/backend/jvm/BCodeBodyBuilder.scala index e7b5a0dad1bf..d1a67969d6de 100644 --- a/compiler/src/dotty/tools/backend/jvm/BCodeBodyBuilder.scala +++ b/compiler/src/dotty/tools/backend/jvm/BCodeBodyBuilder.scala @@ -866,6 +866,7 @@ trait BCodeBodyBuilder extends BCodeSkelBuilder { defn.ObjectClass } else qualSym } + lineNumber(app) generatedType = genCallMethod(sym, invokeStyle, app.span, receiverClass) } } diff --git a/tests/run/apply-line.scala b/tests/run/apply-line.scala new file mode 100644 index 000000000000..3da681fa9206 --- /dev/null +++ b/tests/run/apply-line.scala @@ -0,0 +1,26 @@ + +object Test: + + def void(): Unit = ??? + def self(): this.type = this + + def test(): Unit = + this // is line 8 + .self() + .void() + + @annotation.nowarn + def main(args: Array[String]): Unit = + try test() + catch (t: Throwable) => + t.getStackTrace.iterator + .filter(_.getFileName == "apply-line.scala") + .filter(_.getMethodName == "test") + .foreach(sf => assert(sf.getLineNumber == 10)) + +/* was +Test$.void(apply-line.scala:4) +Test$.test(apply-line.scala:8) +Test$.main(apply-line.scala:14) +Test.main(apply-line.scala) +*/