Re: error: 'jvariant::jvariant(jbyte)' cannot be overloaded
Florian Weimer <[email protected]>
| Newsgroups | gmane.comp.gcc.java.devel |
|---|---|
| Message-ID | <[email protected]> |
* Andrew Haley: > On 07/19/2009 07:02 AM, Florian Weimer wrote: >> * Mathieu Malaterre: >> >>> I am trying to compile VTK using gcj and I am getting those compiler >>> error, could someone please let me know if the code is legal (should >>> compile) or not: >> >> This is legal per Sun's JNI specficiation: jboolean and jbyte are >> distinct types because there signedness differs: >> >> <http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/types.html#wp198> >> >> It's a bug in GCC. > > I didn't see the original message to which this is replying. It's about C++ code which contains a function overloaded on jbyte and jboolean. This fails with GCJ because they are typedef'ed to the same type. > If you can make a test case I'll see if the bug can be fixed. Compare the table I referenced with these pieces from jni_md.h: | typedef int jbyte __attribute__((__mode__(__QI__))); | typedef int jshort __attribute__((__mode__(__HI__))); | typedef int jint __attribute__((__mode__(__SI__))); | typedef int jlong __attribute__((__mode__(__DI__))); | typedef int jboolean __attribute__((__mode__(__QI__))); | typedef unsigned short jchar __attribute__((__mode__(__HI__))); | typedef float jfloat; | typedef double jdouble; | typedef jint jsize; | typedef int8_t jbyte; | typedef int16_t jshort; | typedef int32_t jint; | typedef int64_t jlong; | typedef float jfloat; | typedef double jdouble; | typedef jint jsize; | typedef int8_t jboolean; | typedef uint16_t jchar; jboolean is signed, but Sun's spec says it should be unsigned.