Scala 2.12.18 and Scala 2.13.11 (and also in Scala 3.3.0)
object main {
def main(args: Array[String]): Unit = {
val x = 123
}
}
Problem
Compiled bytecode
Compiled from "main.scala"
public final class main$ {
public static final main$ MODULE$;
public static {};
Code:
0: new #2 // class main$
3: dup
4: invokespecial #12 // Method "<init>":()V
7: putstatic #14 // Field MODULE$:Lmain$;
10: return
LineNumberTable:
line 1: 0
public void main(java.lang.String[]);
Code:
0: bipush 123
2: istore_2
3: return
LineNumberTable:
line 3: 0
line 4: 3 <----------- this line is not necessary, line 4 is a closing bracket
LocalVariableTable:
Start Length Slot Name Signature
3 1 2 x I
0 4 0 this Lmain$;
0 4 1 args [Ljava/lang/String;
private main$();
Code:
0: aload_0
1: invokespecial #22 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 1: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lmain$;
}
Here's how this line manifests in the debugger. The behavior is the same in Metals.
Reproduction steps
Scala 2.12.18 and Scala 2.13.11 (and also in Scala 3.3.0)
Problem
Compiled bytecode
Here's how this line manifests in the debugger. The behavior is the same in Metals.
https://github.com/scala/bug/assets/7115459/a6fbf11f-2d60-485c-802b-cba41236ac03
Expectation
The debug information line 4 is not generated.