1/* Only needs to compile.  */
2/* { dg-additional-options "-std=c++11" } */
3
4#ifdef __cplusplus
5enum X {
6  x = 5,
7  y
8};
9#endif
10
11#if __has_attribute(__objc_root_class__)
12__attribute__((__objc_root_class__))
13#endif
14@interface A
15- (id) :(id)arg0 :(id)arg1;
16- (id) m:(id)arg0 :(id)arg1 :(id)arg2 :(id)arg3;
17#ifdef __cplusplus
18- (id) n:(X)arg0 :(X)arg1 :(id)arg2 :(id)arg3;
19#endif
20@end
21
22@implementation A
23- (id) :(id)arg0 :(id)arg1
24{
25  return arg1;
26}
27- (id) m:(id)arg0 :(id)arg1 :(id)arg2 :(id)arg3
28{
29  return arg2;
30}
31#ifdef __cplusplus
32- (id) n:(X)arg0 :(X)arg1 :(id)arg2 :(id)arg3
33{
34  return arg2;
35}
36#endif
37@end
38
39id f1 (A *x)
40{
41  return [x:x:x];
42}
43
44id f2 (A *x)
45{
46  return [x m:x:x:x:x];
47}
48
49#ifdef __cplusplus
50id f3 (A *x)
51{
52  return [x n:X::x:X::y:x:x];
53}
54#endif
55