aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/obj-c++.dg/pr49070.mm
blob: d67c72137ccf24201274bbc8a76644ec9e08286e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* 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