On Thursday 29 November 2007 5:05:53 pm Tim Eck wrote:
> One thing the merge process does not touch is constructors however, which
> has lead to at least one bug. Consider this code:
>
> class HashMapTC {
> private boolean flag = true;
> }
>
> Statements like that field set are duplicated into all constructors by the
> regular java compiler. Since our merge process does not use constructors
> from the "TC" class, the merged class just ends up getting the field, but
> not the assignment to true (instant bug!)
>
> I'm trying to figure out what the class merge should be doing here. I
> guess it stands to reason that we need to behave just like the java
> compiler does -- copy that statement into all constructors. That is
> probably easier said than done since the compiler conceals the structure
> of the source when it duplicates things.
I don't have an immediate answer, but I think the same problem will also apply
to initialization blocks, as these are also copied into each constructor:
class HashMapTC {
private boolean flag;
{
flag = true;
// other initialization
}
}
Any solution would need to consider initialization blocks in addition to field
initializations.
--
Jason Voegele
"I once witnessed a long-winded, month-long flamewar over the use of
mice vs. trackballs...It was very silly."
(By Matt Welsh)
_______________________________________________
tc-dev mailing list
[email protected]
http://lists.terracotta.org/mailman/listinfo/tc-dev