This is the mail archive of the kawa@sourceware.cygnus.com mailing list for the Kawa project. See the Kawa home page for more information.
The appended patch should help. You also have to change your example to: #|kawa:1|# (object (<java.lang.Object> <java.awt.event.ItemListener>) ((itemStateChanged (arg <java.awt.event.ItemEvent>)) <void> (display "listener called"))) Note the arg declaration. Tue Mar 16 20:49:08 1999 Per Bothner <bothner@Magnus.Cygnus.COM> * PrimType.java (emitCoerceFromObject): Handle coercing to void. * ClassType.java (getModifiers): If access_flags is 0, check reflectClass.getModifiers(). (Bit of a hack.) Index: ClassType.java =================================================================== RCS file: /cvs/kawa/kawa/gnu/bytecode/ClassType.java,v retrieving revision 1.18 diff -u -p -r1.18 ClassType.java --- ClassType.java 1998/11/07 11:33:19 1.18 +++ ClassType.java 1999/03/17 04:42:21 @@ -71,7 +71,13 @@ public class ClassType extends ObjectTyp } /** Return the modifiers (access flags) for this class. */ - public final int getModifiers() { return access_flags; } + public final int getModifiers() + { + if (access_flags == 0 && getReflectClass() != null) + return reflectClass.getModifiers(); + else + return access_flags; + } /** Set the modifiers (access flags) for this class. */ public final void setModifiers(int flags) { access_flags = flags; } Index: PrimType.java =================================================================== RCS file: /cvs/kawa/kawa/gnu/bytecode/PrimType.java,v retrieving revision 1.3 diff -u -p -r1.3 PrimType.java --- PrimType.java 1998/09/12 23:27:32 1.3 +++ PrimType.java 1999/03/17 04:42:22 @@ -52,19 +52,23 @@ public class PrimType extends Type { { code.emitCheckcast(boolean_ctype); code.emitInvokeVirtual(booleanValue_method); - return; } - code.emitCheckcast(number_type); - if (sig1 == 'I' || sig1 == 'S' || sig1 == 'B') - code.emitInvokeVirtual(intValue_method); - else if (sig1 == 'J') - code.emitInvokeVirtual(longValue_method); - else if (sig1 == 'D') - code.emitInvokeVirtual(doubleValue_method); - else if (sig1 == 'F') - code.emitInvokeVirtual(floatValue_method); - // Have left out Character -> char, since not used by Kawa. + else if (sig1 == 'V') + code.emitPop(1); else - super.emitCoerceFromObject(code); + { + code.emitCheckcast(number_type); + if (sig1 == 'I' || sig1 == 'S' || sig1 == 'B') + code.emitInvokeVirtual(intValue_method); + else if (sig1 == 'J') + code.emitInvokeVirtual(longValue_method); + else if (sig1 == 'D') + code.emitInvokeVirtual(doubleValue_method); + else if (sig1 == 'F') + code.emitInvokeVirtual(floatValue_method); + // Have left out Character -> char, since not used by Kawa. + else + super.emitCoerceFromObject(code); + } } }