Return Isn't Transparent

Howard Lovatt howard.lovatt at gmail.com
Tue Jul 20 04:02:18 PDT 2010


@ Neal,

I took up your suggestion of downloading BGGA and tried:

24:  int m() {
25:		final { ==> Nothing } return42 = { ==> return 42; };
26:		return42.invoke();
27: }

and got the error message:

Return42.java:27: missing return statement
	}
	       ^

So it would seem to me that BGGA only has return transparency for
"simple cases". This was the point I was trying to clarify, is return
transparency a general mechanism or does it have limitations?

 -- Howard.

On 20 July 2010 00:58, Neal Gafter <neal at gafter.com> wrote:
> On Mon, Jul 19, 2010 at 12:07 AM, Howard Lovatt <howard.lovatt at gmail.com>
> wrote:
>>
>> > Control-flow and reachability analysis is completely transparent in
>> > BGGA.
>>
>> That doesn't really answer the question directly.
>
> Then perhaps I don't understand the question.
>
>>
>> What about a minor variation in BGGA'ish syntax:
>>
>>  int m() {
>>   final { -> Nothing } return42 =  { -> return 42; }.();
>>   return42.();
>>   // Oops error - must return value from m
>>  }
>
> One could certainly imagine modifying BGGA so it gets it wrong as your
> comment suggests, but that's not an error in BGGA.  The end of m's body
> isn't reachable (because the last statement in m() doesn't complete
> normally).  This method returns 42.
>
> You can download BGGA and try these yourself.


More information about the lambda-dev mailing list