aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr91134.c
blob: 8844f4284715ac1cc4d9c0e98471000b2c4c7afa (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
/* PR c/91134 */
/* { dg-options "-fdiagnostics-show-caret" } */

struct X { int member; } x;
struct Y { struct X **x; } y;

int
foo (void)
{
  struct X *pointer = &x;
  struct Y *yp = &y;
  struct X **pointerpointer = &pointer;
  int i = *pointerpointer->member;	/* { dg-error "'pointerpointer' is a pointer to pointer; did you mean to dereference it before applying '->' to it\\\?" } */
/* { dg-begin-multiline-output "" }
   int i = *pointerpointer->member;
                          ^~
            (*            )
   { dg-end-multiline-output "" } */
  int j = pointer.member;		/* { dg-error "'pointer' is a pointer; did you mean to use '->'\\\?" } */
/* { dg-begin-multiline-output "" }
   int j = pointer.member;
                  ^
                  ->
   { dg-end-multiline-output "" } */
  int k = yp->x->member;		/* { dg-error "'yp->x' is a pointer to pointer; did you mean to dereference it before applying '->' to it\\\?" } */
/* { dg-begin-multiline-output "" }
   int k = yp->x->member;
                ^~
           (*   )
   { dg-end-multiline-output "" } */
  return i + j + k;
}