Dalibor Topic wrote:

Hi Ito, salut Guilhem,

I've tried to update kaffe-extras to 1.1.3 and ant 1.6.0, and after spending some time revisiting the ant bootstrap script, I failed due to what seems to be a compiler bug in kjc.

I fear the problem is deeper than I thought. It lies in the automatic type conversion during an assignment for static initializers only. The reason is that during the semantic analysis of the expression 'b' (in 'a=b') throwables are initialized but the representative of the expression 'b' is remplaced by a pseudo expression. For static initializers there are two passes. As 'b' has been replaced the throwables are not set anymore and the 'try { } catch' block doesn't enclose anymore a valid block. I see for the moment only two solutions: we should detect the throwables added by the first analysis and add them again during the second analysis in the replacing expression or use only one pass. I'll try to dig into these two options for the moment.


If someone has a better idea feel free to experiment. ;-)

Cheers,
Guilhem.

P.S.: A way to disable the problem is to separate the type casting from the assignment, i.e. (with B inheriting from A):

{
 B b;

 try
 {
   A a = new A();
   b = a;
 }
 catch(...)
}


_______________________________________________ kaffe mailing list [EMAIL PROTECTED] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to