Home | History | Annotate | Download | only in Sema
      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 
      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 
     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}}
     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)));
     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 
     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);
     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}}
     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 
     61 int fn_with_ids() { ID = ID == ID >= ID ; } // expected-error 4 {{use of undeclared identifier}}
     62 
     63 int fn_with_rs(int r) { r = TYPO + r * TYPO; } // expected-error 2 {{use of undeclared identifier}}
     64 
     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