1a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// RUN: %clang_cc1 -fsyntax-only -verify %s
296e7813f08c6adf1d8657b0da86741b54e850fd7Rafael Espindola// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
396e7813f08c6adf1d8657b0da86741b54e850fd7Rafael Espindola// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -x c++ %s 2>&1 | FileCheck %s
4a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko
5a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-note@+1 5{{previous definition is here}}
6a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenkoint main() {
7a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko  return 0;
8a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko}
9a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko
10a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-error@+3 {{conflicting types for 'main}}
11a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-warning@+2 {{return type of 'main' is not 'int'}}
12a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-note@+1 {{change return type to 'int'}}
13a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenkovoid main() {
14a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:5}:"int"
15a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko}
16a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko
17a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-error@+3 {{conflicting types for 'main}}
18a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-warning@+2 {{return type of 'main' is not 'int'}}
19a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-note@+1 {{change return type to 'int'}}
20a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenkodouble main() {
21a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:7}:"int"
22a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko  return 0.0;
23a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko}
24a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko
25ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// TODO: Store qualifier source locations for return types so
26ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// we can replace the full type with this fix-it.
27a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko//
28a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-error@+3 {{conflicting types for 'main}}
29a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-warning@+2 {{return type of 'main' is not 'int'}}
30a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-note@+1 {{change return type to 'int'}}
31a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenkoconst float main() {
32a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:7-[[@LINE-1]]:12}:"int"
33a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko  return 0.0f;
34a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko}
35a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko
36a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenkotypedef void *(*fptr)(int a);
37a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko
38ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// expected-error@+3 {{conflicting types for 'main}}
39ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// expected-warning@+2 {{return type of 'main' is not 'int'}}
40ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// expected-note@+1 {{change return type to 'int'}}
41a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenkofptr main() {
42ef8225444452a1486bd721f3285301fe84643b00Stephen Hines// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:5}:"int"
43a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko  return (fptr) 0;
44a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko}
45a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko
46a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-error@+2 {{conflicting types for 'main}}
47a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko// expected-warning@+1 {{return type of 'main' is not 'int'}}
48a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenkovoid *(*main())(int a) {
49a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko  return (fptr) 0;
50a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko}
51a6f97071338e525d18e607ca286e338639dd2a5eDmitri Gribenko
52