| /* 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; |
| } |