1// RUN: cp %s %t 2// RUN: not %clang_cc1 -pedantic -Wunused-label -fixit -x c %t 3// RUN: grep -v CHECK %t > %t2 4// RUN: %clang_cc1 -pedantic -Wunused-label -Werror -x c %t 5// RUN: FileCheck -input-file=%t2 %t 6 7/* This is a test of the various code modification hints that are 8 provided as part of warning or extension diagnostics. All of the 9 warnings will be fixed by -fixit, and the resulting file should 10 compile cleanly with -Werror -pedantic. */ 11 12// FIXME: FIX-IT should add #include <string.h>? 13int strcmp(const char *s1, const char *s2); 14 15void f0(void) { }; 16 17struct s { 18 int x, y;; 19}; 20 21// CHECK: _Complex double cd; 22_Complex cd; 23 24// CHECK: struct s s0 = { .y = 5 }; 25struct s s0 = { y: 5 }; 26 27// CHECK: int array0[5] = { [3] = 3 }; 28int array0[5] = { [3] 3 }; 29 30void f1(x, y) 31{ 32} 33 34int i0 = { 17 }; 35 36#define ONE 1 37#define TWO 2 38 39int test_cond(int y, int fooBar) { 40// CHECK: int x = y ? 1 : 4+fooBar; 41 int x = y ? 1 4+foobar; 42// CHECK: x = y ? ONE : TWO; 43 x = y ? ONE TWO; 44 return x; 45} 46 47// CHECK: typedef int int_t; 48typedef typedef int int_t; 49 50// <rdar://problem/7159693> 51enum Color { 52 Red // expected-error{{missing ',' between enumerators}} 53 Green = 17 // expected-error{{missing ',' between enumerators}} 54 Blue, 55}; 56 57// rdar://9295072 58struct test_struct { 59 // CHECK: struct test_struct *struct_ptr; 60 test_struct *struct_ptr; // expected-error {{must use 'struct' tag to refer to type 'test_struct'}} 61}; 62 63void removeUnusedLabels(char c) { 64 L0 /*removed comment*/: c++; 65 removeUnusedLabels(c); 66 L1: 67 c++; 68 /*preserved comment*/ L2 : c++; 69 LL 70 : c++; 71 c = c + 3; L4: return; 72} 73