/* Test handling of lvalues of incomplete types. Bugs 36941, 88647 (invalid), 88827. */ /* { dg-do compile } */ /* { dg-options "-std=c11 -pedantic-errors" } */ struct S; extern struct S var; extern struct S *vp; extern int i; void f1 (void) { var; /* { dg-error "has an incomplete type" } */ var, (void) 0; /* { dg-error "has an incomplete type" } */ (i ? var /* { dg-error "has an incomplete type" } */ : var); /* { dg-error "has an incomplete type" } */ } void f2 (void) { (void) var; /* { dg-error "has an incomplete type" } */ (void) (var, (void) 0); /* { dg-error "has an incomplete type" } */ (void) (i ? var /* { dg-error "has an incomplete type" } */ : var); /* { dg-error "has an incomplete type" } */ } void f3 (void) { (const void) var; /* { dg-error "has an incomplete type" } */ (const void) (var, (void) 0); /* { dg-error "has an incomplete type" } */ (const void) (i ? var /* { dg-error "has an incomplete type" } */ : var); /* { dg-error "has an incomplete type" } */ } void f4 (void) { *vp; /* { dg-error "invalid use of undefined type" } */ *vp, (void) 0; /* { dg-error "invalid use of undefined type" } */ (i ? *vp /* { dg-error "invalid use of undefined type" } */ : *vp); /* { dg-error "invalid use of undefined type" } */ } void f5 (void) { (void) *vp; /* { dg-error "invalid use of undefined type" } */ (void) (*vp, (void) 0); /* { dg-error "invalid use of undefined type" } */ (void) (i ? *vp /* { dg-error "invalid use of undefined type" } */ : *vp); /* { dg-error "invalid use of undefined type" } */ } void f6 (void) { (const void) *vp; /* { dg-error "invalid use of undefined type" } */ (const void) (*vp, (void) 0); /* { dg-error "invalid use of undefined type" } */ (const void) (i ? *vp /* { dg-error "invalid use of undefined type" } */ : *vp); /* { dg-error "invalid use of undefined type" } */ } void f7 (void) { /* This is invalid because of the constraints on []. */ &vp[0]; /* { dg-error "invalid use of undefined type" } */ }