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