mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-20 03:55:48 -04:00

arithmetic into a couple of common routines. Use these to make the messages more consistent in the various contexts, especially in terms of consistently diagnosing binary operators with invalid types on both the left- and right-hand side. Also, improve the grammar and wording of the messages some, handling both two pointers and two (different) types. The wording of function pointer arithmetic diagnostics still strikes me as poorly phrased, and I worry this makes them slightly more awkward if more consistent. I'm hoping to fix that with a follow-on patch and test case that will also make them more helpful when a typedef or template type parameter makes the type completely opaque. Suggestions on better wording are very welcome, thanks to Richard Smith for some initial help on that front. llvm-svn: 133906
32 lines
1.4 KiB
C
32 lines
1.4 KiB
C
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
struct foo; // expected-note 5 {{forward declaration of 'struct foo'}}
|
|
|
|
void b; // expected-error {{variable has incomplete type 'void'}}
|
|
struct foo f; // expected-error{{tentative definition has type 'struct foo' that is never completed}}
|
|
|
|
static void c; // expected-error {{variable has incomplete type 'void'}}
|
|
static struct foo g; // expected-warning {{tentative definition of variable with internal linkage has incomplete non-array type 'struct foo'}} \
|
|
expected-error{{tentative definition has type 'struct foo' that is never completed}}
|
|
|
|
extern void d;
|
|
extern struct foo e;
|
|
|
|
int ary[]; // expected-warning {{tentative array definition assumed to have one element}}
|
|
struct foo bary[]; // expected-error {{array has incomplete element type 'struct foo'}}
|
|
|
|
void func() {
|
|
int ary[]; // expected-error{{definition of variable with array type needs an explicit size or an initializer}}
|
|
void b; // expected-error {{variable has incomplete type 'void'}}
|
|
struct foo f; // expected-error {{variable has incomplete type 'struct foo'}}
|
|
}
|
|
|
|
int h[]; // expected-warning {{tentative array definition assumed to have one element}}
|
|
int (*i)[] = &h+1; // expected-error {{arithmetic on a pointer to an incomplete type 'int []'}}
|
|
|
|
struct bar j = {1}; // expected-error {{variable has incomplete type 'struct bar'}} \
|
|
expected-note {{forward declaration of 'struct bar'}}
|
|
struct bar k;
|
|
struct bar { int a; };
|
|
|