| // { dg-do compile } |
| // { dg-options "-fdollars-in-identifiers" } |
| // Origin: Giovanni Bajo <giovannibajo at libero dot it> |
| // Make sure that Java special functions can be called correctly. |
| // (continue from java1.C) |
| |
| extern "Java" |
| { |
| typedef __java_int jint; |
| namespace java |
| { |
| namespace lang |
| { |
| class Class; |
| class Object; |
| class Throwable {}; |
| class Foo; |
| } |
| } |
| } |
| |
| typedef struct java::lang::Object* jobject; |
| typedef struct java::lang::Throwable* jthrowable; |
| typedef class java::lang::Class* jclass; |
| using java::lang::Foo; |
| |
| class Foo : public java::lang::Throwable |
| { |
| public: |
| static ::java::lang::Class class$; |
| }; |
| |
| /* |
| * Step 4: Manual declaration of _Jv_Throw |
| * This is the last case we need to test. In the other file we're testing |
| * the compiler is able to generate an artifical declaration for this |
| * function, so we need to test here if it works with a normal declaration. |
| */ |
| |
| extern "C" jobject _Jv_AllocObject (jclass) __attribute__((__malloc__)); |
| extern "C" void _Jv_Throw (jthrowable) __attribute__ ((__noreturn__)); |
| |
| void Bar4(void) |
| { |
| Foo* f = new java::lang::Foo; |
| throw (f); |
| } |