| /* Only needs to compile. */ |
| /* { dg-additional-options "-std=c++11" } */ |
| |
| #ifdef __cplusplus |
| enum X { |
| x = 5, |
| y |
| }; |
| #endif |
| |
| __attribute__((__objc_root_class__)) |
| @interface A |
| - (id) :(id)arg0 :(id)arg1; |
| - (id) m:(id)arg0 :(id)arg1 :(id)arg2 :(id)arg3; |
| #ifdef __cplusplus |
| - (id) n:(X)arg0 :(X)arg1 :(id)arg2 :(id)arg3; |
| #endif |
| @end |
| |
| @implementation A |
| - (id) :(id)arg0 :(id)arg1 |
| { |
| return arg1; |
| } |
| - (id) m:(id)arg0 :(id)arg1 :(id)arg2 :(id)arg3 |
| { |
| return arg2; |
| } |
| #ifdef __cplusplus |
| - (id) n:(X)arg0 :(X)arg1 :(id)arg2 :(id)arg3 |
| { |
| return arg2; |
| } |
| #endif |
| @end |
| |
| id f1 (A *x) |
| { |
| return [x:x:x]; |
| } |
| |
| id f2 (A *x) |
| { |
| return [x m:x:x:x:x]; |
| } |
| |
| #ifdef __cplusplus |
| id f3 (A *x) |
| { |
| return [x n:X::x:X::y:x:x]; |
| } |
| #endif |