Почему не выдаёт ошибку компиляции?

У меня ниже фрагмент кода

object SubClass extends MyTrait {
  private[this] val a = 10

  def main(args: Array[String]) {
      println(a)
  }

}

trait MyTrait {
  protected val a = 5

}

И это дает следующую ошибку времени выполнения. Может кто-нибудь объяснить, почему мы не поймали это во время компиляции.

Исключение в потоке «main» java.lang.ClassFormatError: повторяющееся имя поля и подпись в файле класса SubClass $ в java.lang.ClassLoader.defineClass1 (собственный метод) в java.lang.ClassLoader.defineClassCond (ClassLoader.java:631) в java. lang.ClassLoader.defineClass (ClassLoader.java:615) в java.security.SecureClassLoader.defineClass (SecureClassLoader.java:141) в java.net.URLClassLoader.defineClass (URLClassLoader.javaLoader.javaLoader. $ 000 (URLClassLoader.java:58) в java.net.URLClassLoader $ 1.run (URLClassLoader.java:197) в java.security.AccessController.doPrivileged (собственный метод) в java.net.URLClassLoader.findClass (URLClassLoader. ) в java.lang.ClassLoader.loadClass (ClassLoader.java:306) в sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) в java.lang.ClassLoader.loadClass (ClassLoader.java:247) в подклассе .main (TraitTest.scala)


person pankajmi    schedule 08.08.2013    source источник


Ответы (1)


Потому что в программном обеспечении есть ошибки?

https://issues.scala-lang.org/browse/SI-7475

Это было бы мое предположение.

Соответствующий билет недавно привлек внимание:

https://issues.scala-lang.org/browse/SI-2568

person som-snytt    schedule 08.08.2013