[#162] | project: specification | priority: high | category: bug | |
---|---|---|---|---|
submitter | assigned to | status | date submitted | |
Burak | Martin | fixed | 2003-09-30 13:04:31.0 | |
subject | handling of null-expression | |||
code |
object bug { def main(args:Array[String]):Unit = { var ch = null.asInstanceOf[char]; } } |
|||
what happened | /tmp> scalac bug.scala /tmp> java bug Exception in thread "main" java.lang.NullPointerException at bug$.main(bug.scala:4) at bug.main(bug.scala) |
|||
what expected | according to the spec (p.47), cast should do nothing. Hence running the program must not result in an NullPointerException. | |||
[back to overview] |
Michel edited on 2003-09-30 13:58:33.0 |
The specification should say what to do when, like here, we try to cast null to a value type. Should we raise a null pointer exception, like here? Or raise a ClassCastException ? Or return the "zero" for the given type?
The current specification says "asInstanceOf[T] always returns the null object itself" (when applied on the |
Martin edited on 2003-10-06 10:31:34.0 |
I have changed the spec as follows:
\lstinline@asInstanceOf[$T\,$]@ returns the ``null'' object itself if $T$ conforms to \lstinline@scala.AnyRef@, and throws a \lstinline@NullPointerExcetpion@ otherwise. |