blob: 2af5e08faa41f3cc0e3a4597b45c6b3e7222ffd7 [file] [log] [blame]
Benjamin Krameraf082c32012-07-12 08:20:49 +00001// RUN: %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck -strict-whitespace %s
Jordan Rosebbe01752012-07-20 18:50:51 +00002// RUN: %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck -check-prefix=CHECK-MACHINE %s
Benjamin Krameraf082c32012-07-12 08:20:49 +00003
4struct Foo {
5 int bar;
6};
7
Jordan Rosebbe01752012-07-20 18:50:51 +00008// PR13312
Benjamin Krameraf082c32012-07-12 08:20:49 +00009void test1() {
10 struct Foo foo;
11 (&foo)☃>bar = 42;
12// CHECK: error: expected ';' after expression
13// Make sure we emit the fixit right in front of the snowman.
Benjamin Kramerc7bd9fb2012-07-12 08:34:31 +000014// CHECK: {{^ \^}}
15// CHECK: {{^ ;}}
Jordan Rosebbe01752012-07-20 18:50:51 +000016
17// CHECK-MACHINE: fix-it:"{{.*}}fixit-unicode.c":{11:9-11:9}:";"
18}
19
20
21int printf(const char *, ...);
22void test2() {
23 printf("∆: %d", 1L);
24// CHECK: warning: format specifies type 'int' but the argument has type 'long'
25// Don't crash emitting a fixit after the delta.
26// CHECK: printf("
27// CHECK: : %d", 1L);
28// Unfortunately, we can't actually check the location of the printed fixit,
29// because different systems will render the delta differently (either as a
30// character, or as <U+2206>.) The fixit should line up with the %d regardless.
31
32// CHECK-MACHINE: fix-it:"{{.*}}fixit-unicode.c":{23:16-23:18}:"%ld"
Benjamin Krameraf082c32012-07-12 08:20:49 +000033}