The philosophy of Nothing
tronicek at fit.cvut.cz
tronicek at fit.cvut.cz
Sun Nov 29 21:25:33 PST 2009
Hi Paul,
as far as I know, Nothing is used only by compiler. And I do not see any
benifits if I was allowed to use it as an ordinary type in my code.
What is the primary purpose of Nothing?
Look at closure #() { throw new AssertionError(); }
Compiler must infer the return type here. But what it should be?
It can be anything because the closure never returns normally.
So, compiler will use Nothing which is a subclass of any type.
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Paul Benedict napsal(a):
> Thanks Neal. Reiner, your explanation was very good.
>
> So basically Nothing can be used outside of closures:
> public Nothing throwMe(RuntimeException t) {
> throw t;
> }
>
> 1) Does the Java compiler have to prove a method can never return
> normally?
>
> 2) What is the benefit of telling the compiler the method *must* throw
> an Exception? Don't say read the spec :-) I did, but it's sparse on
> the purpose
>
> 3) For a method that returns Nothing, if a class transformer alters
> the method body and actually issues a return, what happens? is a JVM
> Error thrown?
>
> Paul
>
>
More information about the coin-dev
mailing list