1 /* { dg-do compile } */
2
3 struct foo
4 {
5 int foo;
6 int bar;
7 int baz;
8 };
9
10 int test (struct foo *ptr)
11 {
12 return ptr->m_bar; /* { dg-error "'struct foo' has no member named 'm_bar'; did you mean 'bar'?" } */
13 }
14
15 int test2 (void)
16 {
17 struct foo instance = {0, 0, 0};
18 return instance.m_bar; /* { dg-error "'struct foo' has no member named 'm_bar'; did you mean 'bar'?" } */
19 }
20
21 struct s {
22 struct j { int aa; } kk;
23 int ab;
24 };
25
26 void test3 (struct s x)
27 {
28 x.ac; /* { dg-error "'struct s' has no member named 'ac'; did you mean 'ab'?" } */
29 }
30
31 int test4 (struct foo *ptr)
32 {
33 return sizeof (ptr->foa); /* { dg-error "'struct foo' has no member named 'foa'; did you mean 'foo'?" } */
34 }
35
36 /* Verify that we don't offer nonsensical suggestions. */
37
38 int test5 (struct foo *ptr)
39 {
40 return ptr->this_is_unlike_any_of_the_fields; /* { dg-bogus "did you mean" } */
41 /* { dg-error "has no member named" "" { target *-*-* } .-1 } */
42 }
43
44 union u
45 {
46 int color;
47 int shape;
48 };
49
50 int test6 (union u *ptr)
51 {
52 return ptr->colour; /* { dg-error "'union u' has no member named 'colour'; did you mean 'color'?" } */
53 }
54
55 struct has_anon
56 {
57 struct { int color; } s;
58 };
59
60 int test7 (struct has_anon *ptr)
61 {
62 return ptr->s.colour; /* { dg-error "'struct <anonymous>' has no member named 'colour'; did you mean 'color'?" } */
63 }