1 // RUN: %clang_cc1 -fsyntax-only -verify %s
2 //
3 // This file contains typo correction tests which hit different code paths in C
4 // than in C++ and may exhibit different behavior as a result.
5
6 __typeof__(struct F*) var[invalid]; // expected-error-re {{use of undeclared identifier 'invalid'{{$}}}}
7
PR21656()8 void PR21656() {
9 float x;
10 x = (float)arst; // expected-error-re {{use of undeclared identifier 'arst'{{$}}}}
11 }
12
13 a = b ? : 0; // expected-warning {{type specifier missing, defaults to 'int'}} \
14 // expected-error {{use of undeclared identifier 'b'}}
15
16 int foobar; // expected-note {{'foobar' declared here}}
17 a = goobar ?: 4; // expected-warning {{type specifier missing, defaults to 'int'}} \
18 // expected-error {{use of undeclared identifier 'goobar'; did you mean 'foobar'?}} \
19 // expected-error {{initializer element is not a compile-time constant}}
20
21 struct ContainerStuct {
22 enum { SOME_ENUM }; // expected-note {{'SOME_ENUM' declared here}}
23 };
24
func(int arg)25 void func(int arg) {
26 switch (arg) {
27 case SOME_ENUM_: // expected-error {{use of undeclared identifier 'SOME_ENUM_'; did you mean 'SOME_ENUM'}}
28 ;
29 }
30 }
31
32 void banana(void); // expected-note {{'banana' declared here}}
c11Generic(int arg)33 int c11Generic(int arg) {
34 _Generic(hello, int : banana)(); // expected-error-re {{use of undeclared identifier 'hello'{{$}}}}
35 _Generic(arg, int : bandana)(); // expected-error {{use of undeclared identifier 'bandana'; did you mean 'banana'?}}
36 }
37
38 typedef long long __m128i __attribute__((__vector_size__(16)));
PR23101(__m128i __x)39 int PR23101(__m128i __x) {
40 return foo((__v2di)__x); // expected-warning {{implicit declaration of function 'foo'}} \
41 // expected-error {{use of undeclared identifier '__v2di'}}
42 }
43
f(long * a,long b)44 void f(long *a, long b) {
45 __atomic_or_fetch(a, b, c); // expected-error {{use of undeclared identifier 'c'}}
46 }
47
48 extern double cabs(_Complex double z);
fn1()49 void fn1() {
50 cabs(errij); // expected-error {{use of undeclared identifier 'errij'}}
51 }
52
53 extern long afunction(int); // expected-note {{'afunction' declared here}}
fn2()54 void fn2() {
55 f(THIS_IS_AN_ERROR, // expected-error {{use of undeclared identifier 'THIS_IS_AN_ERROR'}}
56 afunction(afunction_)); // expected-error {{use of undeclared identifier 'afunction_'; did you mean 'afunction'?}}
57 }
58
59 int d = X ? d : L; // expected-error 2 {{use of undeclared identifier}}
60
fn_with_ids()61 int fn_with_ids() { ID = ID == ID >= ID ; } // expected-error 4 {{use of undeclared identifier}}
62
fn_with_rs(int r)63 int fn_with_rs(int r) { r = TYPO + r * TYPO; } // expected-error 2 {{use of undeclared identifier}}
64
fn_with_unknown(int a,int b)65 void fn_with_unknown(int a, int b) {
66 fn_with_unknown(unknown, unknown | unknown); // expected-error 3 {{use of undeclared identifier}}
67 }
68