[Patch] Java: Definite [Un]Assignment Issues
Per Bothner
per@bothner.com
Mon May 24 15:31:00 GMT 2004
Ranjit Mathew wrote:
> The first three - 16.2.{9,10,11}-definite-unassign-pass-3 - existed before
> my patch and represent our decision to simplify the handling of loops w.r.t.
> definite [un]assignment. See the comment for the "case LOOP_EXPR" in
> check_init() in java/check-init.c for reference. Unless we want to change
> that decision, I recommend that we simply mark these as expected "failures".
I have no objection to "changing that decision", I just didn't think
getting this working was a priority. I obviously would prefer that
we have it 100% correct. I also prefer an implementation that is
both reasonably fast and reasonably simple.
I think implementing tests like the following need not be very
complicated:
Assuming V is definitely unassigned before e, V is definitely
unassigned after S.
Basically, you run the check_init an extra time, but with the variables
unassigned. This is the "Assuming V is definitely unassigned" part.
You then intersect that result with the existing tests. Complications
are suppressing spurious errors during the auxiliary test, plus handling
continue statements. (Of course I haven't looked at this stuff in a
while, so I may be off track.)
> a. Surprisingly for me, we were not at all marking "blank final" local
> variables that represent the entities for which the whole "definite
> unassignment" brouhaha in JLS 2 Chapter 16 is about!
>
> I define DECL_LOCAL_FINAL_IUD in java-tree.h that is similar to - in fact
> the same as - DECL_FIELD_FINAL_IUD, that I use to mark final
> local variables that are initialised in their declaration. This is
> being done in declare_local_variables() in parse.y in my patch.
Why? My quick and dirty tests seem to show that:
final int x = 10;
and
final int x;
x = 10;
are handled the same way and both give the errors I'd expect.
Which testcase is wrong before your patch and correct after?
I'll get back to you on the check_bool_init patch.
--
--Per Bothner
per@bothner.com http://per.bothner.com/
More information about the Java-patches
mailing list