1 // RUN: c-index-test -test-load-source all -fspell-checking %s 2> %t
2 // RUN: FileCheck %s < %t
3 struct X {
4   int wibble;
5 };
6 
7 #define MACRO(X) X
8 
9 void f(struct X *x) {
10   // CHECK: error: no member named 'wobble' in 'struct X'; did you mean 'wibble'?
11   // CHECK: FIX-IT: Replace [13:12 - 13:18] with "wibble"
12   // CHECK: note: 'wibble' declared here
13   MACRO(x->wobble = 17);
14   // CHECK: error: no member named 'wabble' in 'struct X'; did you mean 'wibble'?
15   // CHECK: FIX-IT: Replace [17:6 - 17:12] with "wibble"
16   // CHECK: note: 'wibble' declared here
17   x->wabble = 17;
18 }
19 
20 int printf(const char *restrict, ...);
21 
22 void f2() {
23   unsigned long index;
24   // CHECK: warning: format specifies type 'int' but the argument has type 'unsigned long'
25   // CHECK: FIX-IT: Replace [26:17 - 26:19] with "%lu"
26   MACRO(printf("%d", index));
27 }
28